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位都一样)