我将Googles funky ReCaptcha NoCaptcha集成到一个简单的html5表单中。在本地主机上,它是工作的,但在线测试总是返回错误'invalid-json‘。下面是我的代码的一部分:
$secret = 'TEHSEHCRET';
$recaptcha = new \ReCaptcha\ReCaptcha($secret);
$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
if ($resp->isSuccess()) {
// do some
}
else {
print_r($errors = $resp->getErrorCodes());
}
返回Array ( [0] => invalid-json )
我用谷歌搜索了一些帮助,但没有找到真正有帮助的东西。
由于上线和下线的代码是一样的,我真的不知道问题是从哪里来的。https://developers.google.com/recaptcha/docs/verify对错误代码没有任何说明。我猜这个解决方案太简单了。
发布于 2015-06-15 22:47:00
我也有同样的问题,通过使用cURL作为请求方法而不是POST来修复它。
$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\CurlPost());
发布于 2016-02-08 21:22:29
这为我解决了这个问题:
//$recaptcha = new \ReCaptcha\ReCaptcha($secret);
// If file_get_contents() is locked down on your PHP installation to disallow
// its use with URLs, then you can use the alternative request method instead.
// This makes use of fsockopen() instead.
$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());
发布于 2020-04-01 02:17:12
如果您正在使用带有SocketPost
请求方法的Google PHP客户端库< 1.2.4,那么您需要更新到reCAPTCHA 1.2.4,或者您应该切换到CurlPost
,因为≥服务器响应已经更改:https://github.com/google/recaptcha/issues/359
https://stackoverflow.com/questions/30106668
复制相似问题