【发布时间】:2018-10-21 15:53:20
【问题描述】:
我在我的网站上使用 reCAPTCHA 已经有一段时间了,突然我意识到它已经停止工作了。 reCAPTCHA 在那里,但是在正确验证后,响应 FAILS 导致表单提交失败。
在客户端控制台,浏览器报错:
未捕获(承诺)无效加密。
我已尝试搜索此错误,但找不到类似的内容。 提交表单后,PHP中的服务器端验证失败。我不确定上面的错误是否相关,但是,它以前没有出现过。
客户端集成示例页面:
<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer>
</script>
</head>
<body>
<form action="?" method="POST">
<div class="g-recaptcha" data-sitekey="your_site_key"></div>
<br/>
<input type="submit" value="Submit">
</form>
</body>
</html>
服务器端验证PHP:
$response = json_decode(
file_get_contents(
"https://www.google.com/recaptcha/api/siteverifysecret=MY_SECRET&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR'] ), true );
if($response['success'] == false){
echo "FAIL";
} else {
//do something
}
我已按照here 找到的说明进行操作。
【问题讨论】:
-
对我来说,服务器响应仍然与客户端访问谷歌时获得的代码匹配。尽管如此,还是很奇怪。
-
我正在使用 zend 框架的表单模块来渲染 ReCaptcha 元素,我也开始遇到这个问题。
-
使用npmjs.com/package/react-google-invisible-recaptcha,目前遇到同样的问题..
-
我也遇到了这个问题。使用 VueJS vue-recaptcha 组件 (npmjs.com/package/vue-recaptcha)
标签: javascript php html recaptcha