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

下一篇: cannot add a jar to scala repl with the :cp command