ip-location

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

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

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

<?php
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.'&nbsp;<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, который можно получить здесь

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

<?php
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.'&nbsp;<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;
}
?>

Ссылки

Похожие публикации:

  1. Два способа получения статуса ICQ номера
    Зачем это может понадобится? Например, чтобы показать свои картинки статусов, подходящие под дизайн вашего сайта или чтобы в зависимости от...
  2. Получить расширение файла
    Получить расширение файла в РНР задача не сложная и способов ее решения существует масса. Давайте попробуем рассмотреть несколько возможных вариантов....

Теги: , , , ,

Комментариев - 4

  1. IKARUS:

    Не работает…

Оставить комментарий

При написании кода в комментариях вы можете использовать Zen Coding для быстрого ввода HTML.