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项目打包方法
Feb 18 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
Jul 01 PHP
PHP读取PPT文件的方法
Dec 10 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 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 header()函数常用方法总结
2014/04/11 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
python类定义的讲解
2013/11/01 Python
Python编程之多态用法实例详解
2015/05/19 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python字典与json转换的方法总结
2020/12/28 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
期末总结的个人自我评价
2013/11/02 职场文书
大学自主招生自荐信
2013/12/16 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
小学校长个人总结
2015/03/03 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js