【发布时间】:2015-05-23 20:47:11
【问题描述】:
我无法在验证码文件中提供$_Session 值。
这是我的验证码文件:
<?php
session_name('U');
session_start();
session_regenerate_id();
ini_set('session.cookie_httponly',true);
$string='';
for($i=0;$i<5;$i++){$string.=chr(rand(97,122));}
$_SESSION['img']=$string;
$fDir='includes/images/captcha_backgrounds/fonts/';
$fs=glob($fDir.'*.{ttf,otf}',GLOB_BRACE);
$RF=$fs[array_rand($fs)];
$imagesDir='includes/images/captcha_backgrounds/';
$images=glob($imagesDir.'*.{jpg}',GLOB_BRACE);
$randomImage=$images[array_rand($images)];
$image=imagecreatefromjpeg($randomImage);
$color=imagecolorallocate($image,rand(000,255),rand(000,255),rand(000,255));
imagettftext($image,40,0,20,70,$color,$RF,$_SESSION['img']);
header("Content-type:image/png");
imagepng($image);
?>
这是我src验证码的方式:
<img src="captcha.php"/>
当我将表单提交到另一个页面时,它会返回错误:
$_SESSION("img") 未定义
我的验证码图像正常,但会话无法正常工作,请帮忙。
另外,我正在使用 AJAX 提交表单。
除了会话之外一切都很好。
【问题讨论】:
-
是
session_start();在使用会话的所有 个文件中吗? -
是的,它在所有文件中@Fred-ii-
-
将错误报告添加到文件顶部,紧跟在您的打开 PHP 标记之后,例如
<?php error_reporting(E_ALL); ini_set('display_errors', 1);,然后是其余代码,看看它是否会产生任何结果。 -
这个
header("Content-type:image/png");,你正在使用jpg。试试header('Content-Type: image/jpeg'); -
谢谢@Fred-ii- 非常感谢您可以将其发布为答案以便我接受它