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防注
Jan 15 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
php数组的概述及分类与声明代码演示
Feb 26 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
php使用cookie实现记住登录状态
Apr 27 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
禁止直接访问php文件代码分享
May 05 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
深入解析Python编程中JSON模块的使用
2015/10/15 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python检测IP地址变化并触发事件
2018/12/26 Python
Django和Flask框架优缺点对比
2019/10/24 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Python 高效编程技巧分享
2020/09/10 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
Shell如何接收变量输入
2012/09/24 面试题
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
班级学习计划书
2014/04/27 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
新郎结婚感言
2015/07/31 职场文书
小学作文之描写天气
2019/08/15 职场文书
html中两种获取标签内的值的方法
2022/06/16 jQuery