【问题标题】:New Google ReCaptcha not posting/receiving 'g-recaptcha-response'新的 Google ReCaptcha 未发布/接收“g-recaptcha-response”
【发布时间】:2015-02-25 08:17:17
【问题描述】:

我正在尝试在我的网站上实施 Google 的新“NoCaptcha”。到目前为止,我的小部件看起来很好,但它没有在我的 PHP 页面上验证。

我的代码是这样设置的:

在<head>

<script src='https://www.google.com/recaptcha/api.js'></script>

客户端:

<form id="contactform" action="bookingverify.php" method="POST">
<input type="text" name="name" size="41">
<!--OTHER FORM INPUTS-->
<div class="g-recaptcha" data-sitekey="mypublickey"></div>
</form>

服务器端(bookingverify.php)

  $captcha;
  if(isset($_POST['g-recaptcha-response'])){
       $captcha=$_POST['g-recaptcha-response'];
     }
  if(!$captcha){
      echo '<h2>Please check the the captcha form.</h2>';
       exit;
   }

  $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);

  if($response.success==false){
          echo '<h2>You are spammer</h2>';
  }
  else{
     //SEND MAIL
  }

我尝试回显$_POST['g-recaptcha-response'],但它显示为空。就像那个变量没有被发布到 php 中一样。

有人知道我在这里做错了什么吗?

【问题讨论】:

    标签: php captcha recaptcha


    【解决方案1】:

    您的代码使用我自己的私钥/公钥在我的测试服务器上运行良好。这似乎微不足道,但我必须添加的唯一一件事 - 你的其他表单输入中有提交按钮吗?这就是将数据实际发布到您的 PHP 脚本的内容。

    <input type="submit">
    </form>
    

    否则,将 var_dump($_POST['g-recaptcha-response']); 添加到您的 bookingverify.php 并查看它的输出。

    【讨论】:

    • 是的,抱歉,我已将提交按钮放入 - 只是忘记将其包含在上面。当我进行转储时,我只是得到 NULL - PHP 只是没有接收到私钥数据
    • 我有同样的 MeltingDog 问题,我不知道如何解决它
    【解决方案2】:

    好的,我不知道为什么,但我删除了第二个 IF 语句中的 exit; 并且它起作用了。很奇怪。

    【讨论】:

    • 我和你有同样的问题。但是你需要那个出口,否则他们甚至可以在不进行验证的情况下通过,哈哈。我不确定为什么会这样。
    【解决方案3】:

    我也有类似的问题。显然,如果您不单击复选框,则 $_POST['g-recaptcha-response'] 为空。所以只要确保你在测试时点击它

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多