我正在测试我的用户登录/注册系统。我终于完成了表格,我已经测试了一段时间了。在我完成表格之前它正在工作,它在另一个页面上工作得很好,但是,它在我的注册页面上不起作用。它一直将成功发送为假。我的另一个页面是一个联系表格,它与我的注册页面没有什么不同。它里面有所有相同的文件。
当我显然不是机器人并且我只是在测试自己的代码时,我的错误代码不断向我显示我是机器人。
之前我以为代码存储在目录中的位置有问题,所以我尝试了一下。
然后,我想如果我改变了密钥,那么也许我会设法让系统再次工作。那没有用。
最后,我尝试重新排列我的 html 代码以使其正常工作,但这也不起作用。
现在,疯狂的部分,我仍然得到 0.9 的分数(在 recaptcha 网站上检查),这足以让我作为一个人通过,但是它仍然给我在 JSON 中的错误。
之前它工作得很好,但是,当我开始测试我的注册表单的输入验证时,它开始称我的响应为假。
这是我不断收到的错误。我不太确定格式化 JSON。这是用 php 函数返回的var_dump
。从技术上讲,它只是一条线。
object(stdClass)#13 (2)
{
["success"]=> bool(false)
["error-codes"]=> array(1)
{
[0]=> string(22) "missing-input-response"
}
}
这是我在一个名为 recaptcha.php 的文件中的脚本
<script src='https://www.google.com/recaptcha/api.js?render=<?php echo SITE_KEY; ?>'></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('<?php echo SITE_KEY; ?>', {action: 'homepage'}).then(function(token) {
document.getElementById('g-recaptcha-response').value=token;
});
});
</script>
编辑/
添加了一些额外的代码。一个php函数。常量 SECRET_KEY 被定义为另一个文件中的全局变量。
function getCaptcha($secretKey) {
$response =
file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=" . SECRET_KEY . "&response={$secretKey}");
$reCaptcha = json_decode($response);
return $reCaptcha;
}
这包括在我验证验证码的地方。
$reCaptcha = getCaptcha($_REQUEST['g-recaptcha-response']);
var_dump($reCaptcha);
如果这有帮助。
我期待它变成["success"]=> bool(true)
但是,我什至不知道有什么问题。我已经准备好让 Google 打电话来解决这个问题。任何人都可以帮忙吗?