$ _SERVER对我不起作用

时间:2013-12-30 19:24:18

标签: php

即时通讯使用以下代码来获取客户端IP当我尝试通过它获取我的IP它说103.245.196.41但我的实际IP是10.100.210.5。我的代码:

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (!empty($_SERVER['REMOTE_ADDR'])) {
    $ip=$_SERVER['REMOTE_ADDR'];
}

1 个答案:

答案 0 :(得分:6)

您可能正在进行地址转换的路由器(NAT)。 10.100.210.5是reserved internal ip,不能在互联网上使用。 103.245.196.41是您的ISP(Internet服务提供商)分配给您的路由器的外部IP。

因此,您的计算机(10.100.210.5)通过路由器访问您的脚本,该路由器屏蔽您的内部IP并显示外部(103.245.196.41)IP。

当数据从互联网返回给您时,NAT路由器知道将其发送回本地网络上的计算机。

这是一件好事,允许您拥有一个无人可以从外部访问的专用网络。