站长资讯网
最全最丰富的资讯网站

php如何实现验证码登录

php实现验证码登录的方法:1、创建html页面显示验证码;2、创建php文件,接受前端页面传入的验证码信息;3、创建验证码生成PHP文件。

php如何实现验证码登录

本文操作环境:windows10系统、php 7、thinkpad t480电脑。

验证码在我们的日常生活中非常常见,使用验证码有诸多好处,如:

防止恶意的破解密码。如一些黑客为了获取到用户信息,通过不同的手段向服务器发送数据,验证猜测用户信息的准确性。

防止恶意的刷票,论坛灌水。这种在论坛中长期存在灌水的现象,比如贴吧,不断发送帖子。现在百度贴吧已经针对用户发帖的时间做了一个时间的限制,当一定时间内发帖过多是无法继续发帖的。

防止恶意的请求。如用户提交一个表单信息,通过不断向后台请求数据信息造成服务器资源的浪费,以及恶意的攻击。

趣味性。这一点属于个人观点,当我们提交表单的时候,如遇到一些有趣的验证码方式,能够增强用户对网站的喜爱程度。

获取用户信息。这一点在现目前的站点中是屡见不鲜的事情了。如我们注册一个站点的账号,需要通过手机验证码才可以注册成功。网站在拿到用户的电话号码之后会给手机号主发送一些营销信息。

那么我们该如何实现验证码登录功能呢?一起来看下吧!

环境配置:

只需要本地安装了PHP的GD扩展库即可使用。如何查看呢,创建一个PHP文件在该文件中写入<?php phpinfo();?>,访问该文件,如果查看到了GD库已经安装了,则可以使用。

具体代码实现:

1、我们先创建一个html页面显示验证码

<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>登陆</title> </head> <body>     <form action="./login.php" method="post">         <img src="image_captcha.php"  onclick="this.src='image_captcha.php?'+new Date().getTime();" width="200" height="200"><br/>         <input type="text" name="captcha" placeholder="请输入图片中的验证码"><br/>         <input type="submit" value="验证">     </form> </body> </html>

2、创建一个PHP文件,接受前端页面传入的验证码信息

<?php /**  * 接受用户登陆时提交的验证码  */ session_start(); //1. 获取到用户提交的验证码 $captcha = $_POST["captcha"]; //2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交 if(strtolower($_SESSION["captchaimg"]) == strtolower($captcha)){     echo "验证码正确!";     $_SESSION["captcha"] = ""; }else{     echo "验证码提交不正确!"; }

3、创建验证码生成PHP文件

<?php /**  * 字母+数字的验证码生成  */ // 开启session session_start(); //1.创建黑色画布 $image = imagecreatetruecolor(100, 30);   //2.为画布定义(背景)颜色 $bgcolor = imagecolorallocate($image, 255, 255, 255);   //3.填充颜色 imagefill($image, 0, 0, $bgcolor);   // 4.设置验证码内容   //4.1 定义验证码的内容 $content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";   //4.1 创建一个变量存储产生的验证码数据,便于用户提交核对 $captcha = ""; for ($i = 0; $i < 4; $i++) {     // 字体大小     $fontsize = 10;     // 字体颜色     $fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));     // 设置字体内容     $fontcontent = substr($content, mt_rand(0, strlen($content)), 1);     $captcha .= $fontcontent;     // 显示的坐标     $x = ($i * 100 / 4) + mt_rand(5, 10);     $y = mt_rand(5, 10);     // 填充内容到画布中     imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } $_SESSION["captcha"] = $captcha;   //4.3 设置背景干扰元素 for ($$i = 0; $i < 200; $i++) {     $pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));     imagesetpixel($image, mt_rand(1, 99), mt_rand(1, 29), $pointcolor); }   //4.4 设置干扰线 for ($i = 0; $i < 3; $i++) {     $linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));     imageline($image, mt_rand(1, 99), mt_rand(1, 29), mt_rand(1, 99), mt_rand(1, 29), $linecolor); }   //5.向浏览器输出图片头信息 header('content-type:image/png');   //6.输出图片到浏览器 imagepng($image);   //7.销毁图片 imagedestroy($image); 

推荐学习:php培训

赞(0)
分享到: 更多 (0)