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 相关文章推荐
967 个函式
Oct 09 PHP
function.inc.php超越php
Dec 09 PHP
php下使用无限生命期Session的方法
Mar 16 PHP
mysql+php分页类(已测)
Mar 31 PHP
PHP操作数组相关函数
Feb 03 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 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+mysql 实现身份验证代码
2010/03/24 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
Javascript Select操作大集合
2009/05/26 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
Python中os模块功能与用法详解
2020/02/26 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
学校领导班子对照检查材料
2014/08/28 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
大学生毕业评语
2014/12/31 职场文书
比赛主持人开场白
2015/05/29 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
反邪教教育心得体会
2016/01/15 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang