SERVER ['REMOTE
不知何故, $_SERVER['REMOTE_ADDR']
返回一个空字符串,我有相同的代码(作为脚本的一部分)在多台服务器上运行,并且它可以在其他地方工作,它们都是相同的设置。
奇怪的是,当我重新启动apache并加载页面时,它只能运行一次,如果我在此之后重新加载站点+,它就是空的。 我有其他人尝试,结果相同,为空。
有人建议这是IPv6配置,我现在已经完全禁用IPv6,但问题仍然存在。
如果您位于代理服务器后面,则可以使用$_SERVER['HTTP_X_FORWARDED_FOR']
或$_SERVER['HTTP_CLIENT_IP']
而不是$_SERVER['REMOTE_ADDR']
。 这将取决于您的代理如何配置。
是的,REMOTE_ADDR可能是空的。 所以如果你想要的话,你可以使用这个代码来获取基于HTTP_X_FORWARDED_FOR的IP
<?php
if(! empty($_SERVER['REMOTE_ADDR']) ){
$ip = $_SERVER['REMOTE_ADDR'];
}
else{
$ip = empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : $_SERVER['HTTP_X_FORWARDED_FOR'];
}
我首先检查REMOTE_ADDR,因为它更可靠,有时HTTP_X_FORWARDED_FOR可能被用户欺骗
我在一个看起来像这样的新虚拟机上有代码。 它是从一个JavaScript文件中调用的:
<?php
$hostip = $_SERVER['REMOTE_ADDR'];
?>
var myip = "<?=$hostip ?>";
当然,在旧的服务器上工作,我一直在挠头,认为Apache有问题。有没有一个模块失踪? 一些模糊的Apache设置我找不到? 我以为Apache没有发送服务器变量。 直到我尝试了简单的方式,它的工作原理:
echo $_SERVER['REMOTE_ADDR'];
原来,我不得不编辑php.ini并将short_open_tag设置为On 。 Facepalm - 快捷php标签不起作用。 希望这将有助于拯救别人的时间:)
链接地址: http://www.djcxy.com/p/73263.html上一篇: SERVER['REMOTE