2011-07-19 67 views
1

我想弄清楚如何获取用户所在的城市和州。我怎样才能做到这一点?我应该使用JavaScript,PHP吗?如何获取用户的位置?

+2

的可能重复[如何学习网络用户的位置?(http://stackoverflow.com/questions/4026786/how-to-learn-location-of-the-web-user) – Pointy

+3

只要问他们:) – Paul

回答

1

我通常使用PHP的ipinfodb,在那里你可以获得基于IP的用户信息。我位于瑞典,即使在这里我也觉得它非常准确。虽然ISP在隐藏客户位置时总会遇到问题,但与API准确性无关。

0

您将需要使用javascript geolocation API来定位用户,然后对PHP或其他服务器端脚本进行AJAX调用以存储位置信息。

+0

有趣的是,我也注意到该文章的第一段,作者还包括一篇文章的链接,使用用户的IP来粗略定位它们。 – Rodaine

0

可能是PHP,如果你想存储它或什么的。我在谷歌搜索后在一些论坛上发现了这个,并对其进行了修改。我不确定它有多准确,但它能在一个小时的车程内找到我的位置。

<? 

    $ip = $_SERVER['REMOTE_ADDR']; 

    if (!empty($IP)) { 
     $location=file_get_contents('http://api.hostip.info/get_html.php?ip='.$ip); 

     list($country, $city) = explode("\n", $location); 
     list($country, $code) = explode(' (', $country); 
     list($city, $state) = explode(', ', $city); 
     $code = substr($code, 0, 2); 
     $country = ucfirst(strtolower(str_replace("Country: ", "", $country))); 
     $city = ucfirst(strtolower(str_replace("City: ", "", $city))); 
    } 

echo 'Country: '.$country.'<br />'; 
echo 'City: '.$city.'<br />'; 
echo 'State: '.$state.'<br />'; 
echo 'Country Code: '.$code.'<br />'; 

?> 

不知道它是否是最新的。

+0

这会找到报告IP地址的位置的近似值,这可能与使用计算机的人的位置不完全相同(所以有人从远程位置通过公司代理可能离IP地址位置)。 – Pointy

4

取决于您希望如何跨平台。在HTML5中,有Geolocation api。如果您不需要支持所有IE浏览器,并且正在寻找HTML5解决方案,我会推荐使用它。

编辑添加更多developer friendly link

+0

+1用于地理定位,但是如果该功能不可用,您当然可以回到诸如maxmind的[geoip](http://www.maxmind.com/app/geolitecity)之类的东西。 – Wrikken

0
$country=file_get_contents('http://api.hostip.info/get_html.php?ip='); 
echo $country; 

// Reformat the data returned (Keep only country and country abbr.) 
$only_country=explode (" ", $country); 

echo "Country : ".$only_country[1]." ".substr($only_country[2],0,4);