Верх страницы
Обложка к записи Информация об IP адресе
Время для прочтения: 0 мин. 3 сек.

Информация об IP адресе

Geolocation — определение местоположения по IP адресу или доменному имени.

Используя бесплатный Geolocation XML API от сайта ipinfodb.com, можно получить достаточную информацию по интересующему нас IP адресу.

Чтобы скрипт заработал, достаточно передать ему методом GET параметр query с IP адресом или доменным именем, на выходе получим результат:

header('Content-Type: text/html; charset=UTF-8');
 
// Вытащить GET переменную
$query = (isset($_GET['query']) && !empty($_GET['query'])) ? $_GET['query'] : $_SERVER['REMOTE_ADDR'];
 
// Получить из запроса IP адрес
$ip = gethostbyname($query);
 
// Забрать XML
$xml = new SimpleXMLElement('http://ipinfodb.com/ip_query.php?ip='.$ip.'&timezone=true', NULL, TRUE);
 
// Если нет ошибок
if ($xml->Status == 'OK') {
    echo '<p>';
    echo 'Query: '.$query.'<br />';
    echo 'IP: '.$xml->Ip.'<br />';
    echo 'Код страны: '.$xml->CountryCode.' <img src="http://ipinfodb.com/img/flags/'.strtolower($xml->CountryCode).'.gif" width="18" height="12"><br />';
    echo 'Название страны: '.$xml->CountryName.'<br />';
    echo 'Код региона: '.$xml->RegionCode.'<br />';
    echo 'Название региона: '.$xml->RegionName.'<br />';
    echo 'Город: '.$xml->City.'<br />';
    echo 'Широта: '.$xml->Latitude.'<br />';
    echo 'Долгота: '.$xml->Longitude.'<br />';
    echo 'Часовой пояс: '.$xml->TimezoneName.'<br />';
    echo 'Смещение по Гринвичу: '.$xml->Gmtoffset.'<br />';
    echo 'Летнее время: '.$xml->Isdst.'<br />';
    echo '</p>';
 
} else {
    echo 'Error: '.$xml->Status;
}

В связи с многочисленными запросами к данному сервису, администраторы сервера сменили адрес и ввели ограничение — доступ по API-key, который можно получить здесь

Обновленный вариант скрипта:

header('Content-Type: text/html; charset=UTF-8');
 
$query = (isset($_GET['query']) && !empty($_GET['query'])) ? $_GET['query'] : $_SERVER['REMOTE_ADDR'];
$ip = gethostbyname($query);
$key = 'Ваш API-key';
$url = sprintf(
               'http://api.ipinfodb.com/v2/ip_query.php?ip=%s&timezone=true&key=%s',
               $ip,
               $key
);
 
$xml = new SimpleXMLElement($url, NULL, TRUE);
 
if ($xml->Status == 'OK') {
    echo '<p>';
    echo 'Query: '.$query.'<br />';
    echo 'IP: '.$xml->Ip.'<br />';
    echo 'Код страны: '.$xml->CountryCode.' <img src="http://ipinfodb.com/img/flags/'.strtolower($xml->CountryCode).'.gif" width="18" height="12"><br />';
    echo 'Название страны: '.$xml->CountryName.'<br />';
    echo 'Код региона: '.$xml->RegionCode.'<br />';
    echo 'Название региона: '.$xml->RegionName.'<br />';
    echo 'Город: '.$xml->City.'<br />';
    echo 'Широта: '.$xml->Latitude.'<br />';
    echo 'Долгота: '.$xml->Longitude.'<br />';
    echo 'Часовой пояс: '.$xml->TimezoneName.'<br />';
    echo 'Смещение по Гринвичу: '.$xml->Gmtoffset.'<br />';
    echo 'Летнее время: '.$xml->Isdst.'<br />';
    echo '</p>';
 
} else {
    echo 'Error: '.$xml->Status;
}

Ссылки

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, OpenCart, DLE, Laravel, Moonshine, Symfony, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

4 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
HRR
HRR
13 лет назад

Спасибо!

IKARUS
IKARUS
13 лет назад

Не работает…

Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы