日期:2014-05-17  浏览次数:20489 次

session验证码问题,刷新验证码,session的值不变,求高人解答
本帖最后由 yieri_z 于 2013-01-14 11:18:32 编辑
php做验证码程序,原本好使,换服务器后,验证码再刷新,验证码变了,但是session还是第一次初始的值,怀疑是服务器的问题,有高人知道怎么回事吗?


验证码代码checkimage.php页如下:
Header("Content-type: image/gif");

$border = 0; //是否要边框 1要:0不要
$how = 4; //验证码位数
$w = $how*15; //图片宽度
$h = 25; //图片高度
$fontsize = 5; //字体大小
$alpha = "ABCDEFGHIJKLMNPQRSTUVWXYZ"; //验证码内容1:字母
$number = "123456789"; //验证码内容2:数字
$randcode = ""; //验证码字符串初始化
srand((double)microtime()*1000000); //初始化随机数种子

$im = ImageCreate($w, $h); //创建验证图片

$bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色
ImageFill($im, 0, 0, $bgcolor); //填充背景色
if($border)
{
    $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色
    ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框
}

for($i=0; $i<$how; $i++)
{
    $alpha_or_number = mt_rand(0, 1); //字母还是数字
    $str = $alpha_or_number ? $alpha : $number;
    $which = mt_rand(0, strlen($str)-1); //取哪个字符
    $code = substr($str, $which, 1); //取字符
    $j = !$i ? 4 : $j+15; //绘字符位置
    $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
    ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
    $randcode .= $code; //逐位加入验证码字符串
}

for($i=0; $i<$how*20; $i++)//绘背景干扰点
{   
    $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色 
    ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
}

//把验证码字符串写入session
session_start();
$_SESSION['randcode'] = $randcode;

/*绘图结束*/
Imagegif($im);
ImageDestroy($im);
/*绘图结束*/


注册页reg.html调用代码:
<td height="40">验证码 
<input name="reg_checkcode" id="reg_checkcode" type="text" class="input4" size="10" />
<img src="checkimage.php" name="reg_checkimage" align="absmiddle" id="reg_checkimage" />
<a href="javascript:;" onclick="javascript:document.getElementById('reg_checkimage').src='checkimage.php?c='+Math.random();">看不清?换一组</a></td>


php接收后的页面:
header("content-type: text/html; charset=utf-8");
session_start();

echo "验证码session的值:".$_SESSION["randcode"];
echo "<br />";
echo "验证码提交的值:".$reg_checkcode;


刚运行reg.html页时,比如验证码是“A67E”,点击“看不清?换一组”后,验证码改变,但是$_SESSION['randcode']的值还是“A67E”,无论我点击几回“看不清?换一组”,都是验证码图片改了,但是session的值都是初始值不改变,这是什么问题?求高人帮下忙。
session 验证码

------解决方案--------------------
单步调试,没啥好办法。

检查session目录是否可写,硬盘空间是否不够之类的。
------解决方案--------------------
設置一下你的php.ini的error_report和display_error,讓他報出所有的錯誤來.