Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Программисты знают откуда вы. Получение информации о клиенте, с помощью PHP

Сегодня мы поговорим о том, какую информацию о пользователе вашего сайта можно получить средствами PHP.

Основные сведения о клиенте, доступные нам через PHP, содержатся в суперглобальном массиве $_SERVER. Можете вывести данный массив на печать с помощью команды print_r($_SERVER); и наглядно убедиться в том, что в нем много интересных элементов. Рассмотрим наиболее нужные из них:

$_SERVER['HTTP_ACCEPT_LANGUAGE']

Данный элемент массива содержит список предпочитаемых языков в порядке очередности. В большинстве случаев, с помощью данного параметра можно определить национальную принадлежность пользователя, зашедшего на ваш сайт.

$_SERVER['HTTP_REFERER']

В данном параметре лежит адрес сайта, с которого пользователь перешел на вашу страницу (по клику на ссылке). Таким образом можно отследить с каких внешних ресурсов пользователи приходят на ваш сайт, проанализировать эффективность покупки рекламы на том или ином внешнем ресурсе и определить ее целесообразность.

$_SERVER['HTTP_USER_AGENT']

Этот элемент массива содержит информацию о браузере пользователя, а также о версии его операционной системы. Здесь можно узнать с какого устройства пользователь зашел на ваш сайт с мобильного или десктопа, узнать версию браузера и операционной системы. Данный параметр очень полезен для сбора статистики и улучшения юзабилити сайта. Например, если вы видите, что на ваш сайт заходят в основном с мобильных браузеров, имеет смысл поработать над удобной мобильной версией вашего ресурса.

$_SERVER['REMOTE_ADDR']

Содержит IP адрес пользователя, зашедшего на ваш сайт или последнего узла прокси, через который клиент сидит в интернете. Использование прокси затрудняет определение реального IP. Однако, если прокси не анонимные, можно получить реальный IP адрес с помощью переменной окружения HTTP_X_FORWARDED_FOR.

echo getenv(HTTP_X_FORWARDED_FOR);

Теперь давайте попробуем определить по IP адресу географическое местоположение клиента, зашедшего на ваш сайт. Это очень полезно с точки зрения контроля за таргетированной рекламой в поисковых системах. Если рекламная кампания настроена правильно, на ваш сайт будут заходить только пользователи с целевого региона. Если же вы видите в логах вашей статистики пользователей из стран Европы или Китая, то либо вам нужно перенастроить вашу рекламу, либо большинство пользователей сайта в силу каких-то обстоятельств сидят на нем через анонимные прокси.

Задача определения географического местоположения решается с помощью сторонней библиотеки, которую можно скачать здесь:

http://sypexgeo.net/ru/download/

Помимо самой библиотеки вам понадобится база данных для нее. На сайте разработчика библиотеки предлагается два варианта: бесплатный и платный, которые отличаются частотой обновления БД. Воспользуемся бесплатным вариантом. Скачаем саму библиотеку и БД для нее. Поместим файлы SxGeo.php и SxGeoCity.dat в каталог с нашим PHP скриптом. Используем в данном скрипте также некоторые элементы массива $_SERVER для наглядности.

Кроме того важно настроить ежедневное автоматическое обновление БД через cron, об этом подробно написано на их сайте. Без обновления БД геоданные могут быть ошибочны. Я использовал для демо скрипта БД Sypex Geo City от 31 октября 2017 года. В папку со скриптом я бросил sxgeo_update.php и прописал его запуск в cron.

<?php
header('Content-Type: text/html; charset=utf-8');
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
if($_SERVER['HTTP_X_FORWARDED_FOR']!='') {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
echo("Возможно ваш настоящий IP: ".$ip."<br>");
echo("Город: ".$SxGeo->getCityFull($ip)['city']['name_ru']."<br>");
echo("Регион: ".$SxGeo->getCityFull($ip)['region']['name_ru']."<br><hr><br>");
};  
$ip = $_SERVER['REMOTE_ADDR'];
echo("Ваш IP: ".$ip."<br>");
echo("Город: ".$SxGeo->getCityFull($ip)['city']['name_ru']."<br>");
echo("Регион: ".$SxGeo->getCityFull($ip)['region']['name_ru']."<br><hr><br>");
echo("Ваш браузер: ".(htmlspecialchars(stripslashes($_SERVER['HTTP_USER_AGENT']))."<br>"));
if($_SERVER['HTTP_REFERER']!=''){
echo("<br>Вы пришли отсюда: ".(htmlspecialchars(stripslashes($_SERVER['HTTP_REFERER']))."<br>"));
}
?>

Исходный код скрипта вы можете скачать здесь: https://pastebin.com/m93qF8PA

Пример работы скрипта вы можете увидеть зайдя на демо страницу:

http://pythono.ru/1/1.php

Вышеописанные возможности позволяют отслеживать такие параметры как географическое положение, национальная принадлежность, версия браузера и ОС, тип устройства, с которого клиент зашел на сайт, а также ресурс, с которого произошел переход по ссылке. Это позволяет вести статистику и сохранять в логи указанную информацию, с целью ее дальнейшего анализа и улучшения юзабилити.

Данный материал подготовлен @pythono.

Главное изображение с сайта pixabay.com

 

118
170.334 GOLOS
На Golos с August 2017
Комментарии (3)
Сортировать по:
Сначала старые