www.gcmsite.ru

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

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

PHP: информация о переходах с поисковых систем

В этой статье будет показан механизм получения информации о переходах с поисковых систем на отдельные страницы сайта.

Алгоритм можно разделить на две части - получение и сохранение сигнала о том, что был переход с поисковой системы и суммирование информации о переходах на текущую страницу.

Программа написана на языке программирования PHP.

Рассмотрим код получения информации о переходе с поисковика на страницу:

// фиксируем заход на страницу с поисковика
//===============================================
  $fn='data/spiders/'.date('Y_m_d').'.txt';
  $tm=date('H:i:s');
  $at=trim(getenv("REQUEST_URI"));
  $at=str_replace("<",'<',$at);
  $at=str_replace(">",'>',$at);
 
  $s=getenv("HTTP_REFERER");
  $s2='';

  $pos = strpos($s, 'yandex.');
  if ($pos === false) {  } else { $s2=$tm."|".$at."|y\n";  }

  $pos = strpos($s, 'google.');
  if ($pos === false) {  } else { $s2=$tm."|".$at."|g\n";  }

  $pos = strpos($s, 'mail.');
  if ($pos === false) {  } else { $s2=$tm."|".$at."|m\n";  }

  $pos = strpos($s, 'bing.');
  if ($pos === false) {  } else { $s2=$tm."|".$at."|b\n";  }
  if ($s2!=''){
    $f=@fopen($fn, "a+" );
    @fputs($f, $s2);
    @fclose($f);
    @chmod($fn,0666);
  }
//========================================

Данный код вставляется в тело нужной страницы или в движок сайта. Как только идет открытие страницы - начинаются проверки - а не пришли ли на страницу с одного из поисковиков. Если пришли - то сохраняем время, адрес нашей страницы и имя поисковика. К сожалению, поисковые запросы уже некоторое время прячутся поисковыми системами (Yandex и Google), поэтому поисковый запрос определять не будем.

Вторая часть алгоритма - суммировать информацию о странице и вывести на экран. Оговорка - если по текущей странице нет записей, то и выводить ничего не будем.

# сколько было переходов на эту страницу
function spiders_info(){
  $fn='data/spiders/'.date('Y_m_d').'.txt';
  $f=@file($fn);
  $co=@sizeof($f);
  if ($co>0){
    $at=trim(getenv("REQUEST_URI"));
    $ay=array();
    $ag=array();
    $am=array();
    $ab=array();
    # ищем строки с нашим адресом
    for ($i=0;$i<$co;$i++){
      list($x1,$x2,$x3)=@split("[|]",trim($f[$i]));
      if ($x2==$at){
        if ($x3=='y'){ array_push($ay,$x3); }
        if ($x3=='g'){ array_push($ag,$x3); }
        if ($x3=='m'){ array_push($am,$x3); }
        if ($x3=='b'){ array_push($ab,$x3); }
      }
    }
    $coy=sizeof($ay);
    $cog=sizeof($ag);
    $com=sizeof($am);
    $cob=sizeof($ab);
    if (($coy>0)||($cog>0)||($com>0)||($cob>0)){
     echo 'Переходы с поисковых систем (сегодня).  Yandex: '.$coy.', Google: '.$cog.', Mail: '.$com.'.$cob.'.';
    }
  }
}

Перед использованием скриптов убедитесь, что существует каталог /data/spiders/ - в котором и будут храниться файлы статистики.

Можно не нагружать каждую страницу повторным обращением к сатитстике, а собрать всю информацию на одной странице. Вот пример статистики переходов с поисковых систем. А код вышеопубликованной ссылки выглядит так:

<?php
  # идем по каталогу файлов
  
  $dir = "data/spiders/";
  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();
          $a3=array();
          $co_i=0; 
          for ($i=0;$i<$co;$i++){
            list($x1,$x2,$x3)=split("[|]",trim($f[$i]));
            # ищем в таблице наш адрес. если нашли - увеличиваем там счетчик, иначе - добавляем новый элемент
            $co2=sizeof($a1);
            $find=0;
            for($j=0;$j<$co2;$j++){
              if ($a2[$j]==$x2){
                $find=1;
                $a1[$j]=$a1[$j]+1;
                $a3[$j]=$a3[$j].$x3; 
                $j=$co2; 
              }
            }
            if ($find==0){
              array_push($a1,1);
              array_push($a2,$x2);
              array_push($a3,$x3);
            }
            $co_i=$co_i+1;
          }

          echo "Количество переходов с поисковиков: ".$co_i."<br> ";
          echo "Список страниц с переходами больше 0: ";

          # сортируем получившуюся таблицу по убыванию.
          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; 
                $s=$a3[$i]; $a3[$i]=$a3[$j]; $a3[$j]=$s; 
              } 
            }
          }

          # выводим таблицу, и только те элементы, которые больше 0
 ?>
<ul>
<span style="font-family:courier;">
 №  Кол-во  Y  G  M  B  Адрес страницы<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
<?php

          for ($i=0;$i<$co;$i++){
            if ($a1[$i]>0){
              $s1=''; 
              if ($i<99){ $s1=' '; }
              if ($i<9){ $s1='  '; }

              $s2=''; 
              if ($a1[$i]<100){$s2=' ';}
              if ($a1[$i]<10){$s2='  ';}  

              $z1= substr_count($a3[$i], 'y');
              $s3='';
              if ($z1<100){$s3=' ';}
              if ($z1<10){$s3='  ';}  

              $z2= substr_count($a3[$i], 'g');
              $s4='';
              if ($z2<100){$s4=' ';}
              if ($z2<10){$s4='  ';}  

              $z3= substr_count($a3[$i], 'm');
              $s5='';
              if ($z3<100){$s5=' ';}
              if ($z3<10){$s5='  ';}  

              $z4= substr_count($a3[$i], 'b');
              $s6='';
              if ($z4<100){$s6=' ';}
              if ($z4<10){$s6='  ';}  


              echo $s1.($i+1).'  ['.$a1[$i].'] '.$s2.' '.$z1.$s3.$z2.$s4.$z3.$s5.$z4.$s6.$a2[$i].' <br>'."\n";
            } 
          }
          unset($a1);
          unset($a2); 
?>
</span></ul>

<?php

        }
      }
      closedir($dh);
    }
  }    


Стоит обратить внимание на статью "PHP: аудит посещенных страниц на сайте", рассказывающую об общем подсчете количества просмотров страниц сайта.


JavaScript — это язык веб-программирования, работающий на стороне клиента, позволяющий автоматизировать какую-либо деятельность на странице сайта, не нагружая сервер. Вся нагрузка лежит на компьютере пользователя. В нем можно создавать функции, а также использовать базовые алгоритмы, состоящие из следования-ветвления-цикла. Чаще всего программный код на языке JavaScript обрабатывается обычными веб-браузерами.

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

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