ReCAPTCHA始终不正确

时间:2015-03-09 17:35:58

标签: php curl recaptcha

我有一个带有recaptcha的页面,它已经运行了两个月没有任何问题。但现在,几天以来,它一直表现得很奇怪。我曾多次尝试过,但验证码根本就不起作用,验证部分。

这是代码

$captcharesponse = test_input($_POST["g-recaptcha-response"]);
$status = captcha($captcharesponse);
...
function captcha($t){
    $captcharesponse = $t;
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
    curl_setopt($curl, CURLOPT_POSTFIELDS, 'secret=7...PRIVATE_KEY...S&response=' . $captcharesponse);

    $result = json_decode(curl_exec($curl), true);
    curl_close($curl);

    if($result['success'] == false){
        error_log(date("Y-M-d, D h:i:s A") . " : Result = " . $result['success'] . ", and error = " . $result['error-codes']);
    }
    return $result['success'];      
}

无论如何,即使我甚至没有进入验证码,页面仍然需要太长时间,因此没有任何工作。请注意,如果验证码错误,则只会跳过其他内容,因此其他因素无法导致延迟。

提前致谢

PS。我没有使用任何类型或库或任何东西,它确实使用了一段时间没有任何问题。

'test_input()'代码:

function test_input($data){
       $data = trim($data);
       $data = stripslashes($data);
       $data = htmlspecialchars($data);
       return $data;
}

2 个答案:

答案 0 :(得分:1)

问题已经解决, 显然这是reCAPTCHA结束时的一个问题。上面提供的代码现在运行得很完美,所有慢速性能问题也已得到解决。

谢谢大家。

PS。如果需要,其他人可以使用此代码。

答案 1 :(得分:0)

我想使用recaptcha库,可在以下位置找到:

https://github.com/google/recaptcha

首先,下载文件,最重要的是recaptchalib.php(你可以点击右边的download zip按钮下载所有文件)。

然后将其解压缩到您的文件夹并像解压缩的示例一样使用它(example-recaptcha.php):

<?php
require_once "recaptchalib.php";

// Register API keys at https://www.google.com/recaptcha/admin
$siteKey = "YOURSITEKEY";
$secret = "YOURSECRET";
$lang = "en";
$resp = null; // The response from reCAPTCHA
$error = null; // The error code from reCAPTCHA, if any
$reCaptcha = new ReCaptcha($secret);

if ($_POST["g-recaptcha-response"]) { // Was there a reCAPTCHA response?
    $resp = $reCaptcha->verifyResponse(
        $_SERVER["REMOTE_ADDR"],
        $_POST["g-recaptcha-response"]
    );
}
?>
<html>
  <head><title>reCAPTCHA Example</title></head>
  <body>
<?php
if ($resp != null && $resp->success) {
    echo "You got it!";
}
?>
    <form action="" method="post">
      <div class="g-recaptcha" data-sitekey="<?php echo $siteKey;?>"></div>
      <script type="text/javascript"
          src="https://www.google.com/recaptcha/api.js?hl=<?php echo $lang;?>">
      </script>
      <br/>
      <input type="submit" value="test recaptcha" />
    </form>
  </body>
</html>