• PHP实现验证码功能


    登录页面代码login:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>登陆</title>
    </head>
    <body>
        <form action="./test.php" method="post">
            <img src="image_captcha.php"  onclick="this.src='image_captcha.php?'+new Date().getTime();" width="140" height="35"><br/>
            <input type="text" name="captcha" placeholder="请输入图片中的验证码"><br/>
            <input type="submit" value="验证">
        </form>
    </body>
    </html>

    生成验证代码:

    <?php
    /**
     * 字母+数字的验证码生成
     */
    // 开启session
    session_start();
    //1.创建黑色画布
    $image = imagecreatetruecolor(100, 30);
    
    //2.为画布定义(背景)颜色
    $bgcolor = imagecolorallocate($image, 255, 255, 255);
    
    //3.填充颜色
    imagefill($image, 0, 0, $bgcolor);
    
    // 4.设置验证码内容
    
    //4.1 定义验证码的内容
    $content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    
    //4.1 创建一个变量存储产生的验证码数据,便于用户提交核对
    $captcha = "";
    for ($i = 0; $i < 4; $i++) {
        // 字体大小
        $fontsize = 10;
        // 字体颜色
        $fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
        // 设置字体内容
        $fontcontent = substr($content, mt_rand(0, strlen($content)), 1);
        $captcha .= $fontcontent;
        // 显示的坐标
        $x = ($i * 100 / 4) + mt_rand(5, 10);
        $y = mt_rand(5, 10);
        // 填充内容到画布中
        imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
    }
    
    $_SESSION["image_captcha"] = $captcha;
    
    //4.3 设置背景干扰元素
    for ($$i = 0; $i < 200; $i++) {
        $pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
        imagesetpixel($image, mt_rand(1, 99), mt_rand(1, 29), $pointcolor);
    }
    
    //4.4 设置干扰线
    for ($i = 0; $i < 3; $i++) {
        $linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
        imageline($image, mt_rand(1, 99), mt_rand(1, 29), mt_rand(1, 99), mt_rand(1, 29), $linecolor);
    }
    
    //5.向浏览器输出图片头信息
    header('content-type:image/png');
    
    //6.输出图片到浏览器
    imagepng($image);
    
    //7.销毁图片
    imagedestroy($image);

    验证输入代码:

    <?php
    /**
     * 接受用户登陆时提交的验证码
     */
    session_start();
    //1. 获取到用户提交的验证码
    $captcha = $_POST["captcha"];
    //2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,不成功则跳回重新提交
    if(strtolower($_SESSION["image_captcha"]) == strtolower($captcha)){
        echo "<h5>yes!验证码正确!</h5>";
    }else{
        echo "NO! 验证码提交不正确!";
        header("refresh:3;url=./login.php");//输入错误跳转登录页面
    }
  • 相关阅读:
    从通胀说起
    科技见欲迷人眼
    吃货在西安 之 粉丝羊血泡馍
    祝母亲大人福如东海长流水,寿比南山不老松
    久违的蓝调北京
    调和生活前的问题
    《N2CMS实例教程》第四讲:Article Template Page
    《N2CMS实例教程》前言
    《N2CMS实例教程》第一讲:开发环境
    Microsoft Sync Framework 学习实例1文件同步
  • 原文地址:https://www.cnblogs.com/niusdtz/p/12683415.html
Copyright © 2020-2023  润新知