当前位置:Gxlcms > PHP教程 > 必看!TP6验证码验证失败的原因及解决方法

必看!TP6验证码验证失败的原因及解决方法

时间:2021-07-01 10:21:17 帮助过:282人阅读

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

  1. composer require topthink/think-captcha

控制器引入

  1. use think\captcha\facade\Captcha;

生成验证码

  1. public function verify()
  2. {
  3. return Captcha::create();
  4. }

验证验证码

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

check的方法

  1. /**
  2. * 验证验证码是否正确
  3. * @access public
  4. * @param string $code 用户验证码
  5. * @return bool 用户验证码是否正确
  6. */
  7. public function check(string $code): bool
  8. {
  9. if (!$this->session->has('captcha')) {
  10. return false;
  11. }
  12. $key = $this->session->get('captcha.key');
  13. $code = mb_strtolower($code, 'UTF-8');
  14. $res = password_verify($code, $key);
  15. if ($res) {
  16. $this->session->delete('captcha');
  17. }
  18. return $res;
  19. }

从以上check方法可以看出来验证码验证是需要session的,而Thinkphp6默认是不开启的,需要根据手册初始化一下

在应用app目录下找到全局中间件middleware.php文件,把下面注释的代码\think\middleware\SessionInit::class开启就行了

  1. // 全局中间件定义文件
  2. return [
  3. // 全局请求缓存
  4. // \think\middleware\CheckRequestCache::class,
  5. // 多语言加载
  6. // \think\middleware\LoadLangPack::class,
  7. // Session初始化
  8. \think\middleware\SessionInit::class
  9. ];

以上就是必看!TP6验证码验证失败的原因及解决方法的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行