По какому запросу найден сайт в поисковике
Автор статьи: Сергей Каминский
В этой статье я расскажу как написать скрипт, который будет определять с какого поисковика пришел посетитель, по какой поисковой фразе был найден ваш сайт в поисковой системе и количество переходов. Также вы сможете узнать на какие страницы сайта попал посетитель по определенным ключевым словам, что позволит подобрать дополнительные поисковые фразы для дальнейшей оптимизации сайта и оценить уже проделанную работу.
Узнавать все нужные нам данные мы будем по referer (адрес с которого пришел посетитель). Допустим, посетитель искал слово «картошка» и в результатах поиска был также ваш сайт. Если посетитель нажал на ссылку, ведущую на сайт, то его referer будет таким, если он пришел с Яндекса:
http://yandex.ru/yandsearch?stype=www&nl=0&text=%EA%E0%F0%F2%EE%F8%EA%E0
В данном адресе есть вся нужная нам информация. Нас интерисует домен и параметр text=, после которого идет поисковый запрос в зашифрованном виде (наша «картошка»). Давайте напишем скрипт, который и будет заниматься обработкой referer, а полученные результаты мы сохраним в базе данных.
<?php
// запрещаем вывод предупреждений
Error_Reporting(E_ALL & ~E_NOTICE);
// определяем дату
$date = date("Y-m-d");
// определяем referer
$referer = $_SERVER['HTTP_REFERER'];
// узнаем адрес данного скрипта,
// то-есть страница на которой находится посетитель
$page = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
// подключаем файл, который будет соединяться с базой данных
include('config.inc.php');
// ищем в referer адреса поисковиков и присваиваем переменным
// $search и $crawler соответствующие значения
if (stristr($referer, 'yandex.ru')) {
$search = 'text=';
$crawler = 'Yandex';
}
if (stristr($referer, 'rambler.ru')) {
$search = 'words=';
$crawler = 'Rambler';
}
if (stristr($referer, 'google.com')) {
$search = 'q=';
$crawler = 'Google';
}
// если посетитель пришел с поисковика то выполняем следующий код
if (isset($crawler)) {
// здесь мы приводим referer в понятный для человека вид
$phrase = urldecode($referer);
// ищем ключевое слово (картошку) в referer
eregi($search.'([^&]*)', $phrase.'&', $phrase2);
$phrase2 = $phrase2[1];
// начальное значение количества просмотров
$quantity = 1;
// ищем совпадения в базе данных
$check = mysql_query("select * from keyphrase where crawler='$crawler'
and keyphrase='$phrase2' and page='$page' and referer='$referer'
and date='$date';");
$result = mysql_num_rows($check);
// если совпадений нет, то добавляем новые данные в базу
if (!$result) mysql_query("insert into keyphrase values('".$crawler."',
'".$phrase2."', '".$page."','".$referer."',
'".$quantity."', '".$date."')");
// иначе просто обновляем количество переходов
else mysql_query("UPDATE keyphrase SET quantity=quantity+1
WHERE crawler='$crawler' and keyphrase='$phrase2' and page='$page'
and referer='$referer' and date='$date';");
}
?>
Приведенный выше код нужно встроить во все страницы вашего сайта или же вы можете поместить этот код в отдельный файл, а referer и страницу на которой находится посетитель определять с помощью JavaScript и передавать полученные данные PHP-скрипту. Вы можете прочитать об этом в статье "Как передать переменную из JavaScript в PHP".
В config.inc.php занесем информацию для подключения к базе данных и код, который будет соединяться с MySQL.
<?php
define('DB_HOST', 'localhost'); // сервер БД
define('DB_USER', 'login'); // логин БД
define('DB_PASS', 'password'); // пароль БД
define('DB_NAME', 'database'); // имя БД
if (!$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS)) {
echo 'не могу подключиться';
exit;
}
if (!mysql_select_db(DB_NAME)) {
echo 'не могу подключить БД';
exit;
}
?>
Напишем install.php, который будет создавать таблицу в базе данных.
<?php
include('config.inc.php');
$result = mysql_query("CREATE TABLE keyphrase
(crawler char(40) null,
keyphrase char(255) null,
page char(255) null,
referer char(255) null,
quantity int(10) NOT NULL DEFAULT '0',
date date null);");
if ($result) echo 'Установка успешно завершена!';
else echo 'Не могу создать таблицу keyphrase.
Возможно уже существует таблица с таким именем.';
?>
Запускаем install.php чтобы завершить установку скрипта. Теперь создадим admin.php, с помощью которого мы будем просматривать все полученные данные.
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
include('config.inc.php');
if (!$date) {
$date=date("Y-m-d");
}
// удаляем данные за выбранный день при нажатии на ссылке "удалить"
if (isset($delete)) {
$del = mysql_query("delete from keyphrase WHERE date='$delete'");
}
if ($del) echo '<span style="color: #ff0000">Статистика за день ' . $delete;
echo ' удалена</span><br /><br />';
// выводим навигацию по статистике
$query = mysql_query("select distinct date from keyphrase");
$query_res = mysql_num_rows($query);
for ($i = 0; $i<$query_res; $i++) {
$row = mysql_fetch_array($query);
echo 'Статистика за <a href="admin.php?date=' . $row["date"] . '">' .
$row["date"] . '<a/>';
echo ' - <a href="admin.php?delete=' . $row["date"] . '">удалить</a><br />';
}
echo '<br />';
// выводим данные за выбранную дату
$check = mysql_query("select * from keyphrase where date='$date';");
$result = mysql_num_rows($check);
for ($i = 0; $i<$result; $i++) {
$row = mysql_fetch_array($check);
echo '<strong>' . $row["crawler"] . '</strong> нашел';
echo ' <a href="' . $row["referer"] . '">' . $row["keyphrase"] .
'</a> на странице';
echo ' <a href="' . $row["page"] . '">' . $row["page"] . '</a>';
echo ' переходов <strong>' . $row["quantity"] . '</strong><br />';
}
?>
Интерфейс администрирования – просмотр статистики поисковых фраз
Наш скрипт готов. Он будет работать только для выбранных нами поисковиков. Я привел пример с тремя наиболее известными поисковыми системами, но вы легко можете добавить все, которые посчитаете нужными.
Копирование статьи разрешается только в случае размещения на странице с копией прямой активной не запрещенной для индексирования поисковиками и доступной пользователям ссылки на оригинал статьи.
|