Модуль получает местоположение пользователя по его IP, и сохраняет эти данные в сессии и cookies.
Для определения местоположения используется сервис IpGeoBase.
Если сервис IpGeoBase недоступен, модуль пытается получить данные от сервиса geoip.elib.ru.
Поиск географического местонахождения IP-адреса, выделенного RIPE локальным интернет-реестрам (LIR-ам) для Российской Федерации и Украины. Поиск IP адреса осуществляется с точностью до города.
К модулю прилагается простейший компонент, который выводит город и область, к которому принадлежит IP - адрес посетителя.
Модуль получает местоположение пользователя по его IP, и сохраняет эти данные в cookies.
Для разработчиков: данные хранятся виде сериализованного массива в переменной куки ПРЕФИКС_GEOIP, и в виде обычного массива - в $_SESSION[GEOIP]
Получить данные можно так:
if(CModule::IncludeModule("altasib.geoip"))
{
$arData = ALX_GeoIP::GetAddr();
print_r($arData);
}
Работает примерно так: при первом запросе местоположения, модуль запрашивает данные с сервиса, сохраняет полученные результаты в сессии и cookies. При следующих запросах, данные берутся из сессии.
Использование cookies нужно для того, чтобы если пользователь уже заходил на сайт и для него было определено местоположение, то при повторном заходе модулю не требовалось опять получать данные. При этом модуль сравнивает предыдущий IP-адрес (который сохранился в куках) и текущий - на тот случай, если у посетителя вдруг изменилось местоположение (переехал в другой город).
Сохранение результатов в сессии и куках позволяет максимально минимизировать количество запросов к сервису и сохранять работоспособность для большинства посетителей даже в случаях, когда сервис определения местоположения недоступен.