我使用以下代码将一些数据从一台服务器发布到另一台服务器:
$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)。
答案 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)。