PHP: аудит посещенных страниц на сайте
В этой статье рассмотрен пример подсчета просмотров страниц сайта. Так как код скрипта встроен прямо в страницы сайта, то результат не зависит от включенных-выключенных JavaScripts, отключенных картинкок или блокираторов рекламы.
В дизайн страницы или на каждую интересующую нас страницу вставляем такой код на языке программирования PHP:
<?php
# формируем текстовую строку на файл со статистикой
$fn='data/counter/'.date('Y_m_d').'.txt';
$tm=date('H:i:s');
# получаем адрес страницы
$at=trim(getenv("REQUEST_URI"));
# добавляем запись с временем и адресом страницы в конец файла со статистикой
$f=@fopen($fn, "a+" );
@fputs($f, $tm."|".$at."\n");
@fclose($f);
@chmod($fn,0666);
?>
Теперь рассмотрим код скрипта, подсчитывающий и выводящий статистику. В данном примере отбрасываются все адреса, которые были открыты не менее 4 раз. Для более посещаемых сайтов это значение можно увеличить, чтобы статистика не была слишком громоздкой.
Также мы убираем из статистики главную страницу сайта, так как она получается слишком "накрученной" из-за постоянных простукивалок доступности сайта.
Пример работы скриптов можно посмотреть тут.
<?php
# идем по каталогу файлов
$dir = "data/counter/";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (($file!='.')&&($file!='..')){
echo "<hr> Файл: $file <br> ";
# читаем его содержимое
$f=file($dir.$file);
$co=sizeof($f);
# разбиваем содержимое на части с формированием таблицы страниц
$a1=array();
$a2=array();
$co_i=0;
for ($i=0;$i<$co;$i++){
list($x1,$x2)=split("[|]",trim($f[$i]));
# ищем в таблице наш адрес. если нашли - увеличиваем там счетчик, иначе - добавляем новый элемент
if (trim($x2)!='/'){
$co2=sizeof($a1);
$find=0;
for($j=0;$j<$co2;$j++){
if ($a2[$j]==$x2){
$find=1;
$a1[$j]=$a1[$j]+1;
$j=$co2;
}
}
if ($find==0){
array_push($a1,1);
array_push($a2,$x2);
}
$co_i=$co_i+1;
}
}
echo "Количество просмотров страниц (кроме главной): ".$co_i."<br> ";
echo "Список страниц с просмотрами больше 3: ";
# сортируем получившуюся таблицу по убыванию.
unset($f);
$co=sizeof($a1);
for ($i=0;$i<$co;$i++){
for ($j=($co-1);$j>$i;$j--){
if ($a1[$i]<$a1[$j]){
$s=$a1[$i]; $a1[$i]=$a1[$j]; $a1[$j]=$s;
$s=$a2[$i]; $a2[$i]=$a2[$j]; $a2[$j]=$s;
}
}
}
# выводим таблицу, и только те элементы, которые больше 3
?>
<ul>
<span style="font-family:courier;">
<?php
for ($i=0;$i<$co;$i++){
if ($a1[$i]>3){
if ($i<9){ $s1=' '; }else{$s1='';}
$s2='';
if ($a1[$i]<100){$s2=' ';}
if ($a1[$i]<10){$s2=' ';}
echo $s1.($i+1).' ['.$a1[$i].'] '.$s2.$a2[$i].' <br>'."\n";
}
}
unset($a1);
unset($a2);
?>
</span></ul>
<?php
}
}
closedir($dh);
}
}
?>
Дальнейшим развитием статистики может стать построение графиков показа страниц за неделю, например.
С использованием HTML5 и рисования на canvas.
Delphi — это объектно-ориентированный язык программирования со строгой типизацией переменных. Он используется в основном для написания прикладных, пользовательских программ. Простота использования позволяет рекомендовать его в качестве языка для начального обучения программированию. Хотя, если смотреть на перспективу, работодатели мало интересуются работниками, программирующими на Delphi.
Интересные материалы на сайте:
Рисуем на canvas с помощью JavaScript. Простой пример красивого рисунка.
Легко создаем черно-белые японские сканворды, распечатываем на принтере и разгадываем.
Рассматривается способ подключения ODBC драйверов в 64-битной версии Windows 7.
Исправляем проблему дублей страниц на сайте и склейку доменов с www.