noCaptcha中的响应值总是false


Response value in noCaptcha reCaptcha always false

我的目标是使用谷歌的"noCaptcha reCaptcha"机制来验证,如果用户是一个人在一个网站的联系表单上。我不是一个很有经验的web开发人员,所以我不得不查找一些PHP和post方法的教程。

我现在得到了它的工作点,在那里我从谷歌得到一个响应,但是POST请求返回的"成功"元素的值总是假的,即使网页上的图形元素说它是好的。同样的请求返回的错误代码是"NULL",我想这是一件好事。

我误解了什么吗?所有关于此特定错误的研究都只出现了响应值未分配或存在某种错误消息的情况。

我使用谷歌的API(链接到使用的API)的reCaptcha在这里,因为尝试发送HTTP-Request对象和使用curl平面没有工作。在第一种情况下,我猜这是因为缺少库,在第二种情况下,"response"总是得到一个"NULL"值(或者更确切地说没有值,因为这是默认值)。

在以下代码部分中,$secret是来自google的密钥,$response是来自$_POST["g-recaptcha-response"]的验证码发送的代码。邮件代码本身工作得很好,我之前单独测试过。

$reCaptcha = new ReCaptcha($secret);
if ($response) {
  $answer = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], $response);
} else {
  echo "There has been an error with the authentication";
}
var_dump($answer);
if ($answer != NULL && $answer->success) {
  $err = mail($recipient, $subject, $mailtext, implode("'r'n", $headers));
  if ($err == false) {
    echo "The mail could not be sent.";
  }
  echo "The E-Mail was sent.";
} else {
echo "Your identity could not be verified.";
}

代码应该是:

if ($answer != NULL && $answer->success) {

按照示例

这是因为你是在你的本地主机上运行它,去谷歌上的重置设置页面,并添加一个新的配置文件与域名:localhost

添加新配置文件后,不要忘记更改站点密钥和秘密。