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变量引用的面试题
Aug 08 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
分享一个php 的异常处理程序
Jun 22 PHP
PHP中文乱码解决方案
Mar 05 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
php文件上传、下载和删除示例
Aug 28 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
php源码的安装方法和实例
Sep 26 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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
php Ubb代码编辑器函数代码
2012/07/05 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
Python、Javascript中的闭包比较
2015/02/04 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
python 文件操作删除某行的实例
2017/09/04 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
音乐器材管理制度
2014/01/31 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android