获取用户城市位置


Get user CITY location

拜托,如何使用PHP获取用户城市?我想要这样的东西,例如:

如果用户来自纽约,则显示文本"你好,你在纽约"。如果用户来自洛杉矶,请显示"你好,你在洛杉矶"。当然,我想用于其他东西,但罪税就是这样。

O 在谷歌和堆栈中搜索,找不到好的解决方案。按IP查找不是一个好主意,因为在巴西,我们的互联网提供商位于州首府,而不是我们地区。所以通过IP找到注册互联网提供商的位置,而不是我的位置正确。

如果您知道一些解决方案,谢谢。

最可靠的提供商之一免费提供该服务,例如

  http://api.hostip.info/get_html.php?ip=12.215.42.19

结果将是

国家: 美国
市: 伊利诺伊州
舒格罗夫 IP: 12.215.42.19

从菲律宾比索

  $ip = '12.215.42.19';
  $info = file_get_contents("http://api.hostip.info/get_html.php?ip=$ip");

然后通过一些文本处理,您可以轻松获得城市。

另一种方法是使用此 api:

ipinfodb

虽然你可以在PHP中做到这一点,但@ceejayoz提出了一个有效的观点,如果你在每个页面加载时都这样做,这将大大减慢你的网站速度。

一个更具可扩展性的替代方法是在客户端使用javascript(或在本例中为jQuery)执行此操作。

var url = "http://api.hostip.info/get_json.php?ip=24.66.128.2";
$(document).ready(function() {
    $.get(url, function(data) {
        alert(data.city);
        $('#city').text(data.city);
    });
});

用你的 IP 看到它的实际效果:http://jsfiddle.net/remus/wBzRr/

警告:A)这并不适合所有人,有时它会返回"未知城市" - 您需要优雅地处理此问题,B)它也返回状态;您可能需要编写一个简单的正则表达式来仅检索城市部分。或者,您可以使用更复杂的 API 提供程序来执行此操作。