PHP实现简单的验证码功能机制
来源:互联网 发布:鬼泣3 但丁觉醒 mac版 编辑:程序博客网 时间:2024/05/21 10:46
网站的安全性是开发者不可忽视的一个问题,目前使用最多的一种可以提高网站安全性的方法就是使用验证码功能机制,有的仅仅使用一个几位数字字母混乱的验证码,有的进行手机发送短信进行验证,有的使用邮箱发送邮件进行验证,但是这个验证码功能机制是如何实现的呢?下面就为大家详细解释验证码功能机制的实现思路以及简单的实现方法。
1、验证码功能机制实现思路
① 常规的验证码实现:
a、产生一张png的图片
b、为图片设置背景色
c、设置字体颜色和样式
d、产生4位数的随机的验证码
e、把产生的每个字符调整旋转角度和位置画到png图片上
f、加入噪点和干扰线防止注册机器分析原图片来恶意注册
g、输出图片
h、释放图片所占内存
i、将验证码保存到session或是数据库
j、将和输入的验证码进行对比
② 短信(邮箱)验证码机制:
a、产生4-6位数的随机的验证码
b、把产生的每个字符保存到session或是数据库
c、将验证码发送到用户的手机(邮箱)
d、用户在规定时间内进行输入
e、将验证码从session或是数据库中取出
f、将和输入的验证码进行对比验证
2、简单的实现验证码功能机制
① 新建captcha.php,写入以下代码
<?php/** * ======================================= * Created by WeiBang Technology. * User: Wei ZhiHua * Date: 2016/10/12 0020 * Time: 下午 4:14 * Power: 实现验证码功能 * ======================================= *///开启sessionsession_start();//创建一个大小为 100*30 的验证码$image = imagecreatetruecolor(100, 30);$bgcolor = imagecolorallocate($image, 255, 255, 255);imagefill($image, 0, 0, $bgcolor);$captch_code = '';for ($i = 0; $i < 4; $i++) { $fontsize = 6; $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120)); $data = 'abcdefghijkmnpqrstuvwxy3456789'; $fontcontent = substr($data, rand(0, strlen($data) - 1), 1); $captch_code .= $fontcontent; $x = ($i * 100 / 4) + rand(5, 10); $y = rand(5, 10); imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);}//就生成的验证码保存到session$_SESSION['authcode'] = $captch_code;//在图片上增加点干扰元素for ($i = 0; $i < 200; $i++) { $pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200)); imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);}//在图片上增加线干扰元素for ($i = 0; $i < 3; $i++) { $linecolor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220)); imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor);}//设置头header('content-type:image/png');imagepng($image);imagedestroy($image);?>
② 新建form.php,写入以下代码
<?php/** * ======================================= * Created by WeiBang Technology. * User: Wei ZhiHua * Date: 2016/10/12 0021 * Time: 下午 4:14 * Power: 实现验证码功能 * ======================================= */if (isset($_REQUEST['authcode'])) { session_start(); if (strtolower($_REQUEST['authcode']) == $_SESSION['authcode']) { echo "输入正确!"; } else { echo "输入错误!"; } exit();}?><!DOCTYPE html><html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <title>确认验证码</title></head><body><form method="post" action="./form.php"> <p>验证码图片: <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand(); ?>" width=100 height=30> <a href="javascript:void(0)" onClick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a> </p> <p>请输入图片中的内容:<input type="text" name="authcode" value=""/></p> <p><input type="submit" value="提交" style="padding:6px 20px;"></p></form></body></html>
以上就是php验证码的制作思路和实现方法,从简单到复杂,可以根据这些写出非常完美的验证码功能机制。
0 0
- PHP实现简单的验证码功能机制
- 【php】php验证码的简单实现
- [PHP] 验证码校验功能的实现
- 利用重写url机制简单实现验证码换一张的功能
- Php实现验证码功能
- PHP实现验证码功能
- PHP实现验证码功能
- 简单实现验证码功能
- php实现简单验证码
- php实现简单验证码
- php实现简单验证码
- PHP实现简单验证码
- php实现简单验证码并且验证
- php实现Ajax带有验证码的登陆注册功能
- JavaWeb简单的单点登录、验证码校验功能实现
- 用PHP实现验证码功能
- 用PHP实现验证码功能
- 用PHP实现随机验证码功能
- GetLastError
- c语言libcurl库的异步用法
- 【IOI1999】HDU1828 Picture
- linux系统性能监控--I/O利用率
- 如何在Linux(CentOS 7)命令行模式安装VMware Tools
- PHP实现简单的验证码功能机制
- SDK Manager里找不到API安装的选项怎么办?不翻墙解决SDK manager下载问题
- php:快递API接口无限制免费
- LeetCode OJ-41-First Missing Positive
- JDK、JRE、JVM三者间的关系
- idea使用教程
- 【动态规划】 之 最长公共子序列
- USB从了解都熟悉1-------USB概念、接口构成、信号技术和通信格式、通信原理和设备连接检测
- boost智能指针