【问题标题】:Google reCaptcha working on local server but not in online serverGoogle reCaptcha 在本地服务器上工作,但不在在线服务器上
【发布时间】:2016-10-20 11:12:31
【问题描述】:

我正在为一个待售域名填写查询表,并对其实施了 google reCaptcha。 reCaptcha 在我的本地服务器上使用 xampp 运行良好,但是当我将它上传到服务器上时,即使我检查了验证码,它总是响应成功 = false。这是我的代码:

    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $privatekey = "KEY"; 

    $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);

    $data = json_decode($response);

    if(isset($data->success) AND $data->success==true){
        //some code
    }
    else{
        //some code
    }

我为本地开发和实时开发使用单独的密钥。我相信当我将它上传到服务器时,我使用了正确的密钥和站点密钥。知道为什么会这样吗?

【问题讨论】:

  • 根据live url生成api key。它会起作用的..!
  • 您的$data 对象包含error-codes 属性。这会告诉你出了什么问题。
  • 我已经尝试在我的本地服务器中转储 recaptcha 响应,但他们没有错误代码
  • 尝试在两台服务器上查看var_dump($response)。您应该总是看到 JSON 格式的字符串。如果没有,您的 HTTPS URL 不起作用。有关您可以进行的讨论和测试,请参阅 [stackoverflow.com/questions/1975461/…

标签: php recaptcha


【解决方案1】:

我对此的第一直觉是区分大小写。这意味着该目录已被 Windows 赋予一个(或多个)大写字母。虽然 Windows 将大小写视为相同,但其他操作系统则不然。

所以,我建议在服务器上仔细检查所有文件和目录名称是否都是小写的。希望这能解决您的问题。

【讨论】:

  • 区分大小写可能不是这里的问题。 file_get_contents("https://... 会被 PHP 拦截,永远不会传递给 Windows 文件系统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
相关资源
最近更新 更多