yzm.php
<?php
//生成验证码图片
session_start();
Header("Content-type: image/gif");
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,45,18,$gray);
while(($chk_num=rand()%10000)<1000);
$_SESSION["chk_num"] = $chk_num;
//将四位整数验证码绘入图片
imagestring($im, 5, 5, 1,$chk_num , $white);//5, 5, 1分别表示为字体大小,左边距,上边距
for($i=0;$i<100;$i++) //加入干扰象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $gray);
}
ImagePNG($im);
ImageDestroy($im);
?>
yanzhengma.php
<html>
<head>
<title>验证码判断</title>
</head>
<body>
<form method="post" action="yanzhengma.php">
<input type="text" name="yzm" >
<img src="yzm.php" ><br>
<input type="submit" name="submit" value="验证">
<?php
error_reporting(0);session_start();if (isset($_POST['submit']))
{
    echo "<br>".$_SESSION[yzm];
    echo "<br>".$_POST['yzm'];    if ($_POST['yzm'] == $_SESSION[yzm])
    {
       echo "<br>"."OK!";
    }
    else
    {
        echo "<br>"."NO!";
    }
}
?></form>
</body>
</html>这样写为什么每次验证都输出NO,就是输入正确也是NO,麻烦高手帮帮忙看一下

解决方案 »

  1.   

    if ($_POST['yzm'] == $_SESSION[yzm])
    改成:
    if ($_POST['yzm'] == $_SESSION["chk_num"])
      

  2.   

    $_SESSION["chk_num"])是什么意思,改了还是不行唉
      

  3.   

    yanzhengma.php
    页顶部要加上:session_start();
      

  4.   

    在 yzm.php 页有这一句代码:$_SESSION["chk_num"] = $chk_num;
     作用是把验证码存储在$_SESSION["chk_num"]中所以yanzhengma.php 进行验证的时候 必须让 $_POST['yzm']与$_SESSION["chk_num"]比较。要注意的是,每个要使用session的页 开头都要session_start(); 否则读不了session值