IP Geo – геолокация по IP адресу

Главные вкладки

Аватар пользователя Ch Ch 3 мая 2012 в 13:21

Иногда нужно отобразить на сайте контекстную информацию в зависимости от региона пользователя. Данный модуль позволяет определять местонахождение пользователя по его IP адресу.
Модуль может работать в двух режимах:

  • Локальный (по умолчанию) — используется локальная база данных
  • Удалённый — данные загружаются с xml сервиса ipgeobase.ru

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

if (($region = ipgeo_get_region()) && $region->city == 'Санкт-Петербург') {
  drupal_set_message('Зенит чемпион!');
}

Структура возвращаемого объекта:

stdClass Object
(
    [country] => RU
    [city] => Нижний Новгород
    [subject] => Нижегородская область
    [fo] => Приволжский федеральный округ
    [latitude] => 56.329918
    [longitude] => 44.009193
)

latitude и longitude это широта и долгота, которые можно использовать в своём модуле для отображения местоположенния пользователя на картах яндекса и гугла.

База IP блоков для России и Украины находится в архиве с модулем.

ВложениеРазмер
Иконка пакета ipgeo.zip292.2 КБ

Комментарии

Аватар пользователя Ch Ch 4 мая 2012 в 7:40

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
База загружается через батч?

Пока нет.
"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
есть ещё хороший модуль smartip
Посмотрел. Модуль хороший, но те базы с которыми он работает для России и Украины мало пригодны.

Аватар пользователя Ch Ch 29 мая 2012 в 9:52

Возможно. Модуль сам ничего не делает, а только даёт возможность вам определить регион пользователя.

Аватар пользователя drupby drupby 1 июня 2012 в 1:44

"alex_shut" wrote:
У нас провайдеры веселые. Ты в одном городе, а по тестам - совсем в другом)

"drupby" wrote:

а яндекс и гугл как определяет твой регион ?

"alex_shut" wrote:
Вроде как правильно.

видимо в окно следят , где ты находишься

Аватар пользователя alex_shut alex_shut 1 июня 2012 в 1:53

ну я хз что и как. Знаю что ис-за смены подсети мне пришлось отключить безопасность на хосте.
Сперва меня не пускало, думал ис-за айпи плавающего. Но оказалось что и сеть меняетсо. Сперва один номер, потом другой... И так с каждым коннектом. Тобишь я не могу просто ввести подсеть и сказать что отсюда всем можно. Пришлось просто выключить.

Аватар пользователя DDDDD099 DDDDD099 9 июля 2012 в 15:50

Поставил спасибо работает - но все-таки выдает не мой город а город провайдера. Как с этим можно бороться? Яндекс как-то же определяет правильный город?

Аватар пользователя Ch Ch 9 июля 2012 в 21:32

Возможно ты когда то указывал свой город в яндексе? Если нет, то значит у яндекса другая база.

Аватар пользователя DDDDD099 DDDDD099 9 июля 2012 в 21:36

Да кстати это возможно вполне. Но например на sportbox.ru - там в шапке погода от sinoptik - тоже определяет мой город правильно.

Аватар пользователя I_CaR I_CaR 30 ноября 2014 в 3:42

Хороший модуль.
А вот как его результат, который "$region->city", привинтить в поле выбора города из таксономии в блоке?

Аватар пользователя Worth Worth 14 марта 2015 в 20:22

В последнее время сервис ipgeobase.ru стал глючить (в плане долгого подвисания при запросах к этому сервису, да так что поисковики стали думать что мой сайт не работает), пришлось искать новое решение. Единственное нормальное решение из бесплатных на данный момент это geoplugin.com
Для Drupal есть специальный модуль для него https://www.drupal.org/project/geoplugin, но пока что до выхода нового релиза приходится его патчить https://www.drupal.org/node/2452375

Аватар пользователя shevgeny shevgeny 20 июля 2015 в 10:59

Worth wrote:
В последнее время сервис ipgeobase.ru стал глючить (в плане долгого подвисания при запросах к этому сервису, да так что поисковики стали думать что мой сайт не работает), пришлось искать новое решение. Единственное нормальное решение из бесплатных на данный момент это geoplugin.com
Для Drupal есть специальный модуль для него https://www.drupal.org/project/geoplugin, но пока что до выхода нового релиза приходится его патчить https://www.drupal.org/node/2452375[/quote]
Да, сервис работает, но определяет регионы России через раз. Мой IP, напрмер, определяется неверно. Я нахожусь в Краснодаре, а пишет какую-то кракозябру.

Аватар пользователя psyh psyh 19 июля 2016 в 15:16

Поставил модуль, но мой ip не определяется. На http://ipgeobase.ru формат базы изменился, хотя я посмотрел оба формата, новую базу несложно сконвертировать в нужный формат.

Аватар пользователя shevgeny shevgeny 27 июля 2016 в 17:10

у меня вроде работает. Определяется правильно не всегда, но это и не новость, кажется Smile Например, если с мобильного Билайн в Краснодаре, то частенько то Москва, то Ростов-на-Дону выскакивает, но так и в Яндексе случается. Видимо, ip оператор присваивает в зависимости от канала, а канал в зависимости от нагрузок сам перенаправляет.

Аватар пользователя psyh psyh 27 июля 2016 в 19:32

Да я разобрался, почему не определялся IP. У меня NGINX + Apache, нужно было в settings.php добавить запись:

<?php// Требуется если сайт находится за nginx
  // Tell Drupal that we are behind a reverse proxy server
  $conf['reverse_proxy'] = TRUE;

  // List of trusted IPs (IP numbers of our reverse proxies)
  $conf['reverse_proxy_addresses'] = array(
    '127.0.0.1',
    'IP сервера',
  );
?>

Еще я пишу скриптик, преобразующий базу IP из нового формата в формат требуемый для этого модуля.
Будет готово, выложу сюда.

Аватар пользователя psyh psyh 30 июля 2016 в 20:35
1

Переконвертировал базу из нового формата в требуемый для модуля. Может кому пригодится.
Обновленная база
Конвертер написал на Python, если нужно могу тоже выложить, но он сырой, т.к. делался под разовую задачу.