mewebstudio /验证码错误验证码

时间:2018-12-11 11:09:44

标签: php laravel laravel-5 laravel-5.1

我知道这个话题已经存在,但是没人能解决我的问题。
我使用的是mewebstudio/captcha库,一切都很好,但是当我提交时,它总是告诉我验证码是错误的。

我的验证规则:

'captcha' => 'required|captcha'

以我的html格式:

<?= captcha_img(); ?>
<input type="text" name="captcha">



我正在使用php5.6,Laravel 5.1和mews / captcha 2.2

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,希望对以后的人有所帮助。
嗯,这是库本身的错误,他们在其中删除会话密钥而不检查结果:

public function check($value)
{
    if ( ! $this->session->has('captcha'))
    {
        return false;
    }

    $key = $this->session->get('captcha.key');
    $sensitive = $this->session->get('captcha.sensitive');

    if ( ! $sensitive)
    {
        $value = $this->str->lower($value);
    }

    $this->session->remove('captcha');

    return $this->hasher->check($value, $key);
}

所以我的解决方案就是这样(您需要扩展类,重写方法并将类绑定到新的实现):

public function check($value)
{
    if ( ! $this->session->has('captcha'))
    {
        return false;
    }

    $key = $this->session->get('captcha.key');
    $sensitive = $this->session->get('captcha.sensitive');

    if ( ! $sensitive)
    {
        $value = $this->str->lower($value);
    }

    $isNotARobot = $this->hasher->check($value, $key);dd($isNotARobot);

    if ($isNotARobot) {
        $this->session->remove('captcha');
    }
    return $isNotARobot;
}