2011-07-19 105 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);