ThinkPHP6登录页面使用验证码

搭建后台时,登录页面需要验证码防止暴力破解,在一般的商城中的登录注册中也经常见得到验证码,下面简单介绍下ThinkPHP6中如何在登录注册页面中使用验证码

1、首先使用Composer安装think-captcha扩展包:

composer require topthink/think-captcha

2、生成验证码

(1)生成验证码 url 路径,然后 img 标签中引入(推荐)

<div><img src="https://www.yozhisan.com/article/8/{:captcha_src()}" alt="captcha" /></div>

(2)直接生成 img 标签的验证码

<div>{:captcha_img()}</div>

注:上面两种如果是多应用模式下,你需要自己注册一个验证码的路由,如下

Route::get('captcha/[:config]','\\think\\captcha\\CaptchaController@index');

(3)自定义生成验证码,在控制器中生成,如下

控制器中记得要引入

use think\captcha\facade\Captcha;
<?php
namespace app\index\controller;
use think\captcha\facade\Captcha;
class Index
{
public function verify()
{
return Captcha::create();
}
}

接下来给验证码地址注册路由

Route::get('verify','index/verify');

最后在页面中生成验证码

<img src="https://www.yozhisan.com/article/8/{:url('index/verify')}" alt="captcha" />

3、验证验证码

(1)在验证器中验证

$this->validate($data,[
'captcha|验证码'=>'require|captcha'
]);

(2)使用内置的函数手动验证

if(!captcha_check($captcha)){
// 验证失败
};

(3)使用Captcha类的check方法验证

$captcha = new Captcha();
if( !$captcha->check($value))
{
// 验证失败
}

特别提醒:验证码库需要开启Session才能生效,开启如下

在应用app目录下找到全局中间件middleware.php文件,去除session中间件的注释

<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// \think\middleware\CheckRequestCache::class,
// 多语言加载
// \think\middleware\LoadLangPack::class,
// Session初始化
\think\middleware\SessionInit::class
];

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索