Выдано 131974 лицензии

Магазин приложений HostCMS

GeoIP: определение страны и города пользователя

GeoIP: определение страны и города пользователя

Цена: 2 000 Демо

Дополнительные опции

интегрируем любой сервис

Более 10 установок.

Установить модуль вы можете через раздел «Магазин приложений» в центре администрирования HostCMS.

Модуль позволяет определить местоположение посетителя (геолокация) по IP-адресу и получить информацию – страну, регион, город и др.

В модуль входят следующие сервисы для определения:

IpGeoBase (API)

http://ipgeobase.ru/

Страны: Россия, Украина

Запрос в реальном времени, без регистрации полностью бесплатно

Sypex Geo (API, local DB)

https://sypexgeo.net/

Страны: Все

Есть платный (запрос в реальном времени, нужна регистрация) и бесплатный тариф (запрос в реальном времени, можно с регистрацией или без или работа через базу на сервере, для обновления базы используйте CRON задачу, файл cron есть в модуле)

/**
 * Запуск действий по расписанию, рекомендуется запускать раз в неделю
 *
 * Пример вызова:
 * 22 22 * * 3 /usr/bin/php /var/www/site.ru/www/cron/sypexgeo.php
 * Пример вызова с передачей php.ini
 * 22 22 * * 3 /usr/bin/php --php-ini /etc/php.ini /var/www/site.ru/www/cron/sypexgeo.php
 * Реальный путь на сервере к корневой директории сайта уточните в службе поддержки хостинга.
 */

* при первом запуске - запустите CRON задачу вручную для скачивания файла базы

Есть возможность указать адрес сервера API. Сервера расположены в разных странах и городах. Благодаря чему можно значительно уменьшить пинг (ping) до сервера, а соответственно и время доступа к API. В данный момент доступны 14 серверов.

IP-API (API)

https://ip-api.com/

Страны: Все

Запрос в реальном времени, есть регистрация (платный и бесплатный тариф), без регистрации

MaxMind (API, local DB)

https://www.maxmind.com/

Страны: Все

Есть платный (запрос в реальном времени, нужна регистрация) и бесплатный тариф (запрос через базу на сервере, нужна регистрация для получения ключа, для обновления базы используйте CRON задачу, файл cron есть в модуле)

/**
 * Запуск действий по расписанию, рекомендуется запускать раз в неделю
 *
 * Пример вызова:
 * 22 22 * * 3 /usr/bin/php /var/www/site.ru/www/cron/maxmind.php
 * Пример вызова с передачей php.ini
 * 22 22 * * 3 /usr/bin/php --php-ini /etc/php.ini /var/www/site.ru/www/cron/maxmind.php
 * Реальный путь на сервере к корневой директории сайта уточните в службе поддержки хостинга.
 */

* при первом запуске - запустите CRON задачу вручную для скачивания файла базы

DaData (API)

https://dadata.ru

Страны: Россия

Есть платный и бесплатный тариф (запрос в реальном времени, нужна регистрация)

Яндекс Геокодер (API)

https://yandex.ru/map-constructor/location-tool/

Страны: Все

Есть платный (запрос в реальном времени, нужен API ключ) и бесплатный тариф (запрос в реальном времени, нужен API ключ / возможно без него)

Работает только с координатами и Geolocation API web браузера (если пользователь согласится предоставить свое местоположение)

$oGeoData = GeoIp_Controller::instance('yandex')->execute('60.6084,56.8497');

Google Геокодер (API)

https://developers-dot-devsite-v2-prod.appspot.com/maps/documentation/utils/geocoder/embed?hl=ru

Страны: Все

Есть платный (запрос в реальном времени, нужен API ключ) и бесплатный тариф (запрос в реальном времени, нужен API ключ)

Работает только с координатами и Geolocation API web браузера (если пользователь согласится предоставить свое местоположение)

$oGeoData = GeoIp_Controller::instance('google')->execute('60.6084,56.8497');

GeoIP (local DB)

https://www.php.net/manual/ru/book.geoip.php

Страны: Все

Не рекомендуемый вариант. Запрос через базу на сервере, нужно доступное расширение extension = geoip.so на хостинге

Вывод данных на странице

Данные которые можно получить и вывести в макете, ТДС или php скрипте (с драйвером по умолчанию ipgeobase, настраивается в файле конфига /modules/geoip/config/driver.php)

$oGeoData = GeoIp_Controller::instance()->execute();

с определенным драйвером

$oGeoData = GeoIp_Controller::instance('maxmind')->execute();
  • ip - текущий IP адрес
  • city - наименование города
  • region - наименование области
  • district - наименование округа (не у всех сервисов)
  • country - наименование страны
  • country_iso - ISO код страны
  • Shop_Country - объект HostCMS страны
  • Shop_Country_Location - объект HostCMS области
  • Shop_Country_Location_City - объект HostCMS города
  • zip - почтовый индекс (не у всех сервисов)
  • isp - провайдер (не у всех сервисов)
  • lat - широта
  • lng - долгота
  • fias - ФИАС (DaData)
  • kladr - КЛАДР (DaData)
  • host - доменное имя хоста
  • useragent - user agent
  • device - устройство (для версии 6.9.3 и выше)
  • browser - браузер (для версии 6.9.3 и выше)
  • os - опреационная система (для версии 6.9.3 и выше)
$oGeoData = GeoIp_Controller::instance()->execute();

if($oGeoData)
{
	echo 'Ваша страна: ' . Core_Array::get($oGeoData, 'country', $oGeoData['country_iso']) . '<br />';
	echo 'Ваша область: ' . Core_Array::get($oGeoData, 'region') . '<br />';
	echo 'Ваш город: ' . Core_Array::get($oGeoData, 'city');
}

Корзина [адрес доставки]

В XML "Адрес доставки" добавлена текущая информация GeoIP для подстановки в поля заказа

<current>
	<ip>192.1.0.0</ip>
	<city>Екатеринбург</city>
	<region>Свердловская область</region>
	<district>Уральский федеральный округ</district>
	<country>Россия</country>
	<country_iso>RU</country_iso>
	<zip>620000</zip>
	<isp>Ural Regional Bank Net UralWES</isp>
	<lat>56.0000</lat>
	<lng>60.0000</lng>
	<fias>2763c110-cb8b-416a-9dac-ad28a55b4402</fias>
	<kladr>6600000100000</kladr>
	<host>192.0.0.1.mts.tc</host>
	<useragent>Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 YaBrowser/20.9.2.101 Yowser/2.5 Safari/537.36</useragent>
	<device>desktop</device>
	<browser>Yandex Browser 20</browser>
	<os>Windows</os>
	<shop_country_location id="55">
		<shop_country_id>175</shop_country_id>
		<sorting>0</sorting>
		<active>1</active>
		<name>Свердловская обл.</name>
		<shop_country id="175">
			<alpha2>RU</alpha2>
			<sorting>0</sorting>
			<active>1</active>
			<name>Россия</name>
		</shop_country>
	</shop_country_location>
	<shop_country_location_city id="1888">
		<shop_country_location_id>55</shop_country_location_id>
		<sorting>0</sorting>
		<active>1</active>
		<name>Екатеринбург</name>
	</shop_country_location_city>
</current>

Данный модуль может работать с модулем "Кэширование" (редакция "Бизнес"), что значительно ускоряет определение и вывод информации или при недоступности сайта сервиса, уменьшает использование лимитов сервиса

На сайт "ходят" не только обычные посетители, но и поисковые боты, которые могут создавать много запросов к сайту и соответственно к сервису, для таких случаев модуль фильтрует запросы от поисковых ботов.

Любая local DB работает во много раз быстрее API (можно посмотреть на онлайн-демо) и не требует модуля "Кэширование", но требует знаний работы с CRON и сервером

Вопросы, поддержка и предложения:

  • Email:
  • Телефон: +7 (343) 288-299-8
  • telegram: @morozovpimnev
  • whatsapp: +79122442150
  • Онлайн чат: jivo.chat
  • Подписка на новости: vk.cc/at7dDP

Техническая поддержка и гарантированный доступ к обновлениям модуля осуществляется в течение 6 месяцев со дня оплаты модуля.

Версии модуля

Версия Дата Описание Версия от Версия до
1.5 22.10.2020 В возвращаемые данные добавлено: хост, user agent, device/browser/OS (для версии 6.9.3 и выше) 6.5.4
1.3 19.06.2020 Добавлен драйвер DaData В возвращаемые данные добавлено: широта и долгота 6.5.4
1.2 18.05.2020 Добавлен драйвер Геокодер Google Maps 6.5.4
1.2 12.05.2020 Добавлен драйвер Геокодер Яндекс.Карт 6.5.4
1.1 07.05.2020 Для драйвера Sypex Geo добавлена возможность работы через базу на сервере, для обновления базы используйте CRON задачу 6.5.4
1.0 05.05.2020 IpGeoBase, Sypex Geo, ip-ipi, MaxMind, GeoIP 6.5.4
Похожие