Работа с GeoIP средствами битрикс

Июль 4, 2018

Теги: Основное

Работа с GeoIP (определением местоположения пользователя) штатными средствами битрикс (класс "\Bitrix\Main\Service\GeoIp").

Данные о местоположении при использовании этого класса могут быть определены при помощи разных провайдеров (MaxMind, SypexGeo и др., см. событие "onMainGeoIpHandlersBuildList").

Определение IP-адреса пользователя:


$ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();

Получение массива с данными о местоположении:


$geoIpData = \Bitrix\Main\Service\GeoIp\Manager::getDataResult($ip,LANGUAGE_ID);

/*
Bitrix\Main\Service\GeoIp\Result Object
(
    [geoData:protected] => Bitrix\Main\Service\GeoIp\Data Object
        (
            [ip] => 5.22.219.240
            [lang] => ru
            [countryName] => Россия
            [regionName] => Санкт-Петербург
            [subRegionName] => 
            [cityName] => Санкт-Петербург
            [countryCode] => RU
            [regionCode] => RU-SPE
            [zipCode] => 
            [latitude] => 59.45637
            [longitude] => 30.73856
            [timezone] => Europe/Moscow
            [asn] => 
            [ispName] => 
            [organizationName] => 
            [handlerClass] => Bitrix\Main\Service\GeoIp\SypexGeo
        )

    [isSuccess:protected] => 1
    [errors:protected] => Bitrix\Main\ErrorCollection Object
        (
            [values:protected] => Array
                (
                )

        )

    [data:protected] => Array
        (
        )

)    
*/

Код страны одной строкой:


$countryCode = \Bitrix\Main\Service\GeoIp\Manager::getCountryCode($ip,LANGUAGE_ID); // "RU", "US"

Название страны одной строкой:


$countryName = \Bitrix\Main\Service\GeoIp\Manager::getCountryName($ip,LANGUAGE_ID); // "Россия", "США"

Название города одной строкой:


$cityName = \Bitrix\Main\Service\GeoIp\Manager::getCityName($ip,LANGUAGE_ID); // "Санкт-Петербург", "Москва"

Почтовый индекс города одной строкой:


$postCode = \Bitrix\Main\Service\GeoIp\Manager::getCityPostCode($ip,LANGUAGE_ID); // NULL (определяется не всегда)

Данные о геопозиции одной строкой:


$geoPosition = \Bitrix\Main\Service\GeoIp\Manager::getGeoPosition($ip,LANGUAGE_ID);

/*
Array
(
    [latitude] => 59.45637
    [longitude] => 30.73856
)
*/
$lat = \Bitrix\Main\Service\GeoIp\Manager::getGeoPositionLatitude($ip,LANGUAGE_ID)); // float(59.45637)
$lon = \Bitrix\Main\Service\GeoIp\Manager::getGeoPositionLongitude($ip,LANGUAGE_ID)); // float(30.73856)

Другие shorthand-функции:


\Bitrix\Main\Service\GeoIp\Manager::getOrganizationName($ip,LANGUAGE_ID)); 

\
Bitrix\Main\Service\GeoIp\Manager::getIspName($ip,LANGUAGE_ID)); 
\
Bitrix\Main\Service\GeoIp\Manager::getTimezoneName($ip,LANGUAGE_ID)); // "Europe/Moscow"

См. также:

← Переход к списку