www.gcmsite.ru

Новости Программы PHP-скрипты Статьи Числа
Услуги Резюме Игры Автомобили Поиск

СИСТЕМНОЕ И ВЕБ-ПРОГРАММИРОВАНИЕ
компьютерная техника, игры

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.

Интересные материалы на сайте:

Автор, разработчик: Шаров Евгений   (gcmsite@yandex.ru)
(c) 2000-2020 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки