TP6验证码验证失败的原因以及解决办法-php教程

资源魔 60 0

起首应用Composer装置think-captcha扩大包:

composer require topthink/think-captcha

管制器引入

use think\captcha\facade\Captcha;
天生验证码
public function verify()
{
    return Captcha::create();
}

验证验证码

if( !Captcha::check($vercode)) {
    return json(['code'=>1001, 'msg'=>'验证码谬误');
}

check的办法

/**
 * 验证验证码能否正确
 * @access public
 * @param string $code 用户验证码
 * @return bool 用户验证码能否正确
 */
public function check(string $code): bool
{
    if (!$this->session->has('captcha')) {
        return false;
    }
 
    $key = $this->session->get('captcha.key');
 
    $code = mb_strtolower($code, 'UTF-8');
 
    $res = password_verify($code, $key);
 
    if ($res) {
        $this->session->delete('captcha');
    }
 
    return $res;
}

从以上check办法能够看进去验证码验证是需求session的,而Thinkphp6默许是没有开启的,需求依据手册初始化一下

正在使用app目次下找到全局两头件middleware.php文件,把上面正文的代码\think\middleware\SessionInit::class开启就好了

// 全局两头件界说文件
return [
    // 全局申请缓存
    // \think\middleware\CheckRequestCache::class,
    // 多言语加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
     \think\middleware\SessionInit::class
]

以上就是TP6验证码验证失败的缘由和处理方法的具体内容,更多请存眷资源魔其它相干文章!

标签: thinkphp php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!