PHP IP地址不正确?

时间:2014-05-16 14:30:53

标签: php

我差点撞到我的头......

我在这里和谷歌搜索了很多......但我不确定我做得对。

这是我的代码:

if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
{
  $ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
{
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
  $ip=$_SERVER['REMOTE_ADDR'];
}

$country= file_get_contents("http://ipinfo.io/$ip/json");
echo ($ip.'---'.$country);

问题是当我运行此代码时(不在localhost上,但在我的服务器上)...我看到一些像10.100.x.x的ip。

我得到的国家是空的。

但是当我访问http://ipinfo.io/时,我会看到一些不同的IP。它类似于182.183.x.x. 我可以正确地看到我的国家和城市信息。

我也尝试了其他一些IP定位器,并且所有人都说我的IP地址是182.183.x.x.我试图找到10.100.x.x.以及所有服务都返回空国家。

那么如何才能在php中获取真正的IP?我做错了什么?

1 个答案:

答案 0 :(得分:4)

182.183.x.x是互联网上的IP。

10.100.x.x是一个私人地址范围。对服务器的请求来自服务器LAN上的计算机。

或者:

  • 您的服务器与您的开发环境位于同一本地网络上,在这种情况下这是正常的(服务器会看到您工作站的IP地址,但第三方网站会看到您路由器的IP地址)并且无需担心关于
  • 您的服务器托管在代理后面(可能用于负载平衡或缓存),并且无法设置HTTP_X_FORWARDED_FOR标头。您需要查看托管服务的网络配置才能解决此问题。