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 相关文章推荐
图书管理程序(三)
Oct 09 PHP
mysql建立外键
Nov 25 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
分享10段PHP常用代码
Nov 11 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
php常用正则函数实例小结
Dec 29 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
event.srcElement 用法笔记e.target
2009/12/18 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
python网络编程学习笔记(一)
2014/06/09 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
外联部演讲稿
2014/05/24 职场文书
世博会口号
2014/06/20 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
居安思危观后感
2015/06/11 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电