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函数
Oct 09 PHP
php中的观察者模式
Mar 24 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php常见的魔术方法详解
Dec 25 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
使用laravel的migrate创建数据表的方法
Sep 30 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
Protoss热键控制
2020/03/14 星际争霸
咖啡的种类和口感
2021/03/03 新手入门
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php异常处理使用示例
2014/02/25 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
JavaScript中闭包的详解
2017/04/01 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
tensorflow自定义激活函数实例
2020/02/04 Python
python matplotlib库的基本使用
2020/09/23 Python
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
幼儿园开学家长寄语
2014/01/19 职场文书
优秀民警事迹材料
2014/01/29 职场文书
文员的职业生涯规划发展方向
2014/02/08 职场文书
毕业生求职信
2014/06/10 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
公司表扬稿范文
2015/05/05 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python