captcha_check($captcha)的返回值总是false

来源:6-8 ajax登录-基本参数校验(普通方式校验)

dannydyf

2020-04-02

老师

关于在admin应用下的login控制器下的check方法中,加入以下代码:

if(!captcha_check($captcha)){
   return show(config("status.error"),lang('incorrect_captcha'));
}

但是captcha_check($captcha)的返回值总是false, 检查过app\middleware.php 内的 Session初始化已打开,如下:

// Session初始化
\think\middleware\SessionInit::class

我也试过 dump(session(‘captcha’))后,得到以下值

^ array:1 [
 "key" => "$2y$10$5VLql8/yKnkcuMQBgFvmwu9gv24n3uwDNMyfjFzVi1jtHS2aKa0kq"]

追踪到 \vendor\topthink\think-captcha\src\Captcha.php的以下位置,发现是$res 的值是false, 而 $code是获得我所输入的正确的验证码的。

 /**
     * 验证验证码是否正确
     * @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;
    }

请问是我哪里还没有设置好吗?

写回答

3回答

野生码农在线co腚

2020-04-03

追踪到 \vendor\topthink\think-captcha\src\Captcha.php的以下位置,发现是$res 的值是false

check方法每一步都打印了吗

halt($this->session->has('captcha'));

halt($this->session->get('captcha.key'))

...

...

0
6
dannydyf
回复
野生码农在线co腚
把环境重新搭建过就正常了,步骤没错,是测试环境惹得祸!
2020-04-03
共6条回复

dannydyf

提问者

2020-04-03

已经装了,验证码能正常显示的。

0
1
stevenfung
是否需要在全局的middleware.php设置,而不能在应用的middleware.php设置 SessionInit::class
2020-10-05
共1条回复

面对疾风吧SSS

2020-04-02

是不是没有composer扩展包呀

//img.mukewang.com/szimg/5e86001109010b2205860279.jpg

0
0

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1463 学习 · 1332 问题

查看课程