php如何实现登录验证码

互联网 20-9-28

php实现登录验证码的方法:首先产生4到6位数的随机验证码;然后把产生的每个字符保存到session或数据库;接着将验证码发送到用户的手机;最后将和输入的验证码进行对比验证即可。

推荐:《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)"            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如何实现登录验证码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:php session不起作用怎么办

相关资讯