thinkPHP中验证码的简单实现方法


Posted in PHP onDecember 05, 2016

本文实例讲述了thinkPHP中验证码的简单实现方法。分享给大家供大家参考,具体如下:

运行效果图如下:

thinkPHP中验证码的简单实现方法

1.php端生成验证码函数

public function verify(){
    // 验证码
    import("@.Util.Image");
    Image::buildImageVerify(4,1,'png',40,20,'verify');
}
/**
* 生成图像验证码
* @static
* @access public
* @param string $length 位数
* @param string $mode 类型
* @param string $type 图像格式
* @param string $width 宽度
* @param string $height 高度
* @return string
*/
static function buildImageVerify($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify') {
    import('ORG.Util.String');
    $randval = String::randString($length, $mode);
    session($verifyName, md5($randval));
    $width = ($length * 10 + 10) > $width ? $length * 10 + 10 : $width;
    if ($type != 'gif' && function_exists('imagecreatetruecolor')) {
      $im = imagecreatetruecolor($width, $height);
    } else {
      $im = imagecreate($width, $height);
    }
    $r = Array(225, 255, 255, 223);
    $g = Array(225, 236, 237, 255);
    $b = Array(225, 236, 166, 125);
    $key = mt_rand(0, 3);
    $backColor = imagecolorallocate($im, $r[$key], $g[$key], $b[$key]);  //背景色(随机)
    $borderColor = imagecolorallocate($im, 100, 100, 100); //边框色
    imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor);
    imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor);
    $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
    // 干扰
    for ($i = 0; $i < 10; $i++) {
      imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $stringColor);
    }
    for ($i = 0; $i < 25; $i++) {
      imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $stringColor);
    }
    for ($i = 0; $i < $length; $i++) {
      imagestring($im, 5, $i * 10 + 5, mt_rand(1, 8), $randval{$i}, $stringColor);
    }
    Image::output($im, $type);
}

生成图片的同时,传入到session中。

2.页面端

<img id="verifyImg" src="{sh::U('Agent/Login/verify')}" onClick="changeVerify()" title="点击刷新验证码" /></div>

直接src中调用。

点击触发改变。

function changeVerify(){
 verifyURL = "{sh::U('Agent/Login/verify')}";
 $("#verifyImg").attr("src",verifyURL);
 return false;
}

3.后台验证,对比post字段与session中的验证码是否一致。

if($_SESSION['verify'] != md5($_POST['verify'])) {
  $this->error('验证码错误!');
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
DOM基础及php读取xml内容操作的方法
Jan 23 PHP
php eval函数一句话木马代码
May 21 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP 断点续传实例详解
Nov 11 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 #PHP
简述php环境搭建与配置
Dec 05 #PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 #PHP
[原创]php实现 data url的图片生成与保存
Dec 04 #PHP
php 魔术常量详解及实例代码
Dec 04 #PHP
深入浅出讲解:php的socket通信原理
Dec 03 #PHP
thinkphp实现分页显示功能
Dec 03 #PHP
You might like
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
JS 遮照层实现代码
2010/03/31 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
Python迭代器和生成器介绍
2015/03/06 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
实现Python与STM32通信方式
2019/12/18 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
C#基础面试题
2016/10/17 面试题
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
人事助理自荐信
2014/02/02 职场文书
安全教育主题班会总结
2015/08/14 职场文书
党员公开承诺书2016
2016/03/24 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL