在PHP 5.4之前运行使用$_SERVER['REMOTE_ADDR']
检索用户IPAddress时,结果将是用户外部IPV6 IPAddress。
EG: 60.123.456.168
但是,自从将服务器更新为PHP 5.4后,返回的用户IPAddress似乎是他们的内部IP: EG: 192.168.1.34
如果您希望特定办公室或“路由器”查看特定内容组或我们的案例调试代码,这将成为一个问题。
我尝试使用其他IP选项$_SERVER['HTTP_X_FORWARDED_FOR']
,但并非所有服务器都可以使用。
他们的另一种方法是在PHP> = 5.4中获取用户外部ipaddress还是已删除此功能?
答案 0 :(得分:1)
这甚至会检查代理服务器并仍然显示正确的用户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
?>
答案 1 :(得分:1)
这不是PHP的错。除了阅读环境变量之外,PHP不会检测任何内容 您可能有一些代理,但配置不正确。
答案 2 :(得分:0)
确定,
想出这个问题似乎是由于我们的Newb服务器设置。 因为服务器实际上是从本地主机运行并通过Windows联网(我不知道它到现在为止)。 这解释了为什么本地IPAddress即将到来。
虚警:)
感谢大家的帮助!