Статистические сведения о посетителях сайта приносят не мало пользы. По
статистике можно подогнать дизайн сайта в соответствии с разрешением
большинства посетителей, подогнать дизайн к браузеру, на котором приходят
большая часть посетителей да и просто интересно, кто заглядывает к вам на
сайт, из под какой OC, а может это поисковый робот яндекса или гугла? Хотя
некоторые системы слежения за посетителями бывают черезвычайно сложными,
но с помощью довольно простой системы можно получить любопытные сведения о
посетителях сайта. Я покажу как сделать с виду простой журнал посещений
сайта с помощью PHP и cookies (MySQL не требуется). К тому же мой пример
можно легко расширить.
Для того, что бы система работала, нужно скрипт статистики встроить в
каждую страницу. Ну или в те страницы, статистику посещений которых вы
хотите увидеть. Наш скрипт будет записывать следующие данные:
Даже эти данные, я думаю, будут весьма интересны веб-мастерам. Итак,
начнем. Скрипт будет называться sniffer.php. Я приведу текст всего скрипта
и дополню это обильными комментариями:
<?php
//sniffer.php
//защита от
непосредственного запуска
//скрипта кем то
посторонним
if
(eregi("sniffer.php",$PHP_SELF)) {
Header("Location:
index.php");
die();
}
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
extract($HTTP_COOKIE_VARS);
extract($HTTP_SERVER_VARS);
//этот фрагмент кода был
позаимствован
//из системы PHP Nuke ;)
//далее объявляю переменные
$fileName="stat.txt"; //имя
файла со статистикой
$maxVisitors=30;
//количество записей, отображаемых
//при просмотре статистики
$cookieName="visitorOfMySite"; //имя куки
$cookieValue="1";
//значение куки
$timeLimit=86400; //срок в
секундах, который должен
//пройти с момента
последнего посещения сайта, что бы
//информация о посетителе
записалась повторно. Это
//значение равно 1 дню,
т.е. один и тот же посетитель
//записывается в статистику
раз в одни сутки. Если
//эту переменную приравнять
к нулю, то будут учитываться
//все посещения одного и
того же посетителя
//далее следуют переменные,
отвечающие за отображение
//статистики
$headerColor="#808080";
$headerFontColor="#FFFFFF";
$fontFace="Arial, Times New
Roman, Verdana";
$fontSize="1";
$tableColor="#000000";
$rowColor="#CECECE";
$fontColor="#0000A0";
$textFontColor="#000000";
//все переменные
подготовлены.
//Функция записи данных о
посетителе
function saveUserData() {
GLOBAL $fileName,
$HTTP_USER_AGENT, $REMOTE_ADDR, $REMOTE_HOST,
$HTTP_REFERER, $REQUES_URI;
$curTime=date("d.m.Y @
H:i:s"); //текущее время и дата
//подготавливаю данные для
записи
if
(empty($HTTP_USER_AGENT)) {$HTTP_USER_AGENT = "Unkwnown";}
if (empty($REMOTE_ADDR))
{$REMOTE_ADDR = "Not Resolved";}
if (empty($REMOTE_HOST))
{$REMOTE_HOST = "Unknown";}
if (empty($HTTP_REFERER))
{$HTTP_REFERER = "No Referer";}
if (empty($REQUEST_URI))
{$REQUEST_URI = "Unknown";}
$data_ =
$HTTP_USER_AGENT."::".$REMOTE_ADDR."::".$REMOTE_HOST."::
".$HTTP_REFERER."::".$REQUEST_URI."::".$curTime."\r\n";
//разделителем будут два
":"
//далее пишу в файл
if (is_writeable($fileName)
) :
$fp = fopen($fileName,
"a");
fputs ($fp, $data_);
fclose ($fp);
endif;
}
//функция записи готова.
Теперь нужно написать
//функцию вывода данных из
файла статистики
function showStat () {
GLOBAL $headerColor,
$headerFontColor, $fontFace, $fontSize, $tableColor,
$fileName, $maxVisitors,
$rowColor, $fontColor, $textFontColor;
//вывожу таблицу
$fbase=file($fileName);
$fbase =
array_reverse($fbase);
$count = sizeOf($fbase);
echo "<font
face=\"$fontFace\" color=\"$textFontColor\" size=\"$fontSize\">";
echo "Всего посещений:
$count<br><br>";
echo "<div
align=\"center\">
<table cellpadding=\"2\"
cellspacing=\"1\" width=\"95%\"
border=\"0\"
bgcolor=\"$tableColor\">";
echo "<tr
bgcolor=\"$headerColor\"><td><
font face=\"$fontFace\"
color=\"$headerFontColor\"
size=\"$fontSize\">Браузер
</font>
</td><td><font face=\"$fontFace\"
color=\"$headerFontColor\"
size=\"$fontSize\">IP</font></td>
<td><font
face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Хост</font></td>
<td><font
face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Ссылка</font></td>
<td><font
face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Страница</font></td>
<td><font
face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Время
визита</font></td></tr>";
echo "</font><font
face=\"$fontFace\" size=\"$fontSize\">";
//открываю файл и запускаю
цикл
$fbase=file($fileName);
$fbase =
array_reverse($fbase);
for ($i=0;
$i<$maxVisitors; $i++) :
if ($i>= sizeof($fbase))
{break;}
$s = $fbase[$i];
//разделяю
$strr = explode("::", $s);
if (empty($strr)) {break;}
//вывожу данные
echo "<tr><td
bgcolor=\"$rowColor\"><
font face=\"$fontFace\"
color=\"$fontColor\"
size=\"$fontSize\">$strr[0]</font>
</td><td
bgcolor=\"$rowColor\"><
font face=\"$fontFace\"
color=\"$fontColor\"
size=\"$fontSize\">$strr[1]</font>
</td><td
bgcolor=\"$rowColor\"><
font face=\"$fontFace\"
color=\"$fontColor\"
size=\"$fontSize\">$strr[2]</font>
</td><td
bgcolor=\"$rowColor\"><
font face=\"$fontFace\"
color=\"$fontColor\"
size=\"$fontSize\">$strr[3]</font>
</td><td
bgcolor=\"$rowColor\"><
font face=\"$fontFace\"
color=\"$fontColor\"
size=\"$fontSize\">$strr[4]</font>
</td><td
bgcolor=\"$rowColor\"><
font face=\"$fontFace\"
color=\"$fontColor\"
size=\"$fontSize\">$strr[5]</font></td>
</tr>";
endfor;
}
?>
Скрипт сбора и показа статистики готов. Теперь нужно вставить в те
страницы, информацию о посетителях которой вы хотите просмотреть:
Обратите внимание, что этот код нужно вставлять в самый верх страницы,
до того, как данные будут передаваться в браузер. В противном случае
установить куки не получится. Далее сделаем страницу, выводящюю
статистику:
Здесь мы просто включили файл sniffer.php и вызвали из него функцию
showStat() Вот с помощью такого небольшого скрипта, длинной всего ровно в
100 строк, можно с помощью PHP получить и в удобном виде просмотреть.
Здесь ещё много чего предстоит сделать, например сделать статистику по
реферерам, браузерам... Так же можно из HTTP_USER_AGENT вытащить браузер и
ОС и записать их в более удобном виде. Кстати, все размеры при выводе
статистики я расчитывал при разрешении 1024*768 и у меня все удобно
помещается в одну строку. Этот скрипт можно скачать с моего сайта:
http://coding.pp.ru . Если возникнут вопросы, то я с удовольствием на них
отвечу: admin@coding.wp-club.net