Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Собственная статистика поисковых слов (Яндекс, Рамблер, Google,...) на PHP

Источник: realcoding.net

В этой статья я бы хотел поделиться с вами своей новой разработкой – анализатором поисковых запросов с популярных поисковых систем, посмотреть, что это такое, и как работает можно здесь (http://wm-help.net/?module=word-stat). Поначалу данный анализатор поисковых запросов я писал исключительно для своих нужд, но по просьбам пользователей уже успевших посетить данную страницу решил написать статью и дать исходник PHP-класса, на котором основывается вся система статистики поисковых запросов из поисковых систем.

И так, основным источником информации служит переменная $HTTP_REFERER, в которой содержится ссылка на страницу, с которой пришли к вам на сайт. А так же переменная $_SERVER[REQUEST_URI], в которой указан полный путь к текущей странице. Благодаря этим данным и работает данный класс, из $HTTP_REFERER мы получаем поисковый запрос, страницу результатов поиска и поисковый сервер. А из $_SERVER[REQUEST_URI] точную ссылку на то, куда попал посетитель по данному запросу.

Основная сложность в разработке и реализации данного PHP-класса заключается в том, что каждый поисковый сервер использует свои названия для переменных, в которых содержатся все сведения о запросе пользователя (текст запроса, страница в результатах выдачи, другие параметры). Поэтому есть единственно правильное решение – писать для каждой поисковой системы свой анализатор поисковых запросов, отсюда и сложности – в мире существует более 50 популярных поисковых систем, а сколько их существует вообще – никто не знает.
Еще одной проблемой является невозможность получения точной страницы результатов поиска, т.к. количество ссылок в выдаче поисковой системы пользователь может определять сам, поэтому можно узнать только приблизительную страницу результатов поиска.
К проблемам можно еще отнести особенности некоторых поисковых систем, например Google и MSN – используют у себя UTF-8, а Яндекс – KOI8-R (при поиске не на первой странице результатов).

Несмотря на все сложности, которые описаны выше, у меня получился класс для более-менее корректного анализа поисковых запросов для следующих поисковых систем:

* Яндекс (http://yandex.ru/)
* Рамблер (http://rambler.ru/)
* Mail.Ru (http://go.mail.ru/)
* Апорт (http://aport.ru/)
* Google – со всех доменов (http://google.ru/)
* Yahoo (http://yahoo.com/)
* MSN (http://search.msn.com/)
* Aol

PHP-класс SearchWordимеет следующую структуру:

class SearchWord
{
    var
$SearchSite; // Адрес поисковика
   
var $SearchWord; // Поисковый запрос (фраза по которой вас нашли)
   
var $SearchRefer; // Ссылка на страницу, откуда пришли
   
var $SearchRPage; // Ссылка на страницу куда попали
   
var $SearchPage; // Номер страницы в результатах выдачи (примерно)
   
var $SearchTime; // Время обращения к вашему сайту

function Yandex_str($str) // анализатор для Яндекса
{}
function
Rambler_str($str) // для Рамблера
{}
// функции анализа других поисковиков
function Msn_str($str) // для MSN
{}

function
SearchWords($SRefer, $SPage, $STime) // производит анализ
{}

function
SearchWordsFromClass($SSW) // производит анализ, получая все данные из класса SaveSearchWord (смотрите ниже)
{}

function
Load($arr) // загружает сохраненный результат анализа из массива (для ведения статистики)
{}
}

Класс SaveSearchWord – для хранения запросов к сайту:

class SaveSearchWord
{
    var
$SRefer; // Откуда пришли
   
var $SPage; // Куда попали
   
var $STime; // Время обращения к вашему сайту

function Load($arr) // загрузка значений из массива
{
$this->SRefer     = trim(@$arr[0]);
$this->SPage      = trim(http://.$_SERVER[HTTP_HOST].trim(@$arr[1]));
$this->STime      = trim(@$arr[2]);
}

function
Set($SRefer, $SPage, $STime) // установка значений
{
$this->SRefer     = trim($SRefer);
$this->SPage      = trim($SPage);
$this->STime      = trim($STime);
}
}

Для того, что бы понять, как пользоваться классом SearchWord создадим небольшой PHP-скрипт, в котором реализуем базовые возможности данного класса:

<?php
include word-stat.class.php;
if (isset(
$HTTP_REFERER)) // установлена ли переменная $HTTP_REFERER
{
   
$new_record = new SaveSearchWord(); // Создание нового экземпляра класса SaveSearchWord
   
$new_record->Set($HTTP_REFERER, $_SERVER[REQUEST_URI], time()); // Установка значений
   
$word_stat = new SearchWord(); // Создание нового экземпляра класса SearchWord
   
$word_stat->SearchWordsFromClass($new_record); // Анализ значений
   
if (strlen($word_stat->SearchWord)>2) // Если длинна поискового запроса больше двух
   
{
        echo
<pre>;
       
print_r($word_stat); // Пачать всех значений объекта
       
echo </pre>;
    }
}
?>

Скачать PHP-класс данного анализатора поисковых запросов можно по ссылке: http://wm-help.net/download/word-stat.class.php.zip
Посмотреть, как работает статистика, основанная на данном классе: http://wm-help.net/?module=word-stat



Похожие статьи:
- Работа с MS Access в PHP
- История языка HTML
- CSS + RSS = почти идеальный блог?
- Денвер + Ruby On Rails, мануал по установке
- Варианты настройки Ruby On Rails на максимальную производительность: mongrel vs lighttpd vs nginx
- Преимущества индексации страниц с mod_rewrite
- Как узнать сколько раз скачали ваш файл
- Как сгенерировать файл .htaccess
- Проект “Ы”, Ruby on Rails, Acts as Taggable, скорость разработки
- Что нового будет в Rails 1.1 и немного секретов Prototype.js
- PHP5 - Новые возможности PHP5-Zend Engine 2_0
- Основы безопасности при работе с MySQL в PHP
- Сжатие данных на PHP


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.002]