• php生成随机验证码图片


    1,CaptchaPicture.php用于生成画布,然后在画布上生成四位随机验证码

    
    session_start();
    header("Content-type:image/png");   //创建图像的格式
    $image_width=76;                           //设置图像的宽度
    $image_height=40;                          //设置图像的高度
    $length=4;                                 //字符串长度为4
    //除去0,2,o,l容易混淆的字符
    $str="23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNOPQRSRUVWXYZ";
    $code='';
    for($i=0;$i<$length;$i++){
        $code.=$str[mt_rand(0,strlen($str))-1];  //从字符串中随机选择
    }
    $_SESSION['verify']=$code;                              //从获取到的随机书验证码写入到Session变量中
    $image=imagecreate($image_width,$image_height);          //创建一个画布
    imagecolorallocate($image,25,255,255);   //设置画布的颜色
    For($i=0;$i<strlen($_SESSION['verify']);$i++){    //循环读取Session变量中的验证码
        $font = mt_rand(3,5);  //设置随机的字体
        $x=mt_rand(1,8)+$image_width*$i/4;        //设置随机字符所在位置的x坐标
        $y=mt_rand(8,$image_height/4);            //设置随机字符所在位置的y坐标
        //设置字符颜色
        $color = imagecolorallocate($image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
        imagestring($image,$font,$x,$y,$_SESSION['verify'][$i],$color);    //水平输出字符
    }
    //绘制干扰元素点
    $pixel=30;
    $black = imagecolorallocate($image,0,0,0);
    for($i=0;$i<$pixel;$i++){
        imagesetpixel($image,mt_rand(0,$image_width-1),mt_rand(0,$image_height-1),$black);
    }
    imagepng($image);  //生成png格式的图像
    imagedestroy($image);  //释放图片资源
    ?>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2,SubmitVerify.php用于做一个简单的测试,验证验证码功能是否正常

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <form action="CheckLogin.php" method="post">
        <div class="verify">
            <input type="text" id="verify" name="verify" class="input" placeholder="验证码">
            <a>
                <img src="CaptchPicture.php" onclick="this.src=this.src+'?'+Math.random()">   //单击验证码生成新的验证码
            </a>
        </div>
    <button type="submit">提交</button>
    
    </form>
    </body>
    </html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3,CheckLogin.php用于验证提交后是否能接受到传递的信息,以及判断输入的验证码和生成的验证码是否一致

    
    session_start();
    $checks = $_POST["verify"];   //获取表单提交的验证码(用户输入的验证码)
    if ($checks=="") {
        echo "";
    }
        if ($checks==$_SESSION["verify"]){            //这个获取的是系统随机生成的验证码
            echo "";
        }else{
            echo "";
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    最后我验证出了一点小问题,第一次提交的结果总是错的,第二次输入正确才行,目前还没有解决,酌情使用。

  • 相关阅读:
    【每日一题】执行 K 次操作后的最大分数
    Python:用tkinter制做一个音乐下载小软件
    【异常】com.alicp.jetcache.support.CacheEncodeException: Java Encode error.
    C和指针 第14章 预处理器 14.9 问题
    手写一个博客平台 ~ 第五天
    k8s之Helm
    火炬之光无限-萌新记录
    概念解析 | 功率放大器与低噪声放大器:一场关于信号放大的对比
    C语言判断闰年(ZZULIOJ1028: I love 闰年!)
    零信任架构分析【扬帆】
  • 原文地址:https://blog.csdn.net/yfq_29/article/details/132897801