recaptcha 2.0 php服务器端出现问题

recaptcha 2.0 php服务器端出现问题,php,recaptcha,Php,Recaptcha,我拼命想让我的表格工作 但是我在验证recaptcha服务器端时遇到问题。 我已经环顾四周,对我的表格进行了上千次的测试,我知道它没有通过recaptcha的步骤,但我无法理解它 以下是我的代码: //variable : $recaptcha = $_POST['g-recaptcha-response']; //test captcha if($recaptcha != '') { $secret = " MY KEY HERE"; $ip = $_SERVER['REMO

我拼命想让我的表格工作

但是我在验证recaptcha服务器端时遇到问题。
我已经环顾四周,对我的表格进行了上千次的测试,我知道它没有通过recaptcha的步骤,但我无法理解它

以下是我的代码:

//variable :
$recaptcha = $_POST['g-recaptcha-response'];

//test captcha
if($recaptcha != '')
{
    $secret = " MY KEY HERE";
    $ip = $_SERVER['REMOTE_ADDR'];
    $var = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip);
    $array = json_decode($var,true);

    //check if captcha ok then check fields empty
    if($array['success'])
如果您发现任何错误,请告诉我。
非常感谢。 (事实上,我删除了我的安全密钥)

尝试以下操作: $secret=“YOUR-secret-KEY”


在我的测试中,我遇到了两个您可能遇到的问题

  • remoteip
    参数是可选的。当我把它取下来时,一切都正常了。原因如下:我在防火墙后面的私有IP上使用客户端和服务器计算机进行测试,因此我服务器上的
    $\u server['REMOTE\u ADDR']
    值为192.168.x.x。谷歌看到了我的NAT防火墙的公共IP,这就是
    sitevirify
    试图匹配的

  • 您只能检查一次给定的
    响应。如果您再次尝试检查它,它将始终失败。因此,在测试过程中,每次都需要使用一个新的

  • 此外,您还可以使用:

    “…siteverify?secret=$secret&response=$recaptcha”)

    错误,对api的请求不应该是post请求吗?你的意思是什么?根据。这个方法应该是POST。API说POST,但GET实际上工作得很好,更容易编码,而且同样安全。
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']);
    $googleResponse = json_decode($verifyResponse);
    if ($googleResponse->success)
    {
        $captchaVerified = true;
    }