Геолокация на PHP

Иногда бывает нужно определить местоположение посетителя сайта для каких либо дальнейших действий. Если эти действия глобальнее, чем вывод карты или какой то информации, то лучше использовать для этого PHP, в противном случае, лучше подойдет JavaScript.

Как и в предыдущей заметке про геолокацию на JavaScript, воспользуемся сервисом ip-api.com.

Теперь о том, как что работает.

Данные берутся из GET запроса по адресу: http://ip-api.com/php/ для текущего IP, http://ip-api.com/php/208.80.152.201 для конкретного или http://ip-api.com/php/atuin.ru для домена.

Для получения данных на русском языке используем запрос: http://ip-api.com/php/?lang=ru

Успешный результат вернет данные:

Ошибочный:

Пример использования:

Пример:

Привет, посетитель из США, Дублин!

Более подробную информацию можно найти в документации на сайте разработчика: ip-api.com

Определение географии по ip с использованием php библиотеки nikolaevevgegeoip:

Есть ещё библиотека которая называется nikolaevevgegeoip, использовать её необходимо с CRM Wordperss, Bitrix или Joomla(хотя как написано на странице библиотеки - у автора в планах дописать её чтобы она могла работать с другими CMS, видимо на текущий момент это не реализовано). Для того чтобы использовать библиотеку скопируйте код библиотеки с сайта разработчика по ссылке http://blog.ivru.net/?id=82, затем разместите его в каком либо php файле на Вашем хостинге после чего подключите к Вашей cms используя вызов require_once("адрес_php_файла");

В общем виде чтобы получить geo-информацию с использованием указанной библиотеки можно выполнить следующий код:

Из особенностей библиотеки: она умеет автоматически определять CMS WordPress, Bitrix, Joomla и используя настройки CMS соединяться с базой данных Вашего сайта и создавать в ней таблицы для хранения кеша. Для работы библиотека использует собственный API, обращения к которому кешируются в вышеупомянутые таблицы. Библиотека разрабатывается не компанией, у неё есть вполне конкретный автор, если кого-то интересует вопрос разработки собственной такой библиотеки, возможно стоит почитать эту статью — https://abdullinru.ru/biblioteka-nikolaevevgegeoip.html - в ней автор даёт интервью и рассказывает о том с какими вопросами он столкнулся в рамках работы над библиотекой и как они были решены, а так же рассказывает о планах развития библиотеки.

Смотрите также:

Добавить комментарий:

Ваш комментарий отправлен!

Комментарии:

  • Евгений:

    не надо. уже сделал

    Ответить
  • Евгений:

    Нет ли возможности развнуть ваш пример:

    <?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 'Не удалось определить локацию';
    }
    ?>

    на все определяемые параметры?

    Скольок запросов в месяц может обрабатать эта программа? Есть ли какое-либо огрнаичение на количество обрабатываемых запросов в месяц, а год или всего?

    Ответить
  • Олег:

    Точность совсем никакая. У меня показало что я в Камышено, я даже не знаю где это. А я в Ростовской области. У нас сервисы часто показывают Краснодарский край, но это то хоть рядом, примерно 60 км. А про Камышин я вообще не слышал.

    Ответить
    • Макс:

      Кажется, Камышин в Волгоградской области.

      Ответить
  • Vik:

    И сразу сюрприз: в примере определяется, что я в городе Vlaardingen, а это в ста километрах от меня. Так что точность кода так себе.... ((

    Ответить
    • Alexander:

      Это не точность кода, а точность сервиса ip-api.com

      Ответить