我差点撞到我的头......
我在这里和谷歌搜索了很多......但我不确定我做得对。
这是我的代码:
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?我做错了什么?
答案 0 :(得分:4)
182.183.x.x
是互联网上的IP。
10.100.x.x
是一个私人地址范围。对服务器的请求来自服务器LAN上的计算机。
或者:
HTTP_X_FORWARDED_FOR
标头。您需要查看托管服务的网络配置才能解决此问题。