PHP实现验证码校验功能


Posted in PHP onNovember 16, 2017

验证码的校验是利用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>

这里特别说明一下 HTML代码中加入了一个事件 onclick .当用户无法识别当前验证码的时候可以不用刷新浏览器,直接点击“看不清?换一个”即可更换验证码。

PHP实现验证码校验功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用PHP调用数据库的存贮过程
Oct 09 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
浅析php原型模式
Nov 25 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
php实用代码片段整理
Nov 12 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
学习thinkphp5.0验证类使用方法
Nov 16 #PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 #PHP
php表单处理操作
Nov 16 #PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 #PHP
Laravel下生成验证码的类
Nov 15 #PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 #PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 #PHP
You might like
PHP和XSS跨站攻击的防范
2007/04/17 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php接口与接口引用的深入解析
2013/08/09 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
Python龙贝格法求积分实例
2020/02/29 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
Django实现简单的分页功能
2021/02/22 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
写给妈妈的道歉信
2014/01/11 职场文书
《值日生》教学反思
2014/02/17 职场文书
车间主任岗位职责
2014/03/16 职场文书
大一新生学期自我评价
2014/04/09 职场文书
廉政承诺书
2015/01/19 职场文书
机关工会工作总结2015
2015/05/26 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL