2015-01-03 3 views
0

У меня возникли проблемы с hostip.info API.PHP GET Местоположение от API

Вот мой 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'] он говорит, что я нахожусь в другом состоянии. Я не использую прокси. Почему это дает мне правильный IP-адрес, но не город?

Спасибо!

+0

Использование MaxMind GeoIP –

ответ

0

Ваш IP-адрес принадлежит вашему интернет-провайдеру, и они зарегистрировали его с адресом, который возвращает api. Для api невозможно определить фактическое географическое местоположение данного IP-адреса со 100-процентной точностью. Например, я сейчас в Калифорнии, но эта служба http://api.hostip.info/ отвечает «Reston, VA», потому что я на Verizon, и именно там Verizon зарегистрировал IP-адреса.

Here is a good article about the subject:

Есть более точные услуги там, такие как https://www.maxmind.com/en/geoip2-precision-insights, но я не знаю, есть ли что свободны.

Edit: Просто нашел этот сайт, который показывает хорошее сравнение результатов различных аналогичных услуг: http://www.iplocation.net/
и с этим сайтом, это объяснение:

Точность геолокации базы данных изменяется в зависимости от того, какой базы данных ты используешь. Для базы данных IP-to-country некоторые поставщики утверждают, что предлагают 98% до 99% точности, хотя типичная точность базы данных Ip2Country больше , как и 95%. Для IP-to-Region (или City) уровень защиты составляет от 50% до 75%, если соседние города считаются правильными. Учитывая, что нет официального источника информации IP-to-region, точность 50 +% довольно хороша.

Надеюсь, это ответит на ваш вопрос.

Смежные вопросы