Think\Verify类可以支持验证码的生成和验证功能。

生成验证码

下面是最简单的方式生成验证码:

  1. $Verify =new \Think\Verify();
  2. $Verify->entry();

上面的代码会生成默认的验证码图片并输出,显示如下:

生成的验证码信息会保存到session中,包含的数据有:

  1. array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')

如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:验证码1:

  1. // 验证码1
  2. $Verify =new \Think\Verify();
  3. );

验证码2:

  1. // 验证码2
  2. $Verify =new \Think\Verify();
  3. );

验证码参数

可以对生成的验证码设置相关的参数,以达到不同的显示效果。这些参数包括:

参数 描述
expire 验证码的有效期(秒)
useImgBg 是否使用背景图片 默认为false
fontSize 验证码字体大小(像素) 默认为25
useCurve 是否使用混淆曲线 默认为true
useNoise 是否添加杂点 默认为true
imageW 验证码宽度 设置为0为自动计算
imageH 验证码高度 设置为0为自动计算
length 验证码位数
fontttf 指定验证码字体 默认为随机获取
useZh 是否使用中文验证码
bg 验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
seKey 验证码的加密密钥
codeSet 验证码字符集合 3.2.1 新增
zhSet 验证码字符集合(中文) 3.2.1 新增

参数设置使用两种方式。

实例化传入参数:

  1. $config = array(
  2. ,// 验证码字体大小
  3. ,// 验证码位数
  4. 'useNoise'=>false,// 关闭验证码杂点
  5. );
  6. $Verify =new \Think\Verify($config);
  7. $Verify->entry();

或者采用动态设置的方式,如:

  1. $Verify =new \Think\Verify();
  2. ;
  3. ;
  4. $Verify->useNoise =false;
  5. $Verify->entry();

生成的验证码如图所示:

验证码字体

默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体,例如:

  1. $Verify =new \Think\Verify();
  2. // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
  3. $Verify->fontttf ='5.ttf';
  4. $Verify->entry();

背景图片

支持验证码背景图片功能,可以如下设置:

  1. $Verify =new \Think\Verify();
  2. // 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片
  3. $Verify->useImgBg =true;
  4. $Verify->entry();

效果如图所示:

中文验证码

如果要使用中文验证码,可以设置:

  1. $Verify =new \Think\Verify();
  2. // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
  3. $Verify->useZh =true;
  4. $Verify->entry();

显示效果如图:

如果无法正常显示,请确认你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面存在中文字体文件。

指定验证码字符

3.2.1版本以上,我们可以指定验证码的字符,通过重新设置codeSet参数即可,例如:

  1. $Verify =new \Think\Verify();
  2. // 设置验证码字符为纯数字
  3. $Verify->codeSet ='0123456789';
  4. $Verify->entry();

如果是中文验证码,可以使用zhSet参数设置,例如:

  1. $Verify =new \Think\Verify();
  2. $Verify->useZh =true;
  3. // 设置验证码字符
  4. $Verify->zhSet ='们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这';
  5. $Verify->entry();

验证码检测

可以用Think\Verify类的check方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:

  1. // 检测输入的验证码是否正确,$code为用户输入的验证码字符串
  2. function check_verify($code, $id =''){
  3. $verify =new \Think\Verify();
  4. return $verify->check($code, $id);
  5. }

验证码

 

Think\Verify类可以支持验证码的生成和验证功能。

生成验证码

下面是最简单的方式生成验证码:

  1. $Verify =new \Think\Verify();
  2. $Verify->entry();

上面的代码会生成默认的验证码图片并输出,显示如下:

生成的验证码信息会保存到session中,包含的数据有:

  1. array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')

如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:验证码1:

  1. // 验证码1
  2. $Verify =new \Think\Verify();
  3. $Verify->entry(1);

验证码2:

  1. // 验证码2
  2. $Verify =new \Think\Verify();
  3. $Verify->entry(2);

验证码参数

可以对生成的验证码设置相关的参数,以达到不同的显示效果。这些参数包括:

参数 描述
expire 验证码的有效期(秒)
useImgBg 是否使用背景图片 默认为false
fontSize 验证码字体大小(像素) 默认为25
useCurve 是否使用混淆曲线 默认为true
useNoise 是否添加杂点 默认为true
imageW 验证码宽度 设置为0为自动计算
imageH 验证码高度 设置为0为自动计算
length 验证码位数
fontttf 指定验证码字体 默认为随机获取
useZh 是否使用中文验证码
bg 验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
seKey 验证码的加密密钥
codeSet 验证码字符集合 3.2.1 新增
zhSet 验证码字符集合(中文) 3.2.1 新增

参数设置使用两种方式。

实例化传入参数:

  1. $config = array(
  2. 'fontSize'=>30,// 验证码字体大小
  3. 'length'=>3,// 验证码位数
  4. 'useNoise'=>false,// 关闭验证码杂点
  5. );
  6. $Verify =new \Think\Verify($config);
  7. $Verify->entry();

或者采用动态设置的方式,如:

  1. $Verify =new \Think\Verify();
  2. $Verify->fontSize =30;
  3. $Verify->length =3;
  4. $Verify->useNoise =false;
  5. $Verify->entry();

生成的验证码如图所示:

验证码字体

默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体,例如:

  1. $Verify =new \Think\Verify();
  2. // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
  3. $Verify->fontttf ='5.ttf';
  4. $Verify->entry();

背景图片

支持验证码背景图片功能,可以如下设置:

  1. $Verify =new \Think\Verify();
  2. // 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片
  3. $Verify->useImgBg =true;
  4. $Verify->entry();

效果如图所示:

中文验证码

如果要使用中文验证码,可以设置:

  1. $Verify =new \Think\Verify();
  2. // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
  3. $Verify->useZh =true;
  4. $Verify->entry();

显示效果如图:

如果无法正常显示,请确认你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面存在中文字体文件。

指定验证码字符

3.2.1版本以上,我们可以指定验证码的字符,通过重新设置codeSet参数即可,例如:

  1. $Verify =new \Think\Verify();
  2. // 设置验证码字符为纯数字
  3. $Verify->codeSet ='0123456789';
  4. $Verify->entry();

如果是中文验证码,可以使用zhSet参数设置,例如:

  1. $Verify =new \Think\Verify();
  2. $Verify->useZh =true;
  3. // 设置验证码字符
  4. $Verify->zhSet ='们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这';
  5. $Verify->entry();

验证码检测

可以用Think\Verify类的check方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:

  1. // 检测输入的验证码是否正确,$code为用户输入的验证码字符串
  2. function check_verify($code, $id =''){
  3. $verify =new \Think\Verify();
  4. return $verify->check($code, $id);
  5. }

2016/05/16 thinkphp3.2.2 验证码使用的更多相关文章

  1. 2016/05/17 thinkphp3.2.2 分页的使用:①在Home下设置Publics文件夹或在thinkPHP下library的vender 把page.class.php 考贝进入 ②通过new 实例化方式调用 $page=new \Home\Publics\Page($total,3);

    注意分页的方法有两种:一种是thinkphp3.2 自带的   另一种是之前新闻页用过的     显示效果稍有差别 显示效果: 细节问题: ①搜索页面  要加session判断   和  分页 ②修改 ...

  2. 2016/05/17 thinkphp3.2.2 ① Ajax 使用 ②前端验证

    显示效果: ①Ajax使用:   注意传值的所有过程用的是小写,及时数据库列的名称中有大写字母 控制器部分: AjaxController.class.php <?php namespace H ...

  3. 2016/05/16 UEditor 文本编辑器 使用教程与使用方法

    第一:百度UEditor编辑器的官方下载地址 ueditor 官方地址:http://ueditor.baidu.com/website/index.html 开发文档地址:http://uedito ...

  4. 2016/05/15 ThinkPHP3.2.2 表单自动验证实例 验证规则的数组 直接写在相应的控制器里

    使用TP 3.2框架 验证规则也可以写到模型里,但感觉有些麻烦, 一是有时候不同页面验证的方式会不一样, 二是看到这个   Add  事件里的代码,就清楚要接收什么数据,如何验证数据能够在第一眼有个大 ...

  5. mysql查询练习题-2016.12.16

    >>>>>>>>>> 练习时间:2016.12.16 编辑时间:2016-12-20-->22:12:08 题: 涉及:多表查询.ex ...

  6. sublime text 3 license 2016.05

    补充:2016.05 最近经过测试,3个注册码在新版3103的sublime上已经不可用了. 现补充两枚新版的license key: -– BEGIN LICENSE -– Michael Barn ...

  7. http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html

    http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html http://www.cnblogs.com/madyina/p/370 ...

  8. 【转载】webstorm11(注册,激活,破解,码,一起支持正版,最新可用)(2016.11.16更新)

    很多人都发现 http://idea.lanyus.com/ 不能激活了 很多帖子说的 http://15.idea.lanyus.com/ 之类都用不了了 最近封的厉害仅作测试 选择 License ...

  9. Murano Weekly Meeting 2016.08.16

    Meeting time: 2016.August.16 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: ...

随机推荐

  1. 比特币 3角对冲python代码

    3角对冲原理 基础货币 base, 兑换货币 quote, 中间货币 mid. 市场分为3个市场 p3: base_quote p2: quote_mid p1: quote_mid 代码逻辑 1, ...

  2. php 后端规范

    后端框架地址: git@gitee.com:xielisen/xcore.git 框架使用规范,内部沟通 Controller命名规范 1, 首字母大写,其余小写 2, 对应数据库名称. 不要下划线 ...

  3. Windows使用Nginx+ffmpeg搭建RTMP服务器

    简介Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.nginx-rmtp-module是Nginx服务器的流媒体插件.nginx通过rtmp模块提供r ...

  4. pwnable flag之write up

    Papa brought me a packed present! let's open it. Download : http://pwnable.kr/bin/flag This is rever ...

  5. LeetCode 464. Can I Win

    In the "100 game," two players take turns adding, to a running total, any integer from 1.. ...

  6. Fidder详解-抓取HTTPS清求(Web/App)抓包分析(靠谱篇)

    为什么要学Fidder抓包? 学习接口,必须要学http协议,不要求您对协议的掌握有多深.只是希望你能够了解什么是协议.协议的报文.状态码等等!本文通过抓包工具Fidder带你进入接口的大门.我们通过 ...

  7. 大数据学习——yum安装tomcat

    https://www.cnblogs.com/jtlgb/p/5726161.html 安装tomcat6 yum install tomcat6 tomcat6-webapps tomcat6-a ...

  8. zoj 1251 Box of Bricks

    Box of Bricks Time Limit: 2 Seconds      Memory Limit: 65536 KB Little Bob likes playing with his bo ...

  9. 【Ajax 1】Ajax与传统Web开发的区别

    导读:从用户体验度的角度来说,利用Ajax进行开发的网站,其体验度高于利用传统Web开发技术,那么,是什么因素导致了这一现象呢?难道说Ajax开发,就一定优于传统Web技术吗?本篇文章,将主要介绍Aj ...

  10. 【DFS+剪枝】Square

    https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/J [题意] 给定n个木棍,问这些木棍能否围成一个正方形 [Accepted] # ...