tp框架之验证码
控制器
function yzm()
{
/*$config = array(
'fontSize' => 30, // 验证码字体大小
'length' => 4, // 验证码位数
'useImgBg'=>true,
'useZh'=>true,
'fontttf'=>'SIMYOU.TTF',
'zhSet'=>'啊是的分个好就看了' );*/
//$v=new \Think\Verify($config); //随机自己定义的验证码 $v=new \Think\Verify(); //使用默认验证码
$v->entry(1); //如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:验证码1 } function xianshi()
{
if(empty($_POST))
{
$this->display();
}
else
{
$yzm=$_POST["yzm"]; $verify = new \Think\Verify(); var_dump($verify->check($yzm,1)); //1代表第几个验证码
}
}
显示页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<load href="__PUBLIC__/JS/jquery-1.11.2.min.js" />
</head> <body>
<form action="__ACTION__" method="post">
<img id="y" src="__CONTROLLER__/yzm" />
<input type="text" name="yzm" />
<input type="submit" value="提交" />
</form>
</body>
<script type="text/javascript">
$(document).ready(function(e) {
$("#y").click(function(){ var sj=Math.random(); //获取一个随机数 $(this).attr("src","__CONTROLLER__/yzm/c"+sj+""); //针对ie浏览器,每次都传一个不同的数过去,才能重新加载,别的浏览器不需要 })
});
</script>
</html>
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);}
tp框架之验证码的更多相关文章
- tp框架实现验证码
今天来看一个小插件. tp框架是怎么实现验证码的. 又到了我们千篇一律的时候了,首先呢,先做一个用来显示的html界面名为:zhuce.html <!DOCTYPE html PUBLIC &q ...
- tp框架为什么验证码加载不出来?----- ob_clean() 可解决
在用tp做验证码时,代码逻辑都正确,但就是加载不出图片来,如何解决呢?在创建验证码之前加上 ob_clean(); public function haha(){ ob_clean(); $v = n ...
- TP框架设置验证码
thinkphp框架有专门的的验证码生成的模块 public function shengcheng(){ $n = new \Think\Verify(); $n->entry(); } 下面 ...
- tp框架实现验证码验证
//实现验证页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 6月19 使用tp框架生成验证码及文件上传
ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php 默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think ...
- 第一零二天上课 PHP TP框架 引入文件路径问题和调用验证码的方式
外部文件引入到视图模板的方式 1,将外部文件放在Public文件夹下,用load标签引入 2,在模板出书写引入代码(方法有很多,只有以下方法不容易出问题) <load h ...
- PHP--TP框架----生成验证码的方式
TP框架----生成验证码的方式 xianshi.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- tp框架-------验证码
验证码我们一般很常见,在注册或登录时,都可以用的到,下面我们就来看看它的代码和用法 加验证码是为了防止表单攻击的一种方式,为了我们的程序更加的安全 在tp框架中它自带了一个验证码的类,我们先来看一下 ...
- tp框架 验证码的应用注意事项
1如何点击更换二维码 二维码是img标签的src访问生成二维码的方法.绑定点击事件,ajax的get方式请求生成二维码的函数.在U函数后面加上任意不重复的参数 如 ?rand=’+math.rand ...
随机推荐
- 纯JS判断各种浏览器类型及版本.
IE11或者非IE if (!document.all) { alert('IE11+ or not IE'); } IE10 if (document.all && document ...
- 网页上获取的元素值,为什么类型,string
<body> <input type="text" value='9'/><input type="text" value='30 ...
- 火车头采集ecshop 文章接口文件
<?php header("Content-Type:text/html;charset=utf-8"); $host = $_SERVER['HTTP_HOST']; // ...
- Using Celery with Djang
This document describes the current stable version of Celery (4.0). For development docs, go here. F ...
- JS循环语句作业讲解(折纸、兔子生兔子、买东西组合)
1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米: varn = 0;varg = 0.0001;while(){ g= g *2; n++ (g>8848bre ...
- thinkphp3.2.3版本文件目录及作用
下载thinkphp3.2.3版本,解压缩后将文件夹名字改为thinkphp,然后放在www目录下,里面的文件夹和文件的名字和作用如下:(前面有Tab健的表示下一级,thinkphp是根目录) //t ...
- nginx_mysql_redis配置
#Nginx所用用户和组,window下不指定 #user nobody; #工作的子进程数量(通常等于CPU数量或者2倍于CPU) worker_processes 2; #错误日志存放路径 #er ...
- (转载)android:android.content.res.Resources$NotFoundException: String resource ID #..
android.content.res.Resources$NotFoundException: String resource ID #0x0 找不到资源文件ID #0x0 原因分析如下: 遇到这种 ...
- Tiny Mapper
今天看到一个对象映射工具-TinyMapper 1.介绍 Tiny Mapper是一个.net平台的开源的对象映射组件,其它的对象映射组件比如AutoMapper有兴趣的可以去看,Tiny Mappe ...
- 【bzoj1606】[Usaco2008 Dec]Hay For Sale 购买干草
题目描述 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每一包都有它的体 ...