Среда, 27.11.2024, 22:29
Клан программистов ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории каталога
Юмор [6]
Полезные статьи [94]
Полезная информация по вебразработке, продвижению своего проекта и т.д.
Photoshop [29]
Языки программирования [20]
Коды, читы для PSP [27]
Интересное в сети [12]
Самые интересные новости и достижения найденые в инете
Обзоры игр [31]
Железо [93]
Игровые приставки [4]
Мобильные телефоны [835]
Интернета и icq!Настройка [15]
описание как настроить ваш телефон для нормальной работы интернета и icq
Наш опрос
В какое время вам нужен рабочий Ftp-сервер??
Всего ответов: 51
 Каталог статей 
Главная » Статьи » Языки программирования

Анализ посещаемости сайта рефералами

Каждому владельцу ресурса не будет лишним знать, откуда именно заходят посетители на его сайт. Для тех, кому интересно решение данной проблемы (задачи) с помощью 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 не пустая,  

if(!empty($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 еще не было рефералов)  

if ($rows == 0){ 

устанавливаем значение переменной $hits в "1"  

$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 находятся в одной папке.

include("referer.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 и смотреть графическую статистику переходов на ваш сайт.

Категория: Языки программирования | Добавил: Fenix (22.04.2008)
Просмотров: 958 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2024Используются технологии uCoz