Библиотека
веб-мастера - "море"
информации по веб-дизайну,
которая пополняется
посетителями сайта.
Главная
:: Библиотека
веб-дизайнера
:: Хостинг,
настройка веб-серверов
Анализ
посещаемости сайта
рефералами
Автор:
Николай Рудченко www.codeguru.com.ua
Каждому владельцу
ресурса не будет
лишним знать, откуда
именно заходят посетители
на его сайт. Для
тех, кому интересно
решение данной проблемы
(задачи) с помощью
PHP, и посвящена
данная статья.
Небольшое
вступление
Реферал
- это url, с которого
посетитель приходит
на ваш сайт. К примеру,
на странице http://www.site.com/links.html
есть ссылка на ваш
сайт. Если человек
нажмет на нее, то
он попадет на ваш
сайт. Тогда url
http://www.site.com/links.html
будет вашим рефералом.
Не спорю, что
у любой уважающей
себя CMS (content
management system,
система управления
содержанием) есть
модули (боты), которые
отвечают за сбор
статистики. Для
тех же, у кого на
сайте не стоит CMS,
есть возможность
попрактиковаться
в написании и конфигурировании
собственного мини-модуля
статистики.
Его можно реализовать
в небольшом скрипте,
который будет отслеживать
нажатия на ссылки,
записывать их URL'ы
в базу данных (в
нашем примере это
MySQL) и генерировать
статистику в виде
графика. Да и поможет
разобраться, как
это все работает
на самом деле, не
копаясь в модулях
сторонних разработчиков.
Нам потребуется
три файла:
referer.sql
(запрос к БД на
создание таблицы,
где будет храниться
статистика);
referer.php
(сам скрипт); viewreferer.php
(скрипт для просмотра
статистики).
Для создания
таблицы referer
необходимо выполнить
запрос referer.sql.
Вот его содержание:
CREATE TABLE
referer (url
varchar(100)
NOT NULL, hits
int(10) DEFAULT
'0' NOT NULL, PRIMARY
KEY (url) );
Теперь займемся
файлом referer.php.
Зададим значения
переменным:
$hostname
= "localhost";
// предоставляется
вашим хостером.
В большинстве
случаев это
- localhost
(иногда бывает
127.0.0.1) $username
= "your-username";
// имя пользователя
- ваш логин
для подключения
к базе данных $password
= "your-password";
// вы должны
получить его
у своего хостинг-провайдера$userstable
= "referer";
// таблица,
в которой будут
храниться результаты
работы нашего
скрипта $dbName
= "your-db-name";
// имя БД, в
которой содержится
таблица referer
В переменную
$ref заносим информацию
о ссылке-реферере:
$ref = strtolower($HTTP_REFERER);
С помощью функции
strtolower
переводим значение
переменной $ref
в нижний регистр.
Это делается для
того, чтобы ссылки
типа www.site.com,
www.Site.com или
WWW.SITE.COM были
одинакового регистра.
Если переменная
$ref не пустая,
то подключаемся
к БД:
mysql_connect($hostname,$username,
$password) or
die(mysql_error()); mysql_select_db("$dbName")
or die(mysql_error());
Производим выборку
из столбца url,
значение которого
совпадает с $ref
$query =
"select
* from $userstable
where url =
'$ref'";
Переменная $rows
содержит количество
совпадений
$result =
mysql_query($query); $rows
= mysql_num_rows($result);
Если же не найдено
ни одной записи
(т.е c такого url'a
еще не было рефералов)
устанавливаем значение переменной $hits в "1"
А далее просто
выполняем вставку
url'а и переменной
$hits в нашу
таблицу (referer):
$query1 = "insert into $userstable (url,hits) values('$ref','$hits')";
Выполняем запрос:
mysql_query($query1); }
Если же были
найдены записи по
данному url (т.е
c этого url'a уже
заходили рефералы),
else {
$hitquery
= "select
hits from $userstable
where url =
'$ref'";
$result2
= mysql_query($hitquery);
$row = mysql_fetch_array($result2);
$hits = $row["hits"];
Инкрементируем
значение переменной
$hits (увеличиваем
на "1")
$query2 =
"update
$userstable
set hits = hits+1
where url =
'$ref'";
mysql_query($query2);>
}
}
В ту страницу
сайта, для которой
необходима статистика
по рефералам (как
правило - это главная
страница, index.php),
необходимо вставить
ссылку на скрипт
referer.php.
Предполагается,
что файлы referer.php
и index.php находятся
в одной папке.
На этом и заканчивается
содержимое скрипта
referer.php.
Но, как я написал
выше, есть также
и графическая статистика.
Это будет наш третий
файл - viewreferer.php.
Задаем переменные
для подключения
к БД:
$hostname
= "localhost";
$username
= "your-username";
$password
= "your-password";
$userstable
= "referer";
$dbName =
"your-db-name";
Так как этот
скрипт генерирует
таблицу с графиком,
то есть смысл для
определенных диапазонов
значений хитов назначить
определенные цвета.
$color10
= "#FFFF00";
$color20
= "#FF0000";
$color50
= "#008000";
$color1k
= "#0000FF";
$color2k
= "#0000A0";
$color5k
= "#000040";
Опять соединяемся
с БД:
mysql_connect($hostname,
$username,$password)
or die(mysql_error());
mysql_select_db("$dbName")
or die(mysql_error());
Делаем выборку
из БД и упорядочиваем
ее по убыванию (desc)
количества хитов
(столбец hits).
$query =
"select
* from $userstable
order by hits
desc";
$result =
mysql_query($query);
Подсчитываем
количество строк
с уникальными рефералами
(это попросту число
строк в нашей таблице
referer).
$number
= mysql_num_rows($result)
or die (mysql_error());
$i = 0;
Если же не найдено
ни одной записи
(таблица пуста),
то выводим сообщение:
if ($number
== 0) {
echo "<center><p><b>Сведений
о рефералах
не обнаружено!</b></center>";
}Если же
рефералы есть:
elseif ($number
>= 1) {
while ($i
< $number){
$row = mysql_fetch_array($result);
$hits = $row["hits"];
$ref = $row["url"];
Выбираем цвет
для текущего значения
hits:
if ($hits
<10){
$color =
"$color10";
}
elseif (($hits
>= 10 )
and ($hits
< 20)){
$color =
"$color20";
}
elseif (($hits
>= 20 )
and ($hits
< 50)){
$color =
"$color50";
}
elseif (($hits
>= 50 )
and ($hits
< 100)){
$color =
"$color1k";
}
elseif (($hits
>= 100 )
and ($hits
< 200)){
$color =
"$color2k";
}
elseif ($hits
>= 200){
$color =
"$color5k";
}
Табличка с графиком
строится как результат
MySQL-запроса. В
первой колонке содержится
название url'а,
а во второй - количество
хитов, а в третей
- цветная полоса.
echo "<div
align=\"left\">";
echo "<table
cols=\"3\"
border=\"0\"
width=\"100%\"><tr><td
align=\"left\"
width=\"400\"><b><a
href=\"$ref\">$ref</a></b></td>";
echo "<td
align=\"right\"
width=\"60\"><b>$hits</b></td>";
echo "<td
align=\"left\"
width=\"$hits\"
bgcolor=\"$color\"></td></tr>";
$i++;
echo"</table>\n";
}
}
Итак, все готово!
Теперь можно периодически
вызывать скрипт
viewreferer.php
и смотреть графическую
статистику переходов
на ваш сайт.
Дата
публикации: 30.07.06
При
публикации этой
статьи на других
сайтах указание
имени автора статьи
и ссылки на источник
обязательно.
Если
Ваша статья относится
к тематике данного
сайта, то Вы можете
прислать её нам,
заполнив специальную
веб-форму на сайте
в разделе "
Статьи"
или отправив её
на наш e-mail: .
Ваша статья
будет рассмотрена
администрацией сайта,
и, если она удовлетворяет
нашим требованиям,
будет опубликована
на нашем сайте в
течение 1 - 5 дней.
(1-2 дня - при платной
регистрации).
Мы будем
Вам очень благодарны.
Ссылка на Вас гарантируется!
RSS-канал:
Все свежие новости об обновлениях, а также новости на тему веб-дизайна, хостинга, web-программирования и проч. Если вы следите за нужной информацией, то получите информацию первым через наш RSS-канал, даже не посещая на наш веб-сайт;
Архив почтовой рассылки "Веб-дизайн - это просто! Теория и практика" и подписка на неё:
Эта рассылка создана специально для тех, кто не хочет иметь проблем с созданием, поддержкой и раскруткой своего сайта. Полезные и интересные статьи по веб-дизайну в Ваш почтовый ящик. Мы ответим на все ваши вопросы, связанные с разработкой и поддержкой сайта;
Реклама:
Связь с автором сайта:
|