页面1:yzm.php
<?php
session_start();
srand((double)microtime()*1000000);
$im=imagecreate(45,18);
$black=imagecolorallocate($im,0,0,0);
$white=imagecolorallocate($im,255,255,255);
$gray=imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$gray);
for($i=0;$i<4;$i++){
$str=mt_rand(1,3); //产生1到3的随机数,指定验证码字体
$size=mt_rand(3,6); //用来产生3到6的随机数,指定每位验证码数字的高度
$authnum=mt_rand(0,9); //产生0到9的随机数,用来显示验证码数字
$num.=$authnum;
imagestring($im,$size,(5+$i*10),$str,$authnum,imagecolorallocate($im,rand(0,130),rand(0,130),rand(0,130)));
}
for($i=0;$i<200;$i++){
$randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im,rand()%70,rand()%30,$randcolor);
}
imagepng($im);
imagedestroy($im);
$_SESSION['autonum']=$num;
?>
页面2:test.php
<?php
session_start();
?>
<img src="yzm.php">
<?
echo "当前值为".$_SESSION['autonum'];
?>
问题:执行test.php,输出图片,之后输出$_session['autonum']的值,按理应该相等才是的,却总是不相等。比如第一次输出,显示图片验证码,之后为空值。第二次执行,显示图片码,之后为上一次显示的图片验证码。也就是说,总是不能同步。不解……


最新回复
再者,如果你用了xajax去验证的话,更要留心验证码的同步问题了
当你执行test.php的时候,已经执行了echo "当前值为".$_SESSION['autonum'];
此时,验证码还没有生成,SESSION肯定是为空值。随后才是执行生成验证码,当然是不对的~
我的也是一样的