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 全文搜索和替换的实现代码
Jul 29 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php中的比较运算符详解
Oct 28 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
PHP实现随机发放扑克牌
Apr 21 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按指定键值对二维数组进行排序的方法
2015/12/22 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
python创建和使用字典实例详解
2013/11/01 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python 实现简单的FTP程序
2019/12/27 Python
python语言的优势是什么
2020/06/17 Python
python如何爬取动态网站
2020/09/09 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
物业管理专业求职信
2014/06/11 职场文书
校外活动方案
2014/08/28 职场文书
销售内勤岗位职责
2015/02/10 职场文书
预备党员转正意见
2015/06/01 职场文书
初中美术教学反思
2016/02/17 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
Python进行区间取值案例讲解
2021/08/02 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript