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

Автоопределение города пользователя на основе GeoIP - версия 3.0

Автоопределение города пользователя на основе GeoIP - версия 3.0
#
Kotoff
Добрый день всем )

Предлагаю вашему вниманию сиквел еще одного старого хита - GeoIp v.2 для HostCMS

Спасибо he100885ldv и BorisK, которые замотивировали меня на портирование этой разработки на HostCMS API v.6

В качестве сервиса для определения по-прежнему используется ipgeobase.ru, формат вызова и возвращаемого результата схожи со старой разработкой, но немного изменены в стилистике нового API. Также, в новом модуле реализовано два уровня кеширования, для предотвращения излишней нагрузки на сервис.

Код модуля, традиционно, размещен в репозитарии на BitBucket - https://bitbucket.org/JamesKotov/geoip-for-hostcms-v.6/overview

Увидеть работу модуля можно на демо-сайте

Скачать последнюю версию - по ссылке https://bitbucket.org/JamesKotov/geoip-for-hostcms-v.6/get/tip.zip

Для установки просто распакуйте скачанный архив в корень вашей системы.

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

<?
$sIp = Core_Array::get($_SERVER, 'REMOTE_ADDR', Core_Array::get($_SERVER, 'HTTP_X_FORWARDED_FOR', '127.0.0.1'));
echo 'Ваш IP ' . $sIp;
$oGeoData = Core_Geoip::instance()->getGeoData($sIp);
if (!is_null($oGeoData))
{
   echo 'Ваш город ' . Core_Entity::factory('Shop_Country_Location_City', $oGeoData->cityId)->name;
   echo 'Ваш регион ' . Core_Entity::factory('Shop_Country_Location', $oGeoData->locationId)->name;
   echo 'Ваша страна ' . Core_Entity::factory('Shop_Country', $oGeoData->countryId)->name;
}
else
{
   echo 'Для вашего IP определить регион не удалось';
}
?>
Заказов не беру. Консультирую редко.

ПрофильЦитировать выделенное29.01.2015 01:36:41 • Сообщений: 2364
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
Puma
сегодня сайт http://ipgeobase.ru не работает

и на сайтах данный модуль выдает ошибки

https://yadi.sk/i/nmKvNYLO3GRDcw

как это обойти?

ПрофильЦитировать выделенное28.03.2017 15:30:02 • Сообщений: 493
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
Kotoff
Puma, в месте вызова модуля временно заменить строчку
$oGeoData = Core_Geoip::instance()->getGeoData($sIp);

на
$oGeoData = null; //Core_Geoip::instance()->getGeoData($sIp);
Заказов не беру. Консультирую редко.

ПрофильЦитировать выделенное28.03.2017 15:32:13 • Сообщений: 2364
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
alexpimnev
а лучше подключаться через cURL
$oCore_Http = Core_Http::instance('curl')

чтобы не было ошибок, и тогда если нет соединения будет null, а если есть то все ок
www.morozovpimnev.ru - дизайн сайтов, фирменных стилей | Создание мобильных приложений iPhone, iPad, Android

ПрофильЦитировать выделенное28.03.2017 16:27:01 • Сообщений: 486
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
alexpimnev
$oCore_Http = Core_Http::instance('curl')

Примечание: корректно работает с версии 6.6.4
www.morozovpimnev.ru - дизайн сайтов, фирменных стилей | Создание мобильных приложений iPhone, iPad, Android

ПрофильЦитировать выделенное07.04.2017 11:55:24 • Сообщений: 486
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
Seri
Доброго дня всем. Осмелюсь спросить нет ли у кого решение поиска по локальной базе не обращаясь на http://ipgeobase.ru:7020/geo?ip=194.135.98.198
Уж больно сайт тормозит аж на 3-4 секунды как подключаю пример. Хочется держать у себя локальную базу адресов и по нему вытащить данные.
Вдруг как написал Puma перестанет работать сайт ipgeobase.ru или начнет долго отдавать данные. Что плачевно сайт не откроется тогда во время.
Пробовал сделать поиск как тут https://github.com/rossvs/ipgeobase.php но к сожалению уже база  http://ipgeobase.ru/cgi-bin/Archive.cgi другая.
Буду рад любым подсказкам и решением данного вопроса.
E-mail: info@syrbek.ru / skype: activexm / www.syrbek.ru / г. Москва

ПрофильЦитировать выделенное23.08.2017 18:03:33 • Сообщений: 310
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
alexpimnev
Seri,
что значит база другая, скачиваете архив, там 2 файла (cidr_optim.txt и cities.txt), пример скрипта для поиска по этим файлам тут https://github.com/rossvs/ipgeobase.php/blob/master/ipgeobase.php
www.morozovpimnev.ru - дизайн сайтов, фирменных стилей | Создание мобильных приложений iPhone, iPad, Android

ПрофильЦитировать выделенное23.08.2017 18:16:09 • Сообщений: 486
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
Seri
alexpimnev,
Спасибо, с первого раза быстрым обходом не заметил что пример реализован на основе поиска из *.txt файлов. Файлы перевел в БД MySQL стало более понятно, и конечно результат выдачи намного быстрее все же локально.
Интересует вопрос реализовать алфавитный указатель например как на примере например от А до Я по клику на букву выводим фильтром города выбранной страны.
Знаю есть querybuilder и DISTINCT  хочется понять как бы выделить только первые буквы городов в XSL или прямо в MySQL запросе .

Вопрос снят:
SELECT DISTINCT LEFT(`name`, 1) AS name FROM shop_country_location_cities WHERE shop_country_location_id = 175
E-mail: info@syrbek.ru / skype: activexm / www.syrbek.ru / г. Москва

ПрофильЦитировать выделенное29.08.2017 17:13:13 • Сообщений: 310
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
alexpimnev
Seri,
Будет пустой результат (если конечно вы не переделали таблицу), т.к. shop_country_location_id - это id областей, а 175 это id страны
www.morozovpimnev.ru - дизайн сайтов, фирменных стилей | Создание мобильных приложений iPhone, iPad, Android

ПрофильЦитировать выделенное29.08.2017 18:32:07 • Сообщений: 486
Re: Автоопределение города пользователя на основе GeoIP - версия 3.0
#
Seri
alexpimnev писал(а):
Будет пустой результат

Результат
E-mail: info@syrbek.ru / skype: activexm / www.syrbek.ru / г. Москва

ПрофильЦитировать выделенное30.08.2017 11:44:58 • Сообщений: 310
Авторизация