thinkphp 动态验证码
控制器传输到html 数据处理
<foreach name='vlist' item='v'>
<tr>
<td><input type="checkbox" name="key[]" value="{$v.id}"></td>
<td>{$v.userid}</td>
<td>{$v.loginname}</td>
<td>{$v.usermobile}</td>
<td id="{$v.userid}">正在获取余额</td>
<td >{$v.lastlogintime|date='Y-m-d H:i:s', ###}</td> 时间处理
<td >{$v.addtimes|date='Y-m-d H:i:s', ###}</td>
<td >{$v.userimg}</td>
</td>
</tr>
<script>getMoney({$v.userid});</script>
</foreach>
<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller
{
public function test()
{
$y=D("YongHu");
$arr=array(
array('uid','require','用户名不能为空!'), //表单验证
);
if($y->validate($arr)->create()) //使用validate 把规则加进来 判断是否成功
{ $verify = new \Think\Verify();
$a= $verify->check($_POST["yzm"]); //验证验证码的方法 if($a) //验证通过返回 true
{ echo"" ; //验证成功
$y->add();
$this->ajaxReturn("通过验证","eval");
}
else
{
echo""; //验证失败
}
}
else
{
$this->ajaxReturn($y->getError(),"eval");//表单验证错误信息
} }
public function yzm()
{
$V= new \Think\Verify(); //生成动态图验证码的方法
$V->entry();
}
Think\Verify类可以支持验证码的生成和验证功能。
生成验证码
下面是最简单的方式生成验证码:
$Verify = new \Think\Verify();
$Verify->entry();
上面的代码会生成默认的验证码图片并输出,显示如下:
生成的验证码信息会保存到session中,包含的数据有:
array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')
如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:验证码1:
// 验证码1
$Verify = new \Think\Verify();
$Verify->entry(1);
验证码2:
// 验证码2
$Verify = new \Think\Verify();
$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 新增 |
参数设置使用两种方式。
实例化传入参数:
$config = array(
'fontSize' => 30, // 验证码字体大小
'length' => 3, // 验证码位数
'useNoise' => false, // 关闭验证码杂点
);
$Verify = new \Think\Verify($config);
$Verify->entry();
或者采用动态设置的方式,如:
$Verify = new \Think\Verify();
$Verify->fontSize = 30;
$Verify->length = 3;
$Verify->useNoise = false;
$Verify->entry();
生成的验证码如图所示:
验证码字体
默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/
目录下面的字体文件,我们可以指定验证码的字体,例如:
$Verify = new \Think\Verify();
// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->fontttf = '5.ttf';
$Verify->entry();
背景图片
支持验证码背景图片功能,可以如下设置:
$Verify = new \Think\Verify();
// 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片
$Verify->useImgBg = true;
$Verify->entry();
效果如图所示:
中文验证码
如果要使用中文验证码,可以设置:
$Verify = new \Think\Verify();
// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->useZh = true;
$Verify->entry();
显示效果如图:
如果无法正常显示,请确认你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面存在中文字体文件。
指定验证码字符
3.2.1版本以上,我们可以指定验证码的字符,通过重新设置codeSet参数即可,例如:
$Verify = new \Think\Verify();
// 设置验证码字符为纯数字
$Verify->codeSet = '0123456789';
$Verify->entry();
如果是中文验证码,可以使用zhSet参数设置,例如:
$Verify = new \Think\Verify();
$Verify->useZh = true;
// 设置验证码字符
$Verify->zhSet = '们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这';
$Verify->entry();
验证码检测
可以用Think\Verify类的check
方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:
// 检测输入的验证码是否正确,$code为用户输入的验证码字符串
function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
thinkphp 动态验证码的更多相关文章
- 由12306动态验证码想到的ASP.NET实现动态GIF验证码(附源码)
背景: 12306网站推出“彩色动态验证码机制”,新版验证码不但经常出现字符叠压,还不停抖动,不少人大呼“看不清”,称“那个验证码,是毕加索的抽象画么!”铁总客服则表示:为了能正常购票只能这样.而多家 ...
- C#之asp.net 及MVC 生成动态验证码:
C#之asp.net 及MVC 生成动态验证码: 1.生成验证码字符串 // 随机生成指定长度的验证码字符串private string RandomCode(int length) { string ...
- 动态验证码处理UI自动化获取处理
解决思路两种:1.直接linux catalina.out读取:一分每10s轮询出现新的直接读取返回<br>2.缓存注入cookie,先手动登录获取session 然后通过注入user,p ...
- Django之动态验证码的生成
kind.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 修改ThinkPHP的验证码类
今天用ThinkPHP重新开发一个系统,用到了ThinkPHP的验证码类,由于我希望验证码别太复杂,希望验证码里边只有数字,却发现该Verify类并未提供设置验证码中使用的字符的配置的方法,于是查看源 ...
- java的动态验证码单线设计
1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了 ...
- Servlet仿CSDN动态验证码的生成-带数字和字母
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.实现的思路: (1)首先,须要创建一个Servlet.该Servlet通过字节型响应给cl ...
- thinkphp动态注册路由
thinkphp动态注册路由 一.总结 1.thinkphp使用路由步骤:a.config配置文件中开启路由 b.Route类的rule方法创建路由(在Routephp中)Route::rule(' ...
- .NET中生成动态验证码
.NET中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到 ...
随机推荐
- 创建一个List获取数据的lookup
第一步,在类:syslookup中新建方法 public static client void lookupList(FormStringControl _formStringControl, Lis ...
- Java导出Word利用freemarker(含图片)
制作Word模版 建议使用高版本的office做,尽量不要用WPS做,生成xml会出现乱码 编码要统一,推荐UTF-8 建好模板,将模板另存为xml格式,建议原来模板不要删,xml的如果后期打不开,还 ...
- 页面动态table动态合并table
function hebingRows(col, atrrb) { var trs = $("table tbody tr"); var rows = 1; for (var i ...
- iOS项目中安装和使用 Cocoapods
1.首先我们要打开我们的终端: 2.在终端输入 这条命令 gem sources -l 2.1如果是和我是一样的显示,则镜像已添加,无需更改,如果不一样,则需要进行更改 这里输出的如果是 https ...
- Mongodb集群搭建过程及常见错误
Replica Sets MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余.多机器中同一时刻只 有一台是用于写操作.正是由于这个情况,为 MongoDB 提供了数据一致性的保障.担当 ...
- 服务器上搭建web环境
一.安装tomcat [root@localhost ~]# mkdir tomcat-src --新建文件夹 [root@localhost ~]# cd tomcat-src ...
- 整理一下自己用到的SVN几个命令
第一步 svn co 代码分支(http://yyyyyyyyyyyyyyyy) 将开发给的代码分支地址中的代码拉到测试机中 第二步 cd /目录 进入需要拉代码的目录 然后 ll 查看目录下的 ...
- 重新介绍 JavaScript
简介 为什么需要这个重新介绍呢?因为 JavaScript 已经完全可以被称为世界上被误解最严重的编程语言了.虽然它被当做玩具来用,但是藏在让人迷惑的简单表象下面的,是强大的语言特性.从2005年,一 ...
- Thinkphp源码分析系列(九)–视图view类
视图类view主要用于页面内容的输出,模板调用等,用在控制器类中,可以使得控制器类把表现和数据结合起来.下面我们来看一下执行流程. 首先,在控制器类中保持着一个view类的对象实例,只要继承自控制器父 ...
- 如何将ASP.NET MVC所有参数均自动设置为默认
今天看到CSDN上有个问题觉得有点意思:"可不可以ASP.NET MVC所有参数均自动设置为默认" public class HomeController : Controller ...