解决方案 »

  1.   

    一般验证码都是保存到session里面然后采用输入框里面的数据与session里面对应验证码的字段进行匹配后进行判断的。不知道lz是想要什么样的。
      

  2.   

    把你的验证码方法,封装为类方法,需要的时候直接实例化类就可以用,记得session_start();
      

  3.   


    <?php
    session_start(); // 開啓session
    ob_clean();
    for($i=0;$i<4;$i++){
    $num.=dechex(rand(0,15));
    }
    $num=substr($num,-4,4);
    $_SESSION['captcha'] = $num; // 把驗證碼寫入session
    $nowimage=imagecreate(100,30);
    imagecolorallocate($nowimage,240,240,240);
    for($i=0;$i<strlen($num);$i++){
    $font=mt_rand(3,5);
    $x=mt_rand(1,8)+100*$i/4;
    $y=mt_rand(1,50/4);
    $color=imagecolorallocate($nowimage,rand(0,150),rand(0,150),rand(0,150));
    imagestring($nowimage,$font,$x,$y,$num[$i],$color);
    }
    for($i=0;$i<200;$i++){
    $randcolor=imagecolorallocate($nowimage,rand(200,255),rand(200,255),rand(200,255));
    imagesetpixel($nowimage,rand()%70,rand()%20,$randcolor);
    }
    header("content-type:image/png");
    imagepng($nowimage);
    imagedestroy($nowimage);
    ?>
    加了兩句
    session_start();
    $_SESSION['captcha'] = $num;驗證頁面
    session_start();
    if($captcha == $_SESSION['captcha']){  // $captcha為用戶提交的驗證碼
        // pass
    }else{
        // not match
    }
      

  4.   

    #5
    但是在index.php 页面接受的$_SESSION['captcha']的数据和验证码显示出来的数据不同步(慢了一步)
      

  5.   

    index.php 的接受验证码比verficode.php 页面接收的验证码慢了一步
      

  6.   

    index.php 先于 verficode.php 执行,慢一步是正常的
    所以 zf 采用了保存验证码图片的方案
    前几天才在这里讨论过,你可找一下