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&amp;&amp;mysql)二
Oct 09 PHP
PHP脚本的10个技巧(5)
Oct 09 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
PHP文件上传判断file是否己选择上传文件的方法
Nov 10 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP使用递归生成文章树
Apr 21 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP哈希表实现算法原理解析
Dec 11 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
golang 调用 php7详解及实例
2017/01/04 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
利用JS实现数字增长
2016/07/28 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
python多线程同步之文件读写控制
2021/02/25 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
用python计算文件的MD5值
2020/12/23 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
精选奢华:THE LIST
2019/09/05 全球购物
岗位职责定义及内容
2013/11/08 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
react antd实现动态增减表单
2021/06/03 Javascript
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript