获取用户CITY位置

时间:2013-12-18 19:34:07

标签: php

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

如果用户来自纽约,请显示文字“你好,你在纽约”。如果用户来自洛杉矶,请显示“你好,你在洛杉矶”。当然我想用于其他东西但是sintax就是那个。

在谷歌和堆栈中进行搜索,但找不到合适的解决方案。通过IP查找并不是一个好主意,因为在巴西这里例如,我们的互联网提供商是在州首府,而不是在我们的地区。所以通过ip注册互联网提供商的位置,而不是我的位置。

如果您对此有所了解,谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

结果将是

  

国家:美国(美国)
  城市:Sugar Grove,IL
  IP:12.215.42.19

来自PHP

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

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

另一种方式使用此API:

ipinfodb

答案 1 :(得分:1)

虽然您可以在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提供程序来执行此操作。