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安装问题
Oct 09 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
php下载文件超时时间的设置方法
Oct 06 PHP
PHP函数积累总结
Mar 19 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
PHP autoload使用方法及步骤详解
Sep 05 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
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
Document 对象的常用方法
2009/07/31 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
node中的cookie的具体使用
2018/09/13 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Django forms组件的使用教程
2018/10/08 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
python实现人机五子棋
2020/03/25 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
终止劳动合同证明书样本
2014/11/19 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android