从 IP 地址获取城市
Posted
技术标签:
【中文标题】从 IP 地址获取城市【英文标题】:Getting the city from an IP address 【发布时间】:2015-09-16 09:20:29 【问题描述】:我想从访问者的 IP 地址中检索他们的城市、州和国家/地区等信息,以便我可以根据他们的位置自定义我的网页。在 php 中有没有好的可靠的方法来做到这一点? 没有 java 脚本,我正在使用此代码,但城市的结果为 null
$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>";
城市的结果不起作用非常感谢
【问题讨论】:
您无法仅通过用户 IP 准确获取这些信息。你应该看看其他(更详细的)方法。 我们需要什么方法谢谢 我只是尝试了一堆IP地址,例如我的没有返回任何city
,但是使用IP地址返回8.8.8.8城市(如山景)。所以我认为一些 IP 地址启用了配置来防止位置跟踪或阻止本地化信息的东西。
get region/city from ip 的可能重复项
@Zeratops 或者,不那么险恶的解释:这个城市根本不为人所知。 IP 地理定位并不是一门精确的科学。
【参考方案1】:
Geolocation-by-IP 通过积累一个将 IP 映射到地理位置的数据库来工作。这些数据的来源多种多样,通常是公共 IP 分配记录的积累。作为背景知识,有一些机构负责管理 IP 地址的分配。有一个全球机构将 IP 地址范围分配给较小的区域机构,这些机构进一步将这些地址传递给更多本地组织,如 ISP 或托管公司,最终将其分发给客户。
例如,如果大型 ISP 接收到一系列 IP 地址,那么这可能是公共知识。但是,如果这个 ISP 是跨区域运营的,那么一个客户今天可能会得到一个地址,而另一个完全不同城市的完全不同的客户可能会在明天得到它。 在任何时候都不知道此 IP 分配给了谁。 ISP 运营所在的模糊地理区域是已知的,但特定城市的哪个特定客户当前拥有该 IP 地址却不知道。
【讨论】:
以上是关于从 IP 地址获取城市的主要内容,如果未能解决你的问题,请参考以下文章