②PHP运用函数实现图形验证码

PHP运用函数实现图形验证码

代码分享在github:https://github.com/LVQINGDONG/learn_php找到numberImg分支下载

实现步骤:

①生成随机字符串(验证码的数字或字母组合)

②生成随机图形验证码

③设计表单结构-注册页面

--------------------------------------------------------

①生成随机字符串代码:functions.php

用到的php系统函数和功能:

range()函数: 创建并返回一个包含指定范围的元素的数组。

array_merge()函数:把两个或多个数组合并为一个数组。

array_flip()函数:返回一个反转后的数组。

array_rand()函数:从数组中随机选出一个或者多个元素。

创建函数测试一下functions.php:

       

②生成随机图形验证码create_numberImg.php:

用到的php系统函数和功能:

imagecreate():创建一个基于调色板的图像。

imagecolorallocate():为一副图像分配颜色。

imagepng():以png格式将图像输出到浏览器或文件。

imagesx(),imagesy():返回图像的宽度,高度。

imagefontwidth()  , imagefontheight():返回字符的宽度,高度像素值。

imagestring():水平的画一行字符。

imagedestroy():销毁一副图像。

实现效果:


③设计表单结构-注册页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul{
            border: 1px solid red;
            width: 300px;
        }
        ul li{
            width: 250px;
            height: 30px;
            margin-top: 10px;
            list-style: none;
        }
        .li_font{
            float: left;
        }
        .li_input{
            float: right;
        }
        .numberImg{
            margin-left: 100px;
        }
    </style>
</head>
<body>
<!--$_SERVER["PHP_SELF"]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关-->
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
    <ul>
        <li>
            <div class="li_font">用户名:</div>
            <div class="li_input"><input type="text" name="username" class="username"></div>
        </li>
        <li>
            <div class="li_font">密码:</div>
            <div class="li_input"><input type="password" name="password" class="password"></div>
        </li>
        <li>
            <div class="li_font">确认密码:</div>
            <div class="li_input"><input type="password" name="password2" class="password2"></div>
        </li>
        <li>
            <div class="li_font">邮箱:</div>
            <div class="li_input"><input type="text" name="email" class="email"></div>
        </li>
        <li>
            <div class="numberImg"><img src="create_numberImg.php"></div>
        </li>
        <li>
            <div class="li_font">验证码:</div>
            <div class="li_input"><input type="text" name="number" class="number"></div>
        </li>
        <li>
            <div><input type="submit" name="submit" class="submit" value="注册"></div>
        </li>
    </ul>
</form>
</body>
</html>

最后运行效果:







Intervention Image是一个用于处理图像的PHP库,它简化了图像操作,比如裁剪、旋转、调整大小等。Intervention Image不是专门用于生成验证码的库,但它提供的功能可以用来创建简单的图形验证码。 以下是使用Intervention Image实现图形验证码的一个基本步骤: 1. 安装Intervention Image库。如果你的项目使用Composer,可以通过运行以下命令来安装: ``` composer require intervention/image ``` 2. 创建一个新的PHP文件用于生成验证码图片。 3. 引入Intervention Image库。 4. 创建一个新的图像实例。 5. 使用图像处理函数向图像中添加噪点、线条、文本等。 6. 输出图像到浏览器,并且设置合适的响应头以防止浏览器缓存。 下面是一个简单的示例代码: ```php <?php // 引入Intervention Image库 require 'vendor/autoload.php'; use Intervention\Image\Facades\Image; // 创建一个新的图像实例,大小为120x40像素 $image = Image::canvas(120, 40, '#ffffff'); // 添加噪点 for ($i = 0; $i < 30; $i++) { $image->pixel($image->randomColor(), rand(0, 120), rand(0, 40)); } // 添加线条 for ($i = 0; $i < 5; $i++) { $image->line($image->randomColor(), [rand(0, 120), rand(0, 40)], [rand(0, 120), rand(0, 40)]); } // 添加文本 $text = str_split('2A3B4C5D6E7F8H'); $textColor = '#000000'; $textSize = 20; $image->text($textColor, $textSize, function ($font) { $font->file('arial.ttf'); // 字体文件路径 $font->size($textSize); $font->color('#000000'); $font->align('center'); $font->valign('middle'); })->insertAt($image->width() / 2, $image->height() / 2, $text); // 输出图像到浏览器,并且设置合适的响应头 header('Content-Type: image/png'); echo $image->encode('png'); ``` 注意:在实际部署时,需要确保字体文件路径正确,并且服务器支持所使用的字体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值