>  기사  >  백엔드 개발  >  session验证码有关问题,刷新验证码,session的值不变,求高人解答

session验证码有关问题,刷新验证码,session的值不变,求高人解答

WBOY
WBOY원래의
2016-06-13 11:10:541097검색

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{
    $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{   
    $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调用代码:
验证码 

session验证码有关问题,刷新验证码,session的值不变,求高人解答
看不清?换一组


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

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


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

检查session目录是否可写,硬盘空间是否不够之类的。
------解决方案--------------------
設置一下你的php.ini的error_report和display_error,讓他報出所有的錯誤來.
------解决方案--------------------
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.