Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »
реклама
Читайте здесь http://nettrends.ru/ о том, как правильно проводить анализ посещаемости сайта.

Почтовая рассылка

Подписчиков: 11656
Последний выпуск: 19.06.2015

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

Автор: Николай Рудченко
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. Зададим значения переменным:

// предоставляется вашим хостером. В большинстве
// случаев это - localhost (иногда бывает 127.0.0.1)
$hostname = "localhost"; 

// имя пользователя - ваш логин для подключения к базе данных
$username = "your-username"; 

// вы должны получить его у своего хостинг-провайдера
$password = "your-password";

// таблица, в которой будут храниться результаты работы нашего скрипта
$userstable = "referer";

// имя БД, в которой содержится таблица referer
$dbName = "your-db-name";

В переменную $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 

Выбираем цвет для текущего значения hits:

if ($hits = 10 ) 
and ($hits = 20 ) 
and ($hits = 50 ) 
and ($hits = 100 ) 
and ($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 и смотреть графическую статистику переходов на ваш сайт.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
44K
19 октября 2008 года
SEO Begun
0 / / 19.10.2008
Мне нравитсяМне не нравится
19 октября 2008, 11:45:27
Повзолю себе добавить, многие спамеры присылют поддельные рефереры, чтоб в итоге попасть в топ рефереров (как в вебализере и австатс) и получить ссылки на свои ресурсы. Необходимо в этом случае закрывать от индексации поисковыми системами такие страницы либо выводить ссылки через редирект с атрибутом нофолоу. Тогда Вы будете неинтересны спамерам :).
2.
4.8K
30 октября 2005 года
Вася Триллер
149 / / 30.10.2005
+1 / -0
Мне нравитсяМне не нравится
17 ноября 2006, 17:42:24
Я больше скажу
Referer,включающий в себя одинарную кавычку, может искарёжить SQL-запрос и, как следствие, выводимую страницу ошибкой. Я больше скажу - это настоящая дыра, приводящая к SQL-Injection. Экранировать надо бы
3.
12K
08 августа 2006 года
Dipish
33 / / 08.08.2006
Мне нравитсяМне не нравится
8 августа 2006, 23:45:37
В referrer.php в самом начале пишется запрос
select * from $userstable where url = '$ref'
нафига тогда несколькими строчками ниже делать еще один запрос
select hits from $userstable where url = '$ref'
???
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог