Как определить откуда и по какому запросу зашли на сайт?

Как определить откуда и по какому запросу зашли на сайт?

Как определить откуда и по какому запросу зашли на сайт?

Встал такой вопрос — как определить откуда и по какому запросу зашли на сайт? Заодно и определить IP адрес зашедшего и запрошенный адрес. На основе эти данных можно написать счетчик, по аналогии с тем, что используется в Метрике от Яндекса.

Скажу сразу — решение не самое оптимально и здесь есть простор для фантазии. В частности, для анализа элемента HTTP_REFERER логичнее использовать регулярные выражения. Но вариант рабочий и на его основе можно написать что-то более серьезное.

Итак, скрипт выглядит следующим образом:

$R=$_SERVER['HTTP_REFERER'];
$A=$_SERVER['REMOTE_ADDR'];
$U=$_SERVER['REQUEST_URI'];
$R=urldecode ($R);
$S=iconv('utf-8', 'windows-1251',$R );
echo "Ваш IP - ".$A."<br>";
echo "Страница входа - ".$U."<br>";
if (strpos($S, "yandex") != 0) {
preg_match('"text=(.*?)[^&]*"', $S, $arr);
echo "Вы пришли с Яндекса по запросу ".$arr[1];
}
elseif (strpos($S, "google") != 0) {
preg_match('/q=(.*)&/sei', $S, $arr);
echo "Вы пришли с Google по запросу ".$arr[1];
}
elseif (strpos($S, "rambler") != 0) {
preg_match('"query=(.*?)[^&]*"', $S, $arr);
echo "Вы пришли с Rambler по запросу ".$arr[1];
}
else {echo "Вы пришли с ".$R;}

Все очень просто — IP адрес берется из суперглобального массива $_SERVER (элемент REMOTE_ADDR), адрес вхождения — элемент REQUEST_URI. Данные о том, откуда пришел пользователь берем из элемента HTTP_REFERER, который для поисковиков содержит также строку запроса. В дальнейшем эти данные преобразовываются в читабельное представление, примитивным способом определяем с какого поисковика к нам пришли и выделяем строку запроса.


Метки: , , , , , ,

Похожие записи
Запись опубликована в рубрике PHP, Программирование с метками , , , , , , . Добавьте в закладки постоянную ссылку.

7 комментариев: Как определить откуда и по какому запросу зашли на сайт?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*