noCaptcha reCaptcha中的响应值始终为false

时间:2015-07-23 18:22:17

标签: php recaptcha

我的目标是使用google" noCaptcha reCaptcha"如果用户是网站联系表单上的人,则验证机制。我不是一个非常有经验的Web开发人员,因此我不得不查阅有关PHP和POST方法的几个教程。

我现在已经开始工作到了这一点,我得到了谷歌的回复,但是"成功" POST请求返回的元素始终为false,即使网页上的图形元素说它没问题。同一请求返回的错误代码是" NULL",我认为这是件好事。

我在这里误解了什么吗?对此特定错误的所有研究仅发现了未分配响应值或存在某种错误消息的情况。

我在这里使用谷歌的API(link to the used API)进行reCaptcha,因为尝试发送HTTP-Request对象并使用curl flat out不起作用。在第一种情况下,我猜这是因为缺少库而在第二种情况下"响应"总是有一个" 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.";

}

2 个答案:

答案 0 :(得分:1)

代码应为:

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

根据example

答案 1 :(得分:0)

因为您在本地主机上运行它,请转到Google上的recaptche设置页面,然后添加一个包含域名的新配置文件:localhost

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