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 обрабатывается обычными веб-браузерами.
Интересные материалы на сайте:
Сохранение скриншотов в нужном графическом формате прямо в выбранный каталог без дополнительных манипуляций со стороны пользователя.
Определяет видимую геометрию изображения на экране и ищет битые пиксели (актуально для LCD мониторов).
Субъективная оценка результатов футбольного матча между двумя произвольными командами.
Если вирус заблокировал доступ к списку процессов windows, то эта программа может помочь на начальном этапе борьбы с вирусом.