我知道这个话题已经存在,但是没人能解决我的问题。
我使用的是mewebstudio/captcha
库,一切都很好,但是当我提交时,它总是告诉我验证码是错误的。
我的验证规则:
'captcha' => 'required|captcha'
以我的html格式:
<?= captcha_img(); ?>
<input type="text" name="captcha">
我正在使用php5.6,Laravel 5.1和mews / captcha 2.2
答案 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;
}