2015-09-16 160 views
-1

我想从其IP地址中检索访问者的城市,州和国家等信息,以便我可以根据其位置自定义我的网页。有没有一种好的可靠的方法来在PHP中做到这一点? 没有Java脚本,我使用这个代码,但结果是空的城市从IP地址获取城市

$user_ip = getenv('REMOTE_ADDR'); 
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip")); 
$city = $geo["geoplugin_city"]; 
$region = $geo["geoplugin_regionName"]; 
$country = $geo["geoplugin_countryName"]; 

echo "City: ".$city."<br>"; 
echo "Region: ".$region."<br>"; 
echo "Country: ".$country."<br>"; 

结果为城市不行千恩万谢

+0

只能用用户IP才能得到这些信息。你应该看看其他(更详细的)方法。 – Michel

+0

这是什么方法,我们需要感谢 – user2738924

+0

我刚刚尝试了一堆IP地址,我的例子没有返回任何'城市',但使用IP地址** 8.8.8.8 **城市返回(如_Mountain View_) 。因此,我认为一些IP地址已启用配置以防止位置跟踪或阻止本地化信息。 –

回答

0

地理位置逐IP的工作原理是积累映射IP地址到地理位置数据库。这些数据的来源各不相同,通常是公共IP分配记录的积累。作为一个背景,有一些机构负责管理IP地址的分配。有一个全球机构为较小的地区机构分配IP地址范围,并将这些IP地址进一步传递给更多本地组织(如ISP或托管公司),最终将这些IP地址分配给客户。

如果一个大的ISP接收到一系列IP地址,那么这可能是公众所知。但是,如果此ISP在跨区域运营,那么今天一个客户可能会收到地址,而完全不同的城市中的完全不同的客户明天可能会收到。 在任何时候都不知道这个IP分配给谁。 ISP运营的模糊地理区域是已知的,但是具体城市当前具有哪个IP地址的特定客户不是。