PHP IP地址不正确? [复制]

Posted

技术标签:

【中文标题】PHP IP地址不正确? [复制]【英文标题】:PHP IP Address is not correct? [duplicate] 【发布时间】:2014-07-05 01:26:51 【问题描述】:

我差点撞到头……

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

这是我的代码:

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);

问题是当我运行这段代码时(不是在本地主机上,而是在我的服务器上)...我看到一些 ip 像 10.100.x.x。

我得到的国家是空的。

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

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

那么我怎样才能在php中获取我的真实IP呢?我做错了什么?

【问题讨论】:

【参考方案1】:

182.183.x.x 是 Internet 上的 IP。

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

要么:

你的服务器和你的开发环境在同一个局域网,这种情况是正常的(服务器看到的是你工作站的IP地址,但是第三方网站看到的是你路由器的IP地址),不用担心关于 您的服务器托管在代理后面(可能用于负载平衡或缓存),并且无法设置 HTTP_X_FORWARDED_FOR 标头。您需要查看托管服务的网络配置来处理这个问题。

【讨论】:

他是对的。听起来您正在使用 AWS、Azure 等虚拟主机。您可以在 forum.piwik.org/read.php?2,71051,84063 了解有关如何解决 IP 问题的更多信息 您解释了原因,但没有提供任何答案。这似乎是一个最好作为评论放置的答案。 啊...我只记得服务器在一些负载平衡器后面...谢谢昆汀...

以上是关于PHP IP地址不正确? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL中有一列是IP地址,如何按IP地址的最后一位排序??(前3位都一样)

如何在 PHP 中识别服务器 IP 地址

如何查询订阅者的 IP 地址? [复制]

使用PHP将IP地址存储在MySQL数据库中[重复]

在EXCEL中有一列是IP地址,如何按IP地址的最后一位排序??(前3位都一样)

shell脚本--判断输入的ip是否正确