PHP简单验证码功能机制实例详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PHP简单验证码功能机制实例详解
本⽂实例讲述了PHP简单验证码功能机制。
分享给⼤家供⼤家参考,具体如下:
⽹站的安全性是开发者不可忽视的⼀个问题,⽬前使⽤最多的⼀种可以提⾼⽹站安全性的⽅法就是使⽤验证码功能机制,有的仅仅使⽤⼀个⼏位数字字母混乱的验证码,有的进⾏⼿机发送短信进⾏验证,有的使⽤邮箱发送邮件进⾏验证,但是这个验证码功能机制是如何实现的呢?下⾯就为⼤家详细解释验证码功能机制的实现思路以及简单的实现⽅法。
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: 实现验证码功能
* =======================================
*/
//开启session
session_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)" rel="external nofollow"
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验证码的制作思路和实现⽅法,从简单到复杂,可以根据这些写出⾮常完美的验证码功能机制。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》
希望本⽂所述对⼤家PHP程序设计有所帮助。