php验证码手册,验证码 - ThinkPHP 5.1 完全开发手册
首先使用Composer安装think-captcha扩展包:
composer require topthink/think-captcha
验证码的简单用法
扩展包内定义了一些常见用法方便使用,可以满足大部分常用场景,以下示例说明。
在模版内添加验证码的显示代码
或者
上面两种的最终效果是一样的,根据需要调用即可。
然后使用框架的内置验证功能(具体可以参考验证章节),添加captcha验证规则即可
$this->validate($data,[
'captcha|验证码'=>'require|captcha'
]);
如果没有使用内置验证功能,则可以调研内置的函数手动验证
if(!captcha_check($captcha)){
// 验证失败
};
验证码的自定义用法
如果需要自己独立生成验证码,可以调用Captcha类(think\captcha\Captcha)操作。
在控制器中使用下面的代码进行验证码生成:
namespace app\index\controller;
use think\captcha\Captcha;
class Index
{
public function verify()
{
$captcha = new Captcha();
return $captcha->entry();
}
}
然后访问下面的地址就可以显示验证码:
http://serverName/index/index/verify
输出效果如图
通常可以给验证码地址注册路由
Route::get('verify','index/verify');
在模板中就可以使用下面的代码显示验证码图片
如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息(数字或者字符串),例如:
$captcha = new Captcha();
return $captcha->entry(1);
可以用Captcha类的check方法检测验证码的输入是否正确,
// 检测输入的验证码是否正确,$value为用户输入的验证码字符串
$captcha = new Captcha();
if( !$captcha->check($value))
{
// 验证失败
}
或者直接调用封装的一个验证码检测的函数captcha_check
// 检测输入的验证码是否正确,$value为用户输入的验证码字符串
if( !captcha_check($value ))
{
// 验证失败
}
如果你在页面上同时生成了多个验证码,则可以使用
// 检测输入的验证码是否正确,$value为用户输入的验证码字符串,$id为验证码标识
if( !captcha_check($value, $id ))
{
// 验证失败
}
验证码的配置参数
Captcha类带有默认的配置参数,支持自定义配置。这些参数包括:
参数
描述
默认
codeSet
验证码字符集合
略
expire
验证码过期时间(s)
1800
useZh
使用中文验证码
false
zhSet
中文验证码字符串
略
useImgBg
使用背景图片
false
fontSize
验证码字体大小(px)
25
useCurve
是否画混淆曲线
true
useNoise
是否添加杂点
true
imageH
验证码图片高度,设置为0为自动计算
0
imageW
验证码图片宽度,设置为0为自动计算
0
length
验证码位数
5
fontttf
验证码字体,不设置是随机获取
空
bg
背景颜色
[243, 251, 254]
reset
验证成功后是否重置
true
如果使用扩展内置的方法进行验证码显示,直接在应用的config目录下面的captcha.php文件(没有则首先创建)中进行设置即可,以下设置方式仅限于独立调用Captcha类的时候使用。
实例化传入参数:
$config = [
// 验证码字体大小
'fontSize' => 30,
// 验证码位数
'length' => 3,
// 关闭验证码杂点
'useNoise' => false,
];
$captcha = new Captcha($config);
return $captcha->entry();
或者采用动态设置的方式,如:
$captcha = new Captcha();
$captcha->fontSize = 30;
$captcha->length = 3;
$captcha->useNoise = false;
return $captcha->entry();
验证码字体
默认情况下,验证码的字体是随机使用扩展包内 think-captcha/assets/ttfs目录下面的字体文件,我们可以指定验证码的字体,例如:
$captcha = new Captcha();
$captcha->fontttf = '5.ttf';
return $captcha->entry();
背景图片
支持验证码背景图片功能,可以如下设置:
$captcha = new Captcha();
// 开启验证码背景图片功能 随机使用扩展包内`think-captcha/assets/bgs`目录下面的图片
$captcha->useImgBg = true;
return $captcha->entry();
中文验证码
如果要使用中文验证码,可以设置:
$captcha = new Captcha();
// 使用中文验证码(字体使用扩展包内`think-captcha/assets/zhttfs`字体文件)
$captcha->useZh = true;
return $captcha->entry();
指定验证码字符
指定验证码的字符,可以设置:
$captcha = new Captcha();
// 设置验证码字符为纯数字
$captcha->codeSet = '0123456789';
return $captcha->entry();
如果是中文验证码,可以使用zhSet参数设置,例如:
$captcha = new Captcha();
$captcha->useZh = true;
// 设置验证码字符
$captcha->zhSet = '们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这';
return $captcha->entry();
默认的验证码字符已经剔除了易混淆的1l0o等字符
php验证码手册,验证码 - ThinkPHP 5.1 完全开发手册相关推荐
- C++手册_阿里新版《Java 开发手册(泰山版)》内容解读(附下载地址)
阿里的<Java开发手册>距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发 ...
- php记录读取数据类型,数据读取 · ThinkPHP 3.2.3开发手册 · 看云
# 数据读取 在ThinkPHP中读取数据的方式很多,通常分为读取数据.读取数据集和读取字段值. 数据查询方法支持的连贯操作方法有: 连贯操作 作用 支持的参数类型where 用于查询或者更新条件的定 ...
- 1.php查询数据,查询数据 - ThinkPHP 5.1 完全开发手册
基本查询 查询单个数据使用find方法: // table方法必须指定完整的数据表名 Db::table('think_user')->where('id',1)->find(); 最终生 ...
- php5.1文件包含,包含文件 - ThinkPHP 5.1 完全开发手册
在当前模版文件中包含其他的模版文件使用include标签,标签用法: {include file='模版文件1,模版文件2,...' /} 包含的模板文件中不能再使用模板布局或者模板继承. 使用模版表 ...
- php完全开发手册下载,thinkphp5完全开发手册
Tags: 51下载网提供<thinkphp5完全开发手册> CHM+PDF版本下载,该软件为免费软件,文件大小为807 KB,推荐指数4颗星,作为国产软件中的顶尖厂商,完全可以放心下载哦 ...
- 《Java 开发手册》重磅发布,向全球开发者致敬!
本文来自:阿里技术(ali_tech) 致全球Java开发者: 代码是二进制世界的交流方式,极致的代码是我们的荣耀. 历经13个月之后,华山版<Java开发手册>现身江湖,新增21处,修改 ...
- 重磅:《Java 开发手册》全面发布,向全球开发者致敬!
致全球Java开发者: 代码是二进制世界的交流方式,极致的代码是我们的荣耀. 2017年春天,<阿里巴巴Java开发手册>发布,我们希望在涵盖编程规约.异常日志.单元测试.安全规约.MyS ...
- 阿里巴巴《Java开发手册》2020最新版发布!
致全球Java开发者: 代码是二进制世界的交流方式,极致的代码是我们的荣耀. 2017年春天,<阿里巴巴Java开发手册>发布,我们希望在涵盖编程规约.异常日志.单元测试.安全规约.MyS ...
- 《Java开发手册》学习总结
前言 实际开发以来,总是觉得自己的代码不够优雅,但是往往学习的对象只单纯是同组/前人的代码以及自己的惯用编程习惯,后续发现阿里有出<Java开发手册>,便下了华山版进行学习并记录.学习完后 ...
最新文章
- SystemML大规模机器学习,优化算子融合方案的研究
- 【Word】如何把代码优美的插入word
- Field creation not permitted in partner development mode
- cwntos新建目录挂载磁盘_详解Linux磁盘挂载、分区、扩容操作的实现方法
- 在VirtualBox里复制VDI文件[转]
- 信息学奥赛一本通——1001:Hello,World!
- 天下会-百度搜索技巧语法大全
- 20151217jqueryUI--自动补全工具
- bzoj 3172: [Tjoi2013]单词 AC自动机
- msm8953抓取audio kernel dsp log
- VC 获取Windows所有用户的用户名
- 抽象类实现接口,子类继承抽象类,这三个之间的关系?
- 04748JAVA语言程序设计实践考试复习
- 3DMM(人脸3D形变统计模型)
- MATLAB代码美化器
- 如何批量导出QQ空间相册到电脑中
- 潘爱民:计算机程序的演进——我的程序人生三十年
- CSS复合选择器---后代选择器、子选择器、并集选择器、伪类选择器
- 爱立信发布人体通信技术:最高传输10Mbps
- Occupancy Map(Occupancy Grid)的更新