PHP实现登录验证码校验功能


Posted in PHP onMay 17, 2018

验证码的校验是利用PHP中的 SESSION功能来实现。

在最顶端声明函数 session_start(); 告诉服务器我们要用这个函数的功能。

session_start();

接下来我们用到的就是验证码实现的代码。这里用英文数字的代码为例。

$image = imagecreatetruecolor(100, 30); //创建一个100×30的画布
$white = imagecolorallocate($image,255,255,255);//白色
imagefill($image,0,0,$white);//覆盖黑色画布

然后在验证码实现之前声明一个空变量,用来存放验证码。

$session = ""; //空变量 ,存放验证码
for($i=0;$i<4;$i++){
 $size = 6;
 $x = $i*25+mt_rand(5,10);
 $y = mt_rand(5,10);
 $sizi_color = imagecolorallocate($image,mt_rand(80,220),mt_rand(80,220),mt_rand(80,220));
 $char = join("",array_merge(range('a','z'),range('A','Z'),range(0,9)));
 $char = str_shuffle($char);
 $char = substr($char,0,1);
 imagestring($image,$size,$x,$y,$char,$sizi_color);
 $session .= $char ; //把验证码的每一个值赋值给变量
}
 $_SESSION['session'] = $session; //这个变量的值与用户输入的值相等

for($k=0;$k<200;$k++){
 $rand_color = imagecolorallocate($image,mt_rand(50,200),mt_rand(50,200),mt_rand(50,200));
 imagesetpixel($image,mt_rand(1,99),mt_rand(1,29),$rand_color);
}
for($n=0;$n<5;$n++){
 $line_color = imagecolorallocate($image,mt_rand(80,220),mt_rand(80,220),mt_rand(80,220));
 imageline($image,mt_rand(1,99),mt_rand(1,29),mt_rand(1,99),mt_rand(1,29),$line_color);
}
header('content-type:image/png');//设置文件输出格式
imagepng( $image ); //以png格式输出$image图像
imagedestroy( $image ); //销毁图像

用 POST 方式来接收验证码。 strtolower 函数是让服务器不区分大小写。这样可以有效减少用户的输错率。

if(isset($_POST['session'])){
 session_start();
 if(strtolower($_POST['session'])==strtolower($_SESSION['session'])){
  echo'<font color="#0000CC">输入正确</form>';
 }else{
  echo '<font color="#CC0000"><b>输入错误</b></font>';
 }
 exit();
}

下面是HTML的页面代码。

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8"/>
 <title>确认验证码</title>
</head>
<body>
 <form method="post" action="./tushu.php">
 <p>验证码图片:<img id="img" border="1" src="http://localhost//xxx.php" width="100" height="30"></p>
 <a href="javascript:void(0)" rel="external nofollow"  onclick="document.getElementById('img').src='http://localhost//xxx.php'">看不清?换一个</a>
 <p>请输入图片中的验证码:<input type="text" name="session" value=""/></p>
 <p><input type="submit" value="提交" style="padding:6px 10px;"></p>
 </form>
</body>
</html>

总结

以上所述是小编给大家介绍的PHP实现登录验证码校验功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
input file获得文件根目录简单实现
Apr 26 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
Symfony核心类概述
Mar 17 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
php集成开发环境详解
Sep 24 PHP
laravel框架实现去掉URL中index.php的方法
Oct 12 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 #PHP
php通过各种函数判断0和空
Jul 04 #PHP
PHP手机短信验证码实现流程详解
May 17 #PHP
PHP实现多图上传和单图上传功能
May 17 #PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 #PHP
PHP多维数组指定多字段排序的示例代码
May 16 #PHP
php strftime函数获取日期时间(switch用法)
May 16 #PHP
You might like
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
php输出xml属性的方法
2015/03/19 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
Python 远程开关机的方法
2020/11/18 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
党员干部廉洁承诺书
2014/05/28 职场文书
学习心理学的体会
2014/11/07 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript
Go语言特点及基本数据类型使用详解
2022/03/21 Golang