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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
PHP中error_reporting()用法详解
Aug 31 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP的cookie与session原理及用法详解
Sep 27 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中最容易忘记的一些知识点总结
2013/04/28 PHP
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
职业规划书如何设计?
2014/01/09 职场文书
运动会邀请函范文
2014/01/31 职场文书
优秀家长事迹材料
2014/05/17 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
音乐会主持人开场白
2015/05/28 职场文书
文艺委员竞选稿
2015/11/19 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android