geting发布数据的服务器IP

时间:2017-11-28 14:52:07

标签: php http-post

我使用以下代码将一些数据从一台服务器发布到另一台服务器:

      $data2 = http_build_query(
          array(
              'desc' => $desc
          )           );
                  $options = array('http' =>
          array(
          'method'  => 'POST',
          'header'  => 'Content-type: application/x-www-form-urlencoded',
          'content' => $data2
          )           );
              $context  = stream_context_create($options);            // post request             $result = file_get_contents($payment_url, false, $context);
      $result = @json_decode($result, true);

我想确保从正确的服务器发出POST后,我必须检查服务器IP发布此数据。但是$ _SERVER ['SERVER_ADDR']给了我错误的IP(实际上给了我目标的服务器IP而不是发布服务器IP)。

1 个答案:

答案 0 :(得分:0)

在您要发布数据的服务器上,您可以使用$_SERVER['REMOTE_ADDR']来获取发出请求的设备的IP地址,如下所示:

$ip_address = $_SERVER['REMOTE_ADDR'];

if($ip_address == 'Your.Server.Ip.Address.'){

    // do stuff

} else {

    // deny request

}

您当前使用的变量SERVER_ADDR列出了执行脚本的服务器的IP地址。有关php的$ _SERVER变量的更多信息,请查看documentation,因为它们可以很好地解释所有内容。

如果您希望在服务器级别处理此问题,则另一个选项是通过ip地址限制对脚本所在目录的访问。 This article详细解释了这一点(如果你的apache)。