Как получить локацию пользователя по IP адресу

Стояла задача получить локацию пользователя по его IP адресу. Для решения задачи, надо определить IP адрес посетителя, для этого я использую переменную из суперглобального массива $_SERVER['REMOTE_ADDR']. Дальше, используя полученный IP составить URL файла, который необходимо прочесть, читать файл будет функция file_get_contents. Читаемый файл находится на сайте http://ipinfo.io/ именно туда будем посылать запрос. Код читаемого файла написан в JSON, поэтому придется декодировать полученную строку в массив, для этого использую функцию json_decode. С решением разобрались, переходим к самому коду, код прокомментировал, для лучшего понимания, что происходит:
$ip   = $_SERVER['REMOTE_ADDR'];             # Получаем IP адрес пользователя
$url  = 'http://ipinfo.io/' . $ip . '/json'; # Составляем адрес для чтения 
$info = file_get_contents($url);             # Читаем файл
$info = json_decode($info, true);            # Декодируем JSON строку в массив

Теперь массив $info содержит в себе информацию о местонахождении пользователя. Увидеть весь массив можно так:
print_r($info);

На экране появится, что то типа этого:
Array
(
    [ip] => XXXXXXXXXXX
    [hostname] => XXXXXXXXXXX
    [city] => XXXXXXXXXXX
    [region] => XXXXXXXXXXX
    [country] => XXXXXXXXXXX
    [loc] => XXXXXXXXXXX
    [org] => XXXXXXXXXXX
    [postal] => XXXXXXXXXXX
)

Ну а если надо вывести, что то одно из массива, например регион, то делаем так:
echo $info['region'];
Теги: PHP
Автор: