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 相关文章推荐
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP Memcached应用实现代码
Feb 08 PHP
php GeoIP的使用教程
Mar 09 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php字符串截取函数用法分析
Nov 25 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
php中的登陆login实例代码
Jun 20 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
详解php中生成标准uuid(guid)的方法
Apr 28 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读取csv文件并输出的方法
2015/03/14 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
战略合作协议书范本
2014/04/18 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
毕业生评语大全
2015/01/04 职场文书
个人培训总结
2015/03/05 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
MSSQL基本语法操作
2022/04/11 SQL Server
vue的项目如何打包上线
2022/04/13 Vue.js