# 验证码
[上一页](# "上一页")[下一页](# "下一页")
Think\Verify类可以支持验证码的生成和验证功能。
### 生成验证码
下面是最简单的方式生成验证码:
~~~
$Verify = new \Think\Verify();
$Verify->entry();
~~~
上面的代码会生成默认的验证码图片并输出,显示如下:
![verify](https://box.kancloud.cn/2015-08-20_55d56f78a8cae.png)
生成的验证码信息会保存到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();
~~~
生成的验证码如图所示:
![localhost](https://box.kancloud.cn/2015-08-20_55d56f78b3b47.png)
### 验证码字体
默认情况下,验证码的字体是随机使用 `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();
~~~
效果如图所示:
![localhost(2)](https://box.kancloud.cn/2015-08-20_55d56f78bc51a.png)
### 中文验证码
如果要使用中文验证码,可以设置:
~~~
$Verify = new \Think\Verify();
// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->useZh = true;
$Verify->entry();
~~~
显示效果如图:
![logo](https://box.kancloud.cn/2015-08-20_55d56f78c5586.png)
> 如果无法正常显示,请确认你的 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
- 环境要求
- 目录结构
- 入口文件
- 自动生成
- 模块
- 控制器
- 开发规范
- 配置
- 配置格式
- 配置加载
- 读取配置
- 动态配置
- 扩展配置
- 批量配置
- 架构
- 模块化设计
- URL模式
- 多层MVC
- CBD模式
- 命名空间
- 自动加载
- 应用模式
- 项目编译
- 系统流程
- 路由
- 路由定义
- 规则路由
- 正则路由
- 静态路由
- 闭包支持
- 实例说明
- 控制器
- 控制器定义
- 前置和后置操作
- Action参数绑定
- 伪静态
- URL大小写
- URL生成
- AJAX返回
- 跳转和重定向
- 输入变量
- 请求类型
- 空操作
- 空控制器
- 操作绑定到类
- 模型
- 模型定义
- 模型实例化
- 字段定义
- 连接数据库
- 切换数据库
- 分布式数据库支持
- 连贯操作
- WHERE
- TABLE
- ALIAS
- DATA
- FIELD
- ORDER
- LIMIT
- PAGE
- GROUP
- HAVING
- JOIN
- UNION
- DISTINCT
- LOCK
- CACHE
- COMMENT
- RELATION
- 命名范围
- CURD操作
- 数据创建
- 数据写入
- 数据读取
- 数据更新
- 数据删除
- ActiveRecord
- 字段映射
- 查询语言
- 查询方式
- 表达式查询
- 快捷查询
- 区间查询
- 组合查询
- 统计查询
- SQL查询
- 动态查询
- 子查询
- 自动验证
- 自动完成
- 参数绑定
- 虚拟模型
- 模型分层
- 视图模型
- 关联模型
- 高级模型
- Mongo模型
- 视图
- 模板定义
- 模板主题
- 模板赋值
- 模板渲染
- 获取模板地址
- 获取内容
- 模板引擎
- 模板
- 变量输出
- 系统变量
- 使用函数
- 默认值输出
- 使用运算符
- 标签库
- 模板继承
- 修改定界符
- 三元运算
- 包含文件
- 内置标签
- Volist标签
- Foreach标签
- For标签
- Switch标签
- 比较标签
- 范围判断标签
- IF标签
- Present标签
- Empty标签
- Defined标签
- Assign标签
- Define标签
- 标签嵌套
- import标签
- 使用PHP代码
- 原样输出
- 模板注释
- 模板布局
- 模板替换
- 调试
- 调试模式
- 异常处理
- 日志记录
- 页面Trace
- Trace方法
- 变量调试
- 性能调试
- 错误调试
- 模型调试
- 缓存
- 数据缓存
- 快速缓存
- 查询缓存
- SQL解析缓存
- 静态缓存
- 安全
- 输入过滤
- 表单合法性检测
- 表单令牌
- 防止SQL注入
- 目录安全文件
- 保护模板文件
- 上传安全
- 防止XSS攻击
- 其他安全建议
- 扩展
- 类库扩展
- 驱动扩展
- 缓存驱动
- 数据库驱动
- 日志驱动
- Session驱动
- 存储驱动
- 模板引擎驱动
- 标签库驱动
- 行为扩展
- 标签扩展
- Widget扩展
- 应用模式
- 部署
- PATH_INFO支持
- URL重写
- 模块部署
- 域名部署
- 入口绑定
- 替换入口
- 专题
- SESSION支持
- Cookie支持
- 多语言支持
- 数据分页
- 文件上传
- 验证码
- 图像处理
- RESTFul
- RPC
- SAE
- IP获取和定位
- 附录
- 常量参考
- 配置参考
- 升级指导
- 更新日志
- 鸣谢
- 关于