PHP$服务器[';远程地址';]不再按预期为用户提供ipaddress?
在PHP 5.4之前,当使用PHP$服务器[';远程地址';]不再按预期为用户提供ipaddress?,php,Php,在PHP 5.4之前,当使用$\u SERVER['REMOTE\u ADDR']运行检索用户IPAddress时,结果将是用户的外部IPV6 IPAddress。 例:60.123.456.168 但是,由于将我的服务器更新为PHP 5.4,返回的用户IP地址似乎是他们的内部IP: 例:192.168.1.34 如果您希望特定的办公室或“路由器”查看特定的内容组,或者在我们的示例中是调试代码,那么这将成为一个问题。 我尝试使用另一个IP选项$\u SERVER['HTTP\u X\u FORW
$\u SERVER['REMOTE\u ADDR']
运行检索用户IPAddress时,结果将是用户的外部IPV6 IPAddress。
例:60.123.456.168
但是,由于将我的服务器更新为PHP 5.4,返回的用户IP地址似乎是他们的内部IP:
例:192.168.1.34
如果您希望特定的办公室或“路由器”查看特定的内容组,或者在我们的示例中是调试代码,那么这将成为一个问题。
我尝试使用另一个IP选项$\u SERVER['HTTP\u X\u FORWARDED\u']
,但这在所有服务器上都不可用
在PHP>=5.4中,他们是获取用户外部ip地址的另一种方法,还是已经删除了此功能?这甚至可以检查代理服务器并仍然显示正确的用户ip
<?php
function get_real_ip()
{
if (isset($_SERVER["HTTP_CLIENT_IP"]))
{
return $_SERVER["HTTP_CLIENT_IP"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED"]))
{
return $_SERVER["HTTP_X_FORWARDED"];
}
elseif (isset($_SERVER["HTTP_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_FORWARDED"]))
{
return $_SERVER["HTTP_FORWARDED"];
}
else
{
return $_SERVER["REMOTE_ADDR"];
}
}
$IP_Address = get_real_ip();
echo $IP_Address
?>
这不是PHP的错。PHP除了读取环境变量外,什么都检测不到。
您可能有一些未正确配置的代理 好的 发现这个问题似乎是由于我们的新服务器设置。 因为服务器实际上是从本地主机运行的,并通过Windows联网(到目前为止我还不知道)。 这就解释了为什么会出现本地IP地址 假警报:)
谢谢大家的帮助
print\r($\u服务器)代码>,它在那里吗?你在本地主机上运行脚本吗?附言。是的,我在Stack Exchange和Google中搜索了这个,然后问:)不,luckIm在实时服务器上运行脚本,不,外部IP在$server global中找不到她启动了没有包含正确IP的服务器变量,因此这无助于你的常识,与其口口声声说它不起作用,不如把php上传到服务器上,看看结果如何?我甚至在运行CyberGhost 5时进行了测试