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, то эта программа может помочь на начальном этапе борьбы с вирусом.