10月15日
网站LOGO 六月是只猫 - 互联网技术分享指南
生活,一半家长里短,一半山川湖海...
菜单
  • 六月是只猫 - 互联网技术分享指南
    生活,一半家长里短,一半山川湖海...
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    PHP轻松实现网页图片验证码
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    www.lyszm.com

    PHP轻松实现网页图片验证码

    六月是只猫 · 原创 ·
    技术分享互联网 · 实用教程PHP好玩的代码分享
    共 3039 字 · 约 1 分钟 · 2497

    以下验证码代码展示了PHP生成验证码的典型方式,其实用性和规范性得到了充分体现。为了增加验证码的不可预测性,该代码通过随机选择字符数组中的元素来生成验证码,且每次生成都会重新随机选择。此外,代码中还添加了干扰点至图片上,这大大增强了验证码的安全性,使其更难被机器所识别。

    新建一个html文件把下面代码复制进去
    html 代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>验证码验证</title>
    </head>
    <body>
    
    <form id="verifyForm">
        <label for="verifyCode">请输入验证码:</label>
        <input type="text" id="verifyCodeInput" name="verifyCode">
        <img id="verifyImage" src="generate_captcha.php" alt="验证码">
        <button type="button" onclick="verifyCaptcha()">验证</button>
    </form>
    
    <script>
    function verifyCaptcha() {
        var userInput = document.getElementById('verifyCodeInput').value;
    
        // 发送验证码验证请求
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'verify_captcha.php', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var response = xhr.responseText;
                if (response == 'success') {
                    alert('验证码验证成功!');
                } else {
                    alert('验证码验证失败!');
                    document.getElementById('verifyImage').src = 'generate_captcha.php?' + Math.random(); // 刷新验证码图片
                }
            }
        };
        xhr.send('verifyCode=' + userInput);
    }
    </script>
    
    </body>
    </html>
    
    新建verify_captcha.php文件把以下代码复制进去
    php 代码:
    <?php
    session_start();
    
    $verifyCode = $_SESSION['verifycode'];
    $userInput = $_POST['verifyCode'];
    
    if ($verifyCode == $userInput) {
        echo 'success';
    } else {
        echo 'fail';
    }
    ?>
    
    新建generate_captcha.php将下面二维码api代码放进去就行了。
    php 代码:
    <?php
    ##生成验证码文件
    
    session_start();
    
    header("Content-type: image/png");
    ##生成验证码图片
    
    $str = "1,2,3,4,5,6,7,8,9,0,q,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";      
    ##要显示的字符,可自己进行增删
    
    $list = explode(",", $str);
    $cmax = count($list) - 1;
    $verifyCode = '';
    for ( $i=0; $i < 4; $i++ ){
        $randnum = mt_rand(0, $cmax);
        $verifyCode .= $list[$randnum];                  
        ##取出字符,组合成为我们要的验证码字符
    }
    $_SESSION['verifycode'] = $verifyCode;        
    ##将字符放入SESSION中
    
    $im = imagecreate(50,20);    
    ##生成图片
    
    $black = imagecolorallocate($im, 0,0,0);
    $white = imagecolorallocate($im, 255,255,255);
    $green = imagecolorallocate($im, 0,190,0);
    $gray = imagecolorallocate($im, 180,200,200);
    $red = imagecolorallocate($im, 190, 0, 0);
    ##设置的颜色
    
    imagefill($im,0,0,$white);     
    ##给图片填充颜色
    
    imagestring($im, 5, 8, 2, $verifyCode, $black);   
    ##将验证码写入到图片中
    
    for($i=0;$i<20;$i++) {
        imagesetpixel($im, rand(0,48), rand(0,18), $green);    
        imagesetpixel($im, rand(0,48), rand(0,18), $red);
        imagesetpixel($im, rand(0,48), rand(0,18), $gray);
    }
    ##加入点状干扰象素
    
    imagepng($im);
    imagedestroy($im);
    ?>
    声明:本文由 六月是只猫(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    发一条! 发一条!
    博客logo 六月是只猫 - 互联网技术分享指南 生活,一半家长里短,一半山川湖海... 51统计 百度统计
    MOEICP 萌ICP备20248888号 反诈联盟 公益反诈联盟成员单位 ICP 京ICP备2022028403号-1 ICP 京公网安备 11010502051304号 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已安全运行 1 年 339 天 14 小时 21 分
    六月是只猫 - 互联网技术分享指南. © 2022 ~ 2024.
    网站logo

    六月是只猫 - 互联网技术分享指南 生活,一半家长里短,一半山川湖海...
     
     
     
     
    壁纸