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+MySql编写聊天室
Oct 09 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
php接口实现拖拽排序功能
Apr 23 PHP
PHPExcel 修改已存在Excel的方法
May 03 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 中的批处理的实现
2007/06/14 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
python插入排序算法实例分析
2015/07/03 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
销售找工作求职信
2013/12/20 职场文书
现金出纳岗位职责
2014/03/15 职场文书
销售主管竞聘书
2014/03/31 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
公司承诺书格式范文
2015/04/28 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
欢送领导祝酒词
2015/08/12 职场文书
高中语文教学反思范文
2016/02/16 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis