Итак, статистика поисковых запросов. На странице подраздела полезных php
скриптов уже кратко расписано, что это такое и с чем его едят. Хотя
можно и повториться. Статистика поисковых запросов это один из важных
скриптов любого сайта. Существуем множество готовых скриптов
статистики, куда входит и выше упомянутый элемент. Некоторые из них
бесплатны, а некоторые требуют оплаты. Кроме того любой счетчик
установленный на сайте также фиксирует поисковые запросы, историю
которых можно просмотреть зайдя в свой аккаунт рейтинговой системы,
счетчик которой установлен на сайте. Но извлечь определенной пользы для
сайта из счетчиков рейтинговых систем не удастся. Ну, а бесплатные и
платные скрипты статистики зачастую очень тяжеловесны и неповоротливы,
страшно грузят сервер, что в нашем случае, для нашего минимально
нагруженного сайтап росто неприемлимо. Поэтому долго не мудрствуя
простейший скрипт статистики, который уже присутствует в проекте вполне
можно дополнить логом статистики поисковых запросов. Как известно
поисковый запоос находится в глобальной серверной переменной
$_SERVER['HTTP_REFERER'] откуда его можно извлечь и распарсить.
Проблема в том, что для разных поисковых систем сами запросы находятся
в разных переменных и кроме того они могут быть представлены в
различных кодировках. Учитывая это и составлен небольшой класс для
распарсивания поискового запроса, представленный ниже.
<?php
class SearchWord
{
var $SearchSite;
var $SearchWord;
var $SearchRefer;
function Yandex_str($str)
{
// запрос в $text
parse_str($str);
if (isset($text))
{
return $text;
}
}
function Rambler_str($str)
{
// запрос в $words
parse_str($str);
if (isset($words))
{
return iconv('windows-1251', 'UTF-8', $words);
}
}
function Google_str($str)
{
// запрос в $q
parse_str($str);
if (isset($q))
{
return $q;
//return iconv('UTF-8', 'windows-1251', $q);
}
}
function SearchWords($SRefer)
{
global $_SERVER;
$tmp = parse_url(urldecode(trim($SRefer)));
$site = $tmp['host'];
$str = $tmp['query'];
if (eregi("yandex", $site)) // Yandex
{
$s_word = $this->Yandex_str($str);
}
elseif (eregi("rambler.", $site)) // Rambler
{
$s_word = $this->Rambler_str($str);
}
elseif (eregi("google.", $site)) // Google
{
$s_word = $this->Google_str($str);
}
else // N/A
{
$s_word = FALSE;
}
$this->SearchSite = $site;
$this->SearchWord = $s_word;
$this->SearchRefer = $SRefer;
}
}
?>
Родитель усложнен еще и поиском страницы поиска, что совершенно лишнее и в
нашем случае никакой полезной информации для администратора сайта, да и
для самого сайта не даст. Если уж интересно, для того, чтобы посмотреть
из какой страницы поисковой системы был выполнен переход достаточно
будет кликнуть по самому запросу. Php скрипт класса можно добавлять и
расширять для любой другой поисковой системы. Нужно только четко знать
кодировку и переменную в которой содержится сам запрос. Ну например,
вот запрос
http://yandex.ru/yandsearch?rpt=rad&text=%D0%B7%D0%B0%D1%80%D0%B0%D0%B1%
D0%BE%D1%82%D0%BA%D0%B0%20%D0%B2%20%D0%B8%D0%BD%D1%82%D0%
B5%D1%80%D0%BD%D0%B5%D1%82%D0%B5%20%D0%BA%D0%B0%D0%BF%D1%
82%D1%87%D0%B0 Явно видно, что он находится в переменной $text. Поэтому
с ней и нужно работать. Что касается кодировки, то в каждом отдельном
случае она другая и это также необходимо учитывать.
Это текущая статистика поисковых запросов.
Количество выводимых строк статистики можно устанавливать в .ini файле
установок сайта.Все, что с ним необходимо сделать, чтобы его запустить на Денвере,
оговаривалось ранее в конце многих предыдущих страниц данного раздела
пошагового создания php сайта. Важное дополнение. Скрипт проекта, кроме
всего выше описанного, претерпел важное изменение в части безопасности.
Практически все скрипты перенесены в глобальную папку "data/" в которой
они защищены файлом .htaccess.
|