www.kaminskiy-web.com | contact@kaminskiy-web.com
Статьи для веб-мастера - Kaminskiy-web

Главная страницаОбо мнеКонтактная информация
Статьи HTML и CSS JavaScript PHP и MySQL Раскрутка сайтов Хостинг Рейтинг украинского хостинга Анекдоты Анекдотов стрит

По какому запросу найден сайт в поисковике

Автор статьи: Сергей Каминский

Обновление: Многие браузеры могут по-умолчанию скрывать referer, то-есть адрес страницы с которой пришел пользователь, соответственно получить данные может быть невозможно. К тому же Яндекс и Гугл в ближайшее время планируют шифровать запросы пользователя в адресной строке и посмотреть по каким фразам были переходы из этих поисковых систем можно будет только из Яндекс Метрики и Гугл Аналитики соответственно.

В этой статье я расскажу как написать скрипт, который будет определять с какого поисковика пришел посетитель, по какой поисковой фразе был найден ваш сайт в поисковой системе и количество переходов. Также вы сможете узнать на какие страницы сайта попал посетитель по определенным ключевым словам, что позволит подобрать дополнительные поисковые фразы для дальнейшей оптимизации сайта и оценить уже проделанную работу.

Узнавать все нужные нам данные мы будем по 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 />';
}

?>
Просмотр статистики поисковых фраз Интерфейс администрирования – просмотр статистики поисковых фраз

Наш скрипт готов. Он будет работать только для выбранных нами поисковиков. Я привел пример с тремя наиболее известными поисковыми системами, но вы легко можете добавить все, которые посчитаете нужными.

Другие записи по теме в разделе статьи по PHP и MySQL

Копирование статьи запрещено.