Как получить гео-положение пользователя по IP на php

Данный способ работает быстрее других и является самым распространенным по определению географического положения пользователя по его IP-адресу. Необходимо установить библиотеку «php-geoip». По умолчанию ее нет. Пример установки в linux Ubuntu. В некоторых дистрибутивах модуль может иметь название «php5-geoip» или «php7-geoip».

apt-get install php-geoip

После установки необходимо обновить базу IP-адресов. Время от времени ее тоже нужно будет обновлять.

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

После этого перезагружаем Апач.

service apache2 restart

Теперь вам будут доступны следующие функции:

geoip_continent_code_by_name — Получить двухбуквенный код континента
geoip_country_code_by_name — Получить двухбуквенный код страны
geoip_country_code3_by_name — Получить трехбуквенный код страны
geoip_country_name_by_name — Возаращает полное название страны
geoip_database_info — Получить версию БД GeoIP
geoip_db_avail — Проверить доступность БД GeoIP
geoip_db_filename — Возвращает имя файла БД GeoIP
geoip_db_get_all_info — Возвращает всю информацию о файлах БД в виде многомерного массива
geoip_id_by_name — Возвращает скоростную метрику интернет-канала пользователя (GEOIP_UNKNOWN_SPEED/GEOIP_DIALUP_SPEED/GEOIP_CABLEDSL_SPEED/GEOIP_CORPORATE_SPEED ).
geoip_isp_by_name — Возвращает имя провайдера (ISP) пользователя
geoip_org_by_name — Возвращает имя организации, за которой закреплен IP пользователя.
geoip_record_by_name — Возвращает информацию о местоположении пользователя (континент, страна, город, широта и долгота).
geoip_region_by_name — Возвращает код страны и региона
geoip_region_name_by_code — Возвращает название региона страны и код региона
geoip_time_zone_by_country_and_region — Возвращает часовой пояс клиента (по вычисленной стране и региону).

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

$record = geoip_record_by_name($_SERVER['REMOTE_ADDR']);
print_r($record);

Функция «geoip_record_by_name» вернет массив в таком виде:

Array ( [continent_code] => EU [country_code] => RU [country_code3] => RUS [country_name] => Russian Federation [region] => 84 [city] => Volgograd [postal_code] => [latitude] => 48.719398498535 [longitude] => 44.501800537109 [dma_code] => 0 [area_code] => 0 )

Можно вывести отдельно, например город пользователя:

print_r($record['city']);

Оценить статью

Как получить гео-положение пользователя по IP на php
5 (100%) 1 голос[ов]

Оставить отзыв

Please Login to comment
Войти с помощью: 
  Подписка  
Подписка

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: