Авторизация
Корзина
0
Скриншоты
Описание
Технические данные
- Опубликовано:
- 10.12.2016
- Обновлено:
- 06.02.2022
- Версия:
- 1.5.1
- Установлено:
- Более 1000 раз
- Подходящие редакции:
- «Первый сайт», «Старт», «Стандарт», «Малый бизнес», «Бизнес», «Корпоративный портал», «Энтерпрайз»
- Адаптивность:
- Да
- Поддержка Композита:
- Да
- Совместимо с Сайты24
- Нет
- Совместимо с PHP 8.1
- Да
Пользовательское соглашение
Описание
Модуль предоставляет api для определения местоположения по ip-адресу. Если ip-адрес не указан явно, то местоположение определяется по текущему ip пользователя. Для уменьшения количества запросов, информация о последнем ip-адресе сохраняется в cookies.
В местоположение входят:
В обычном режиме решение предоставляет данные из первой службы, корректно вернувшей данные. Службы вызываются в следующем порядке:
В случае необходимости, можно явно указать необходимую службу. Сейчас, если указать службу, отличную от Sypex, работать не будет.
Пример использования:
Указание сервера для Sypex
Список всех серверов https://sypexgeo.net/ru/api/
Указание ключа доступа для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-key', 'abcd1');
Компоненты
Указатель местоположения пользователей (rover:geoip.user.location)
Позволяет установить местоположение для пользователей на основе данных из модуля. Местоположение определяется по ip-адресу, с которого они впервые зашли на сайт.
Полное описание api на гитхабе проекта: https://github.com/pavelshulaev/geoip
В местоположение входят:
- название города;
- название страны на языке сайта;
- iso-код страны
- id страны в CMS 1С Битрикс (соответствуют id стран, возвращаемых функцией GetCountryArray)
- название региона;
- iso-код региона (опционально);
- название района (опционально);
- ширина и долгота;
- диапазон ip-адресов (опционально).
В обычном режиме решение предоставляет данные из первой службы, корректно вернувшей данные. Службы вызываются в следующем порядке:
- sypexgeo.net (Sypex);
ipgeobase.ru (IpGeoBase);(отключена, т.к. перестала отвечать)freegeoip.net (FreeGeoIp).(отключена, т.к. свободный api был закрыт)
Пример использования:
use Bitrix\Main\Loader, Rover\GeoIp\Location; if (Loader::includeModule('rover.geoip')){ try{ echo 'ваш ip: ' . Location::getCurIp() . '<br><br>'; // текущий ip $location = Location::getInstance('5.255.255.88'); // yandex.ru if ($location->isSuccess()){ echo 'ip: ' . $location->getIp() . '<br>'; // 5.255.255.88 echo 'город: ' . $location->getCityName() . '<br>'; // Москва echo 'iso-код страны: ' . $location->getCountryCode() . '<br>'; // RU echo 'название страны: ' . $location->getCountryName() . '<br>'; // Россия echo 'id страны в Битриксе: ' . $location->getCountryId() . '<br>'; // 1 echo 'регион: ' . $location->getRegionName() . '<br>'; // Москва echo 'iso-код региона: ' . $location->getRegionCode() . '<br>'; // echo 'округ: ' . $location->getDistrict() . '<br>'; // Центральный федеральный округ echo 'широта: ' . $location->getLat() . '<br>'; // 55.755787 echo 'долгота: ' . $location->getLng() . '<br>'; // 37.617634 echo 'диапазон адресов: ' . $location->getInetnum() . '<br>'; // 5.255.252.0 - 5.255.255.255 echo 'сервис: ' . $location->getService() . '<br><br>'; // IpGeoBase } else { echo 'ошибка: ' . $location->getError() . '<br><br>'; } $location->setLanguage('en'); $location->reload('173.194.222.94'); // google.ru if ($location->isSuccess()){ echo 'ip: ' . $location->getIp() . '<br>'; // 173.194.222.94 echo 'город: ' . $location->getCityName() . '<br>'; // Mountain View echo 'iso-код страны: ' . $location->getCountryCode() . '<br>'; // US echo 'название страны: ' . $location->getCountryName() . '<br>'; // USA echo 'id страны в Битриксе: ' . $location->getCountryId() . '<br>'; // 122 echo 'регион: ' . $location->getRegionName() . '<br>'; // California echo 'iso-код региона: ' . $location->getRegionCode() . '<br>'; // US-CA echo 'округ: ' . $location->getDistrict() . '<br>'; // echo 'широта: ' . $location->getLat() . '<br>'; // 37.38605 echo 'долгота: ' . $location->getLng() . '<br>'; // -122.08385 echo 'диапазон адресов: ' . $location->getInetnum() . '<br>'; // echo 'сервис: ' . $location->getService() . '<br>'; // Sypex } else { echo 'ошибка: ' . $location->getError() . '<br><br>'; } } catch (\Exception $e) { echo $e->getMessage(); } } else echo 'Модуль GeoIp Api не установлен'; |
Указание сервера для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-server', 'ru3.sxgeo.city'); |
Указание ключа доступа для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-key', 'abcd1');
Компоненты
Указатель местоположения пользователей (rover:geoip.user.location)
Позволяет установить местоположение для пользователей на основе данных из модуля. Местоположение определяется по ip-адресу, с которого они впервые зашли на сайт.
Полное описание api на гитхабе проекта: https://github.com/pavelshulaev/geoip
Если вам нужен более расширенный функционал и более «пользовательский» интерфейс с похожим функционалом, рекомендую решение «Улучшенный выбор местоположения с определением по IP, замена контента в зависимости от города». |
Отзывы ()
7 февраля 2022 11:23
7 февраля 2022 18:27
22 марта 2020 15:59
4 июня 2021 10:45
25 февраля 2018 15:28
4 июня 2021 10:45
7 декабря 2017 11:35
4 июня 2021 10:44
2 октября 2017 11:00
3 октября 2017 10:56
Обсуждения (34)
21 августа 2023 10:42
7 сентября 2023 18:42
21 августа 2023 10:41
18 августа 2023 12:03
18 августа 2023 15:15
16 февраля 2023 10:33
27 февраля 2023 07:56
3 марта 2022 21:44
4 марта 2022 10:11
Что нового
1.5.1 (06.02.2022) | — добавлена возможность задавать максимальное время ожидания от geoip-сервиса. По умолчанию 200 мс. |
1.5.0 (13.10.2021) | — единственным сервисом для определения местоположения установлен Sypex (остальные на данный момент не работают) — добавлена возможность подключаться к Sypex по ключу (при регистрации/подписке) — время ожидания ответа сервиса сокращено с 2 до 0,2 секунд. |
1.4.11 (03.06.2021) | — исправлены ошибки в преобразовании кодировки ответов для сайтов в windows-1251 — минимальная версия php повышена до 7.2 — рефакторинг |
1.4.9 (13.04.2020) | — добавлена возможность задать региональный сервер для Sypex — минимальна яверсия php повышена до 5.4 — прочие незначительные улучшения и доработки |
1.4.8 (07.01.2019) | уменьшено время ожидания ответа от сервисов определения местоположения |
1.4.7 (16.07.2018) | Гео-запрос не производится, если страницу открывает бот |
1.4.5 (05.07.2018) | Добавлена возможность указать желаемый язык ответа, пока работает только для службы Sypex Служба FreeGeoIp отключена, т.к. они закрыли свободный api |
1.4.4 (24.05.2018) | В компонент определения местоположения пользователей добавлена проверка наличия модуля "Веб-аналитика" |
1.4.3 (12.12.2017) | Исправлен вывод ошибок при установке/удалении |
1.4.2 (15.11.2017) | Убран Exception, возникавший при попытке определить местоположения для ip v6. Теперь ошибки пишутся в ключ ERROR массива, получаемого из метода Location::getData(). Так же их можно получить, вызвав Location::getError(). |
1.4.1 (01.11.2017) | Параметр ip в методе reload вновь сделан необязательным. По умолчанию перезагружается для текущего ip Исправлены ошибки при установке |
1.4.0 (24.10.2017) | - добавлена новая служба для определения местоположения - Sypex - возможность явно указывать службу для определения местоположения - необходимая версия php понижена до 5.3 - добавлены некоторые методы для получения значений - часть старых методов помечены устаревшими, они будут удалены в следующих версиях (см. документацию (https://github.com/pavelshulaev/geoip)) |
1.3.2 (03.10.2017) | В класс \Rover\GeoIp\Location добавлен публичный метод getService, возвращающий сервис geoip, с помощью которого были получены данные |
1.3.1 (08.07.2017) | Добавлено авто-определение кодировки и сделано по-умолчанию Добавлена корректная обработка адресов в формате IPv6. Модуль больше не выдаёт ошибку, но определение местоположения пока недоступно. |
1.3.0 (30.06.2017) | Добавлен метод reload для многократного использования объекта определения местоположения Улучшен алгоритм определения страны Добавлен компонент для определения и обновления местоположения пользователей |
1.2.3 (15.06.2017) | Добавлен метод public Location::getCountryId() , возвращающий код страны в Битриксе (если удалось определить) |
1.2.2 (24.05.2017) | Исправлено отображение названия страны в кодировке windows-1251 В описании добавлен пример использования в кодировке windows-1251 |
1.2.1 (23.05.2017) | Восстановлена совместимость с php 5.4 |
1.2.0 (27.02.2017) | Добавлен поиск через службу freegeoip.net |
1.1.0 (21.12.2016) | Добавлен метод public getIp(), возвращающий ip, для которого создан объект \Rover\GeoIp\Location Обновлена документация |
1.0.1 (20.12.2016) | метод получения текущего ip сделан публичным |
Установка
После стандартной установки модуля, его api будет доступно для ваших проектов.
С api можно ознакомится здесь: https://github.com/pavelshulaev/geoip
Задать максимальное время ожидания ответа от geoip-сервиса можно через РНР-командную строку. Значение указывается в миллисекундах:
Требования
С api можно ознакомится здесь: https://github.com/pavelshulaev/geoip
Задать максимальное время ожидания ответа от geoip-сервиса можно через РНР-командную строку. Значение указывается в миллисекундах:
\Bitrix\Main\Config\Option::set('rover.geoip', 'curl-timeout', 200); |
Требования
- php версии 7.2 или выше
- установленная на хостинге библиотека CURL
- модуль «Веб-аналитика» (для работы компонента rover:geoip.user.location)
Поддержка
По всем вопросам, предложениям и ошибкам обращайтесь в техподдержку на https://rover-it.me.