2014-04-01 25 views
0

在PHP 5.4运行之前,使用$_SERVER['REMOTE_ADDR']检索用户IPAddress时,结果将是用户外部IPV6 IPAddress。 EG:60.123.456.168

但是因为我的服务器升级到PHP 5.4返回用户ip地址似乎是他们的内部IP: EG:192.168.1.34

,如果你想这将成为一个问题一个特定的办公室或'路由器'来查看特定的一组内容,或者在我们的情况下调试代码。 我尝试使用其他IP选项$_SERVER['HTTP_X_FORWARDED_FOR'],但这不适用于所有服务器。

是他们在PHP> = 5.4中获取用户外部ipaddress的另一种方式,或者是否已删除此功能?

+1

'print_r($ _ SERVER);',它在那里吗? –

+1

你在本地主机上运行脚本吗? –

+0

P.s.是的,我在Stack Exchange和Google上搜索过,然后才问:)没有运气 – ChristoKiwi

回答

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 
?> 
+0

我想知道如果PHP用户永远停止使用这个错误代码 –

+0

有问题?它到目前为止我工作得很好 –

+0

只是重新测试,它工作 –

1

这不是PHP的过错。 PHP不检测任何东西,只是读取环境变量。
您可能有一些代理服务器,但没有正确配置。

0

好的,

找出这个问题似乎是由于我们的Newb服务器设置。 由于服务器实际上是从本地主机运行并通过Windows联网(我不知道这是直到现在)。 这解释了为什么本地IP地址即将出现。

虚惊:)

谢谢大家对你的帮助,但!

相关问题