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中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到 ...
随机推荐
- .net MVC3 页面和 action 传值问题
一.ViewData ViewData ViewBag 的特点和使用场景比较 1. TempData:类型是字典的键值对结构 特点:值只能取一次.保存在Session中,Controller每次执行 ...
- Ejabberd外部组件开发
Ejabberd的基本介绍就不多言了,使用erlang开发的高并发高稳定性XMPP服务器,在whatsapp中得到了应用,算是erlang领域一个杀手级应用.前面的文章中我已经总结了Ejabberd插 ...
- Spring配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...
- ADO数据库操作
void CSjtestDlg::OnBnClickedButtonAdd() { // TODO: 在此添加控件通知处理程序代码 this->ShowWindow(SW_HIDE); DigA ...
- 3、NAT
<计算机网络(第5版)>P173 P182
- oracle 分析函数
认识分析函数 分析函数是什么? 分析函数是oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数 ...
- C++ 随机数
#include <iostream> #include <stdlib.h> #include <time.h> #define random(a,b) (ran ...
- 用PHP向mysql添加数据
<?php $name=$_POST['name']; $gender = $_POST['gender']; $age=$_POST['age']; #连接到数据库 $link = mysql ...
- 17.linux下root用户与普通用户
默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢? (1)sudo 命令 这样输入当前管理员用户密码就可以得到超级用户的权限.但默认的情况下5分钟root权限就失效了. (2 ...
- window SVN设置忽略文件列表
进入checkout的项目文件夹. 执行 mvn install.生成 target文件夹. 如果这时候不想让target文件夹纳入版本控制.则进入子文件夹,在target文件夹上 右键执行 查看设置 ...