NoCaptcha 返回错误 invalid-json

2022-08-30 18:01:11

我将Google时髦的ReCaptcha NoCaptcha集成到一个简单的html5表单中。在localhost上,它正在工作,但在线测试它总是返回错误“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 对错误代码只字未提。猜想解决方案太简单了。


答案 1

我遇到了同样的问题,并使用cURL作为请求方法而不是POST来修复它。

$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\CurlPost());

答案 2

解决方案的关键是简单地打开php错误(我知道,这很尴尬)。这带来了让我苦苦挣扎的错误,同时也提供了解决方案:

PHP在连接到谷歌的https验证页面时遇到问题。那只是因为php中有一个选项.ini:allow_url_fopen

php.net 描述:

allow_url_fopen布尔值

此选项启用 URL 感知 fopen 包装器,这些包装器允许像文件一样访问 URL 对象。使用ftp或http协议为远程文件访问提供了默认包装器,某些扩展(如zlib)可能会注册其他包装器。

将其值从0更改为1解决了我的问题。更能说明在开发时打开php错误是多么重要(我是php编程的超级新手)

希望这能帮助某人一段时间!


推荐