hs14266 发表于 2021-12-4 20:14

php验证码实例求解

代码如下,怎么样才算成功呢,后续修改<?php
require "Captcha.class.php";
$captcha=new Captcha();
$captcha->generate(70,22,5);
?><?php
class Captcha{
       public function generate($img_w=100,$img_h=25,$char_len=4,$font=5){
               $char =array_merge(range('A','Z'),range('a','z'),range(1,9));
               $rand_keys=array_rand($char,$char_len);
               if($char_len==1){
                       $rand_keys=array($rand_keys);
               }
               shuffle($rand_keys);
               $code='';
               foreach($rand_keys as $key){
                       $code .=$char[$key];
               }
               @session_start();
               $_SESSION['captcha_code']=$code;
               $img=imagecreatetruecolor($img_w,$img_h);
               $bg_color=imagecolorallocate($img,0xc0,0xc0,0xc0);
               imagefill($img,0,0,$bg_color);
               for($i=0;$i<=300;++$i){
                       $color=imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
                       imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color);
               }
               $rect_color=imagecolorallocate($img,0xff,0xff,0xff);
               imagerectangle($img,0,0,$img_w-1,$img_h-1,$rect_color);
               if(mt_rand(1,2)==1){
                       $str_color=imagecolorallocate($img,0,0,0);
               }else{
                          $str_color=imagecolorallocate($img,0xff,0xff,0xff);
               }
               $font_w=imagefontwidth($font);
               $font_h=imagefontheight($font);
               $str_w=$font_w*$char_len;
               imageString($img,$font,($img_w-$str_w)/2,($img_h-$font_h)/2,$code,$str_color);
               header('Content-Type:image/png');
               imagepng($img);
               imagedestroy($img);
       }
}

?><?php
    header("Content-Type:text/html;charset=utf-8");
    session_start();
    $code=trim($_POST["captcha"]);
    if(strtolower($code)==strtolower($_SESSION['captcha_code'])){
                echo "验证码正确";
                $username=$_POST["username"];
                $password=$_POST["password"];
                if(($username=='itcast') && ($password=='123456')){
                        echo '你好'.$username.'登录成功';
                }else{
                        echo '用户名或密码错误!';
                }
        }else{
                echo "验证码输入错误";
        }
?>

smldhz 发表于 2021-12-4 21:04

文件没问题,可以正常生成显示验证码 所以你具体的问题是什么?

smldhz 发表于 2021-12-4 21:06

如果你的问题是验证码不显示 程序报错 那就去百度一下 “php开启GD” 上个帖子已经回过你了。

fenga6 发表于 2021-12-4 22:14

我觉得计算题验证码是这样的   设置一个9-8对应正确结果 1,一组对应,一般不用随机出题,判断是否正确

ken931016 发表于 2021-12-6 08:56

没搞懂你现在的问题,是没正常显示还是怎么了
页: [1]
查看完整版本: php验证码实例求解