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文本数据库的搜索方法
Oct 09 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
php动态添加url查询参数的方法
Apr 14 PHP
php设计模式之单例模式代码
Jun 11 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
php实用代码片段整理
Nov 12 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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 星际争霸
php过滤敏感词的示例
2014/03/31 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python变量不能以数字打头详解
2016/07/06 Python
Python对象的属性访问过程详解
2020/03/05 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
销售会计岗位职责
2014/03/15 职场文书
党支部承诺书范文
2014/03/28 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
家庭困难证明
2014/10/12 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
Vue3中的Refs和Ref详情
2021/11/11 Vue.js
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android