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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
PHP中的extract的作用分析
Apr 09 PHP
怎样去阅读一份php源代码
Aug 21 PHP
php cli换行示例
Apr 22 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
PHP实现的oracle分页函数实例
Jan 25 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
php验证码生成器
May 24 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 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 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python读写配置文件操作示例
2019/07/03 Python
python manage.py runserver流程解析
2019/11/08 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
python线程里哪种模块比较适合
2020/08/02 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
小学一年级学生评语
2014/04/22 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
绿色环保口号
2014/06/12 职场文书
社区节水倡议书
2015/04/29 职场文书
处罚决定书范文
2015/06/24 职场文书