ThinkPHP6项目基操(12.实战部分 验证码)
日期: 2020-12-03 分类: 跨站数据测试 373次阅读
TP6 有内置验证码插件,只需简单安装和配置即可使用,而且验证码的验证也非常方便,下面开始表演。
一、安装验证码
composer require topthink/think-captcha
二、模板中使用
将原来静态页面的验证码图片替换为{:captcha_img()}
,这个会自动生成验证码图片。
<div style="margin-left: 10px;">
{:captcha_img()}
</div>
生成的html代码为:
<img src="/captcha.html?0.12285642498823002" alt="captcha" onclick="this.src="/captcha.html?"+Math.random();">
从生成的代码可以看出,点击图片可以切换图片。生成的图片:
如果图片没有出来,检查下路径是否正确,路由是否正确。浏览器直接访问
http://tp6.com/captcha
也会显示二维码,如果没有显示就考虑路由的正确性。
三、修改验证码配置
在config
目录新建captcha.php
:
<?php
return [
'length' => 4,
'codeSet' => '0123456789',
'useCurve' => false
];
具体可配置的项:
参数 | 描述 | 默认 |
---|---|---|
codeSet | 验证码字符集合 | 略 |
expire | 验证码过期时间(s) | 1800 |
math | 使用算术验证码 | false |
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 |
四、自定义验证码
1. 创建
除了使用默认的方式{:captcha_img()}
,还可以通过think\captcha\facade\Captcha
类自行创建验证码。
<?php
namespace app\admin\controller;
use think\captcha\facade\Captcha;
class Verify
{
public function index(){
return Captcha::create();
}
}
通过这个控制器也能正常返回验证码:
2. 配置
自定义验证码也可以配置,可以在config/captcha.php
文件里定义一个配置,然后在创建的时候传入配置key即可:
captcha.php
:
<?php
return [
'length' => 4,
'codeSet' => '0123456789',
'useCurve' => false,
// 配置名称可以随意取
'my_set' => [
'length' => 3,
'codeSet' => 'abcdefg'
]
];
修改Verify
控制器:
return Captcha::create('my_set');
秀一下:
3. 使用
<img src="{:url('verify/index')}" class="layadmin-user-login-codeimg">
想要点击切换验证码,可以添加个onclick事件,自行仿照原生的做法。
五、验证
框架的内置验证功能:
$this->validate($data,[
'captcha|验证码'=>'require|captcha'
]);
如果没有使用内置验证功能,则可以调研内置的函数手动验证
if(!captcha_check($captcha)){
// 验证失败
};
这里需要注意的是
TP6
默认没有开启Session
,需要自行开启,而这里的验证码验证需要使用到session
功能,所以修改app目录下的中间件文件middleware.php
,将\think\middleware\SessionInit::class
的注释放开即可。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐