Определение региона посетителя сайта

драйвер от аудашки Creative всегда убивал меня своей истинной американскостью. "Выберите ваш регион". Пункты: 1.Америка 2.Все другие регионы. bash.org.ru
Задача состоит в том, чтобы, опираясь на данные, передаваемые посетителем сайта, определить его региональное положение. Это может понадобиться для того, чтобы по умолчанию отразить на сайте нужную контактную информацию или альтернативный контент. Для определения региона посетителя сайта можно использовать как серверные, так и клиентские технологии.

Определение региона с помощью nginx

Этот способ целесообразно использовать, если сайт находится на собственном виртуальном или физическом сервере. В этом случае изменение конфигурации nginx и загрузка баз не составят большого труда.  Процесс осуществляется в четыре шага: 1. Ставим базу GeoIP. Страны есть в deb-пакете. Для определения города придется скачать свой пакет. 2. Добавляем в /etc/nginx/nginx.conf в секцию http строки: 3. В файл /etc/nginx/fastcgi_params добавляем переменные, котоыре будут передаваться в массив $_SERVER веб-приложения: Этот файл должен быть подключен в параметрах виртуального хоста nginx. 4. Перезапускаем сервер Определение региона сайта с помощью php Если модификация настроек nginx невозможна, или данный сервер отсутствует, определить регион посетителя можно с помощью библиотеки geoip. Если библиотека подключена, становятся доступными следующие функции:
  • 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 — Возвращает часовой пояс клиента (по вычисленной стране и региону).
Если библиотека не подключена, но есть возможность ее установить, то это делается так: 1. Закачиваем и устанавливаем базу и модуль для php. 2. Проверяем, чтобы расширение php было подключено (/etc/php5/fpm/conf.d), и перезагружаем интерпретатор. 3. Проверяем установку:

Определение региона сайта с помощью javascript

Этот способ подойдет, если нет возможности определения региона пользователя на уровне сервера. На мой взгляд, лучшим решением является зарегистрировать свой сайт в сервисе http://ipgeobase.ru/ и использовать возвращаемые данные на сайте. Сервис возвращает в формате xml данные о локации пользователя. Т.к. данные структурированы, с ними легко работать. Посмотреть возвращаемый результат можно, введя в браузере http://ipgeobase.ru:7020/geo?ip=Ваш_ip например: http://ipgeobase.ru:7020/geo?ip=195.133.205.114 На jquery разбор будет примерно такой: Минусов у такого решения много: 1) Не работает без javascript 2) Надо обязательно предусмотереть отсутствие кеширования, т.е. скрипт не должен кешироваться системой управления контентом 3) Т.к. работа скрипта зависит от стороннего сервиса, снижается его надежность   Если при создании сайта не была предусмотрена возможность работы с регионами, сделать соответствующую доработку совершенно не сложно.
  • Василий

    Очень интересно. Пробую запустить проект где по геоположению.. пользователя выводиться альтернативный контент. Сайт делали ламеры на джумле. Кошмар какой-то.. Если есть возвожность проконсультировать-:-) ну или как то помочь может?!:) norman@infonet.nnov.ru василий спасибо:)

  • Совершенно не нужная вещь! Нафига выводить регион откуда прише посетитель. Для этого наблюдения есть Яндекс метрика.

    • Для подачи например региональной рекламы. Неправильно показывать москвичу рекламу ресторана в Питере.

  • Владимир

    Здравствуйте!
    Подскажите, пожалуйста, как на JS сделать определение региона и вывод в шапке сайта название региона, местного номера телефона и email?
    С JS не дружу…((