Referer: от причины к следствию
19 комментариевВы когда-нибудь интересовались, по каким словам ваш сайт или блог находят люди, приходящие с поисковиков? Иногда от души ржу, просматривая статистику, собранную плагином WP-ShortStat. Но пока мы смеёмся, умные люди используют этот подарок разработчиков браузеров — переменную HTTP_REFERER, в которой всегда содержится эта информация.
Использовать её можно разными путями. В одном из них уже, кажется, с концами запутался Евгений Сергеев, разрабатывая свой «Умный эпиграф«, переоценивший способности рядового блогера.
Некоторые онлайн-магазины используют эти данные для простейших поведенческих механизмов. Например, пользователю, пришедшему по запросу «купить телевизоры», всё его время пребывания на сайте будет показываться реклама спецпредложений по продаже телевизоров. Это значительно увеличивает конверсию посетителей в покупатели.
Основной поток посетителей (с ПС) любого сайта можно разделить на ветви по нескольким ключевым словам и сделать сайт динамическим в зависимости от того, что искал пользователь. Вот простейший PHP-скрипт для определения ключевых слов, по которым на ваш сайт пришли с Yandex, Google, Altavista,Mail.ru, Rambler и Yahoo.
<?php
if (!is_empty($ref = $_SERVER['HTTP_REFERER']))
{
// $ref="http://go.mail.ru/search?q=%C6%E8%EB%E8%ED%F1%EA%E8%E9"; // проверили, работает.
$uri = parse_url($ref);
$host = isset($uri['host'])?strtolower($uri['host']):'';
parse_str($a = $uri['query'],$query);
if (preg_match('~\.yandex\.ru$~',$host)) {$search_query = $query['text'];}
elseif (preg_match('~\.google~',$host)){$search_query = $query['q'];}
elseif ($host == 'www.altavista.com') {$search_query = $query['q'];}
elseif ($host == 'go.mail.ru') {$search_query = $query['q'];}
elseif ($host == 'www.rambler.ru') {$search_query = $query['words'];}
elseif (preg_match('~\.search.yahoo.com~',$host)) {$search_query = $query['p'];}
else {$search_query = '';}
require("a.charset.php");
$search_query = charset_x_win($search_query);
}
echo $search_query;
?>
Переменную $search_query вместо отображения можно сравнивать с чем-нибудь и на основе результата строить какую-то динамику. Функция charset_x_win из класса a.charset.php просто приводит фразу к правильной русской кодировке. Кстати, если немного поколдовать — можно ещё получить номер страницы выдачи, с которой пришёл пользователь.
А Павел Воронин тем временем написал весьма интересную серию статей о создании стартапа.