2016-05-15 77 views
0

我想知道我的用戶來自哪裏。我遇到了兩種方法。HTML地理位置API與php IP與數據庫

PHP:

$ip=$_SERVER["REMOTE_ADDR"]; 
$ip_with_proxy=$_SERVER['HTTP_X_FORWARDED_FOR']; 

然後IP比較經度/緯度的數據庫。

OR

HTML地理位置API(請使用JS用戶):

http://www.w3schools.com/html/html5_geolocation.asp

<script> 
var x = document.getElementById("demo"); 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 
function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
</script> 

哪一個都會讓我更準確的經度/緯度?用戶方法的請求是否存在代理位置問題?

我在想我可以使用JS請求用戶地理位置,如果用戶拒絕請求,請使用IP來查找一般位置。但是我只會在JS請求方法更準確時才這樣做。我知道PHP方法依賴於我的數據庫的準確性,但JS方法通常更準確嗎?

我想要一個精確的位置相比,一般的位置。我寧願將用戶房屋或其周圍的位置與城市或國家相比。

準確度的主要區別是什麼? HTML Geolocation API從哪裏獲取數據?任何想法或意見表示讚賞。謝謝。

+2

你的db在一段時間內會過時,最好使用在線api。 –

+0

我也在考慮這個問題。感謝您的評論 –

+1

IP地址永遠不會給你一個確切的位置。只要想想手機,...所以你的情況下,你會結合「詢問用戶」(並使用用戶瀏覽器的API)與回退通過在線API的ip - 我想。 – Jeff

回答

0

JavaScript方法只適用於用戶有gps。通常智能手機具有GPS,但電腦/服務器不具備。 gps方法相當準確。 php方法確實不準確。谷歌使用php方法,它告訴我我在我最近的城市,因爲那是我的互聯網服務提供商的基礎。

+0

HTML5地理定位API根本不使用IP地址?那麼它如何從電腦獲得位置? –

+1

我剛做了一個測試 - 只是因爲好奇:連接到MobileHotspot而沒有GPS的Destop在GMaps上找到我只有300米的距離。因此,通過真實的ISP,移動IP可能比IP更好。 – Jeff

+1

@MaciekSemik我得到了一個類似於以前的帖子http://stackoverflow.com/questions/27825601/google-maps-geolocation-api在桌面上使用html5地理定位沒有GPS時的結果。結果告訴我我已經正確設置了它。 – David