【问题标题】:Google No-captcha and PHP谷歌无验证码和 PHP
【发布时间】:2014-12-10 22:06:08
【问题描述】:

我正在尝试在我的网站上实施新版本的验证码。

到目前为止我做了什么:

表格内:

echo '<div class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"></div>';

PHP 内部:

$recaptcha = $_POST['g-recaptcha-response'];

if(!empty($recaptcha))
{

    $google_url = "https://www.google.com/recaptcha/api/siteverify";
    $secret = 'YYYYYYYYYYYYYYYYYYYYYYYYYYY';
    $ip = $_SERVER['REMOTE_ADDR'];
    $url = $google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
    $res = getCurlData($url);
    $res = json_decode($res, true);


    if($res['success'] == 'false')
    {
       $captcha_error = "Please re-enter your reCAPTCHA.";
    }

}

getCurlData 函数:

function getCurlData($url)
{

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
  $curlData = curl_exec($curl);
  curl_close($curl);
  return $curlData;
}

我想要实现的是在选中无验证码框时进行区分。如果他/她没有选中该框,我想向用户抛出错误。

到目前为止,如果 Google 的响应是“我们不确定您是否是人类,请继续进行我们的第二级验证”,我只会抛出错误 [if($res['success'] == 'false' )]。

PS:大部分代码都是由 Srinivas Tamada 编写的。你可以找到它here

提前致谢。

【问题讨论】:

    标签: php html captcha


    【解决方案1】:

    响应是一个 JSON 对象:

    {
      "success": true|false,
      "error-codes": [...]   // optional
    }
    

    https://developers.google.com/recaptcha/docs/verify

    如果你解析那个 JSON,你会得到这样的结果:

    object(stdClass)[1]
      public 'success' => boolean false
      public 'error-codes' => 
        array (size=1)
          0 => string 'missing-input-response' (length=22)
    

    因此,如果响应包含带有“missing-input-response”的错误代码,您可以判断用户没有点击复选框。

    我在最近写的小库中实现了 No Captcha without curl ,所以如果你想了解更多细节,可以查看: https://github.com/zoran-petrovic-87/ZorAuth

    http://zoran87.blogspot.com/2014/12/zorauth-10b-complete-flexible-no.html

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多