2015-01-03 21 views
0

我在hostip.info API中遇到了一些問題。來自API的PHP GET位置

這是我的PHP代碼:

$ip = $_SERVER['REMOTE_ADDR']; 
echo $ip; 
    $response = file('http://api.hostip.info/get_html.php?ip='.$ip); 
foreach ($response as $line) { 
    $line = trim($line); 
    if (!empty($line)) { 
    $parts = explode(': ', $line); 
    $array[$parts[0]] = $parts[1]; 
} 
} 

它返回我正確的IP地址,但是當我試圖返回$array['City']它說,我在不同的狀態。我沒有使用代理。爲什麼它給了我正確的知識產權,而不是城市?

謝謝!

+0

使用MaxMind GeoIP –

回答

0

你的IP地址屬於你的ISP,他們用這個api返回的地址註冊它。 api沒有可能以100%的準確度確定給定ip地址的實際地理位置。例如,我目前在加利福尼亞州,但此服務http://api.hostip.info/迴應「弗吉尼亞州雷斯頓」,因爲我在Verizon,這是Verizon註冊IP地址的地方。

Here is a good article about the subject:

有更準確的服務在那裏,如https://www.maxmind.com/en/geoip2-precision-insights但我不知道是否有任何都是免費的。

編輯:剛剛發現這個網站,顯示從各種類似服務的結果的一個很好的比較:http://www.iplocation.net/
,並從該網站,這樣的解釋:

地理位置數據庫的精確度取決於哪個數據庫 你用。對於IP到國家的數據庫,一些供應商聲稱提供98%的準確率,但99%的準確度,儘管典型的Ip2Country數據庫準確度更高爲 ,例如95%。對於IP到區域(或城市),如果相鄰城市被視爲正確,則準確率範圍從50%到100%之間。考慮到 沒有官方的IP地址信息來源,50 +%的準確率 相當不錯。

我希望這能回答你的問題。