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脚本的10个技巧(6)
Oct 09 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
php实现Session存储到Redis
Nov 11 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php + nginx项目中的权限详解
May 23 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
PHP高并发和大流量解决方案整理
Dec 24 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
YII路径的用法总结
2014/07/09 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
军训自我鉴定
2013/12/14 职场文书
超市商业计划书
2014/05/04 职场文书
社会学专业求职信
2014/07/17 职场文书
研究生导师推荐信
2014/09/06 职场文书
鸟的天堂导游词
2015/01/31 职场文书
岳麓书院导游词
2015/02/03 职场文书
结婚幸福感言
2015/08/01 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
总结几个非常实用的Python库
2021/06/26 Python