【发布时间】:2016-05-29 05:54:49
【问题描述】:
我正在尝试通过 AJAX 发送 recaptcha 密钥,一切似乎都正常,但由于某种原因 php recaptcha sdk 没有返回错误,但响应不成功。
这是我的 PHP 代码:
$recaptcha = new \ReCaptcha\ReCaptcha($user->secret);
$resp = $recaptcha->verify($data['g-recaptcha-response'], request()->ip());
if ($resp->isSuccess()) {
//Success
}else{
return response()->json([
'message' => 'Recaptcha error',
'errors' => $resp->getErrorCodes(),
], 401);
}
Ajax 请求:
$.ajax({
type: 'POST',
url: 'http://localhost/endpoint',
datatype: 'json',
cache: false,
data: {
email: document.getElementById('register_email').value,
password: document.getElementById('register_password').value,
password_confirmation:document.getElementById('register_re_password').value,
first_name:document.getElementById('register_first').value,
last_name:document.getElementById('register_last').value,
'g-recaptcha-response': grecaptcha.getResponse(widgetId2)
},
success: function(result) {
window.alert('Success');
grecaptcha.reset(widgetId2);
},
error: function(result) {
window.alert(result.responseJSON);
}
});
然后回应:
{message: "Recaptcha error", errors: []}
这个秘密是有效的,因为如果我输入一个无效的 g-recaptcha-response 它会抛出正确的错误,如果我改变这个秘密也会发生同样的错误。
【问题讨论】:
-
认为您错过了添加收到的回复。
-
抱歉,我把响应放在最后,而不是在“And response:”行旁边。
标签: php ajax laravel-5.1 recaptcha