Геолокация на PHP
Часто необходимо определить местоположение посетителя сайта. Для этого можно воспользоваться сервисом https://ip-api.com
Получить данные можно GET-запросом по адресу: http://ip-api.com/php/ для текущего IP, http://ip-api.com/php/288.80.152.201 для конкретного или же http://ip-api.com/php/markpoint.ru для домена.
Чтобы получить данные на русском языке, нужно использовать параметр lang в запросе: http://ip-api.com/php/?lang=ru
Успешный результат вернет данные:
array (
'status' => 'success',
'country' => 'COUNTRY',
'countryCode' => 'COUNTRY CODE',
'region' => 'REGION CODE',
'regionName' => 'REGION NAME',
'city' => 'CITY',
'zip' => ZIP CODE,
'lat' => LATITUDE,
'lon' => LONGITUDE,
'timezone' => 'TIME ZONE',
'isp' => 'ISP NAME',
'org' => 'ORGANIZATION NAME',
'as' => 'AS NUMBER / NAME',
'query' => 'IP ADDRESS USED FOR QUERY',
)
Ошибочный:
array (
'status' => 'fail',
'message' => 'ERROR MESSAGE',
'query' => 'IP ADDRESS USED FOR QUERY',
)
Пример использования:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip.'?lang=ru'));
if($query && $query['status'] == 'success') {
echo 'Привет, посетитель из '.$query['country'].', '.$query['city'].'!';
} else {
echo 'Не удалось определить локацию';
}
?>
Бесплатный доступ имеет ограничение не более 45 запросов в минуту
Подробнее о тарифах — https://members.ip-api.com/#pricing