Выдано 127046 лицензий

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

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

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

Цена: 2 000 Онлайн-демо
Арт-студия Морозов и Пимнев, ООО
http://www.morozovpimnev.ru
+7 (343) 288-299-8

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

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

Менее 50 установок.

Установить модуль вы можете через раздел «Магазин приложений» в центре администрирования 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 задачу вручную для скачивания файла базы

Яндекс Геокодер (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, настраивается в файле конфига)

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

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

$oGeoData = GeoIp_Controller::instance('maxmind')->execute();
  • ip - текущий IP адрес
  • city - наименование города
  • region - наименование области
  • district - наименование округа (не у всех сервисов)
  • country - наименование страны
  • country_iso - ISO код страны
  • Shop_Country_Location - объект HostCMS области
  • Shop_Country_Location_City - объект HostCMS города
  • zip - почтовый индекс (не у всех сервисов)
  • isp - провайдер (не у всех сервисов)
$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_iso>RU</country_iso>
	<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: info@morozovpimnev.ru
  • Телефон: +7 (343) 288-299-8
  • telegram: @morozovpimnev
  • skype: a.pimnev
  • Подписка на новости: vk.cc/at7dDP

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

Версия Дата Описание Версия от Версия до
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
Похожие