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 中排序
Apr 21 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
php获取随机数组列表的方法
Nov 13 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
PHP实现的购物车类实例
Jun 17 PHP
必须收藏的php实用代码片段
Feb 02 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP如何使用Memcached
Apr 05 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
杏林同学录(五)
2006/10/09 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python实现堆栈与队列的方法
2015/01/15 Python
Python中的高级数据结构详解
2015/03/27 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
python如何统计代码运行的时长
2019/07/24 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
基于python实现删除指定文件类型
2020/07/21 Python
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
领导党性分析材料
2014/02/15 职场文书
内衣营销方案
2014/03/15 职场文书
项目合作意向书模板
2014/07/29 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
试用期辞职信范文
2015/03/02 职场文书
人民检察院起诉书
2015/05/20 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书