验证码系统设计与实现PHP,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,写入以下代码

/**

*=======================================

*CreatedbyWeiBangTechnology.

*User:WeiZhiHua

*Date:2016/10/120020

*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,写入以下代码

/**

*=======================================

*CreatedbyWeiBangTechnology.

*User:WeiZhiHua

*Date:2016/10/120021

*Time:下午4:14

*Power:实现验证码功能

*=======================================

*/

if(isset($_REQUEST['authcode'])){

session_start();

if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){

echo"输入正确!";

}else{

echo"输入错误!";

}

exit();

}

?>

确认验证码

验证码图片:

"width=100height=30>

onClick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?

请输入图片中的内容:

以上就是php验证码的制作思路和实现方法,从简单到复杂,可以根据这些写出非常完美的验证码功能机制。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:php+mysql开发的最简单在线题库(在线做题系统)完整案例PHP实现的pdo连接数据库并插入数据功能简单示例浅谈php调用python文件PHP数据对象映射模式实例分析PHP模版引擎原理、定义与用法实例为PleskPHP7启用OracleOCI8扩展方法总结PHP中ltrim()函数的用法与实例讲解微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解PHP微商城开源代码实例PHP中md5()函数的用法讲解