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计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 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
星际中的相关伤害
2020/03/04 星际争霸
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
php常用Stream函数集介绍
2013/06/24 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
javascript 写类方式之七
2009/07/05 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
详解如何用babel转换es6的class语法
2018/04/03 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python编程中类与类的关系详解
2019/08/08 Python
python的scipy实现插值的示例代码
2019/11/12 Python
最小二乘法及其python实现详解
2020/02/24 Python
python中remove函数的踩坑记录
2021/01/04 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
工艺工程师工作职责
2013/11/23 职场文书
英文自荐信常用句子
2014/03/26 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
大学生求职信怎么写
2015/03/19 职场文书
公司员工手册范本
2015/05/14 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
php png失真的原因及解决办法
2021/11/17 PHP
gojs实现蚂蚁线动画效果
2022/02/18 Javascript