// WR-Counter v 1.3 // 24.07.12 г. // Miha-ingener@yandex.ru #error_reporting (E_ALL); include "config.php"; function prcmp ($a, $b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;} $months=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"); $weeks=array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"); $deldt=time()-$days*86400; // формируем дату удаления файлов статистики function replacer ($text) { // ФУНКЦИЯ очистки кода $text=str_replace(" ",' ',$text); $text=str_replace(">",'>',$text); $text=str_replace("<",'<',$text); $text=str_replace("\"",'"',$text); $text=preg_replace("/\n\n/",'
',$text);
$text=preg_replace("/\n/",'
',$text);
$text=preg_replace("/\\\$/",'$',$text);
$text=preg_replace("/\r/",'',$text);
$text=preg_replace("/\\\/",'\',$text);
$text=str_replace("\r\n","
",$text);
$text=str_replace("\n\n",'
',$text);
$text=str_replace("\n",'
',$text);
$text=str_replace("\t",'',$text);
$text=str_replace("\r",'',$text);
$text=str_replace(' ',' ',$text);
return $text; }
if (is_file("$datadir/mainbase.dat")) $ftime=filemtime("$datadir/mainbase.dat")+300; else $ftime=0; // + 5 минут
$tektime=time();
if ($ftime<$tektime) { // Если дата создания файла mainbase.dat менее 5 минут назад, статистику НЕ ПЕРЕСТРАИВАЕМ!
$i=0; if ($handle = opendir($datadir)) {
while (($file = readdir($handle)) !== false)
if (!is_dir($file)) {$records[$i]=$file; $i++;}
closedir($handle);
} else print 'В папке, которую вы указали нет данных счётчика!';
$itogo=count($records); $k=0; $text=null;
do {
$fline=file("$datadir/$records[$k]"); $fitogo=count($fline);
if ($fitogo!=0 and $records[$k]!="all.dat" and $records[$k]!="last.dat" and $records[$k]!="mainbase.dat" and $records[$k]!=".htaccess")
{
$thendayx=str_replace(".dat","",$records[$k]);
$dt=explode(".",$thendayx);
$then=mktime(0,0,0,$dt[1],$dt[0],$dt[2]);
$tekdate=date("d.m.Y",$then);
if ($deldt>$then) unlink ("$datadir/$records[$k]"); // Удаляем статистику позднее $maxdays (XX дней, указано в админке)
// Блок считает ХОСТЫ (уникальных посетителей)
usort($fline,"prcmp"); $numip="0"; $hi=0; $ab="0"; $ac="0";
do { $dt=explode("|",$fline[$hi]);
if ($ab!=$dt[0]) {$ab=$dt[0]; $numip++;}
$hi++; } while ($hi<$fitogo);
$text.="$then|$fitogo|$numip||$records[$k]|\r\n";
}
unset($fitogo);
unset($fline);
$k++;
} while ($k<$itogo);
$fp=fopen("$datadir/mainbase.dat","w");
flock ($fp,LOCK_EX);
fputs($fp,"$text");
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/mainbase.dat", 0644);
} // if ($ftime<$tektime)
// сортируем данные
$records=file("$datadir/mainbase.dat"); $maxi=count($records); usort($records,"prcmp");
if (isset($_GET['day'])) { $day=$_GET['day']; // ПРОСМОТР СТАТИСТИКИ ЗА СУТКИ (по каждой странице)
if (strlen($day)<12 and ctype_digit($day)) {
$file=date("d.m.Y",$day);
if (is_file("data/$file.dat")) { $records=file("data/$file.dat"); $maxi=count($records); $hitov=$maxi;
if (isset($_POST['findme'])) {
$findme=replacer($_POST['findme']);
$stroka=strlen($findme); if($stroka>2 and $stroka<30) {
$temprecord=$records; $records=null; $i=0; $hitov=count($temprecord);
foreach($temprecord as $v) {if (strpos($v,$findme)) {$i++; $records[$i]=$v;}}
$maxi=$i; $hitov="$hitov / $maxi";}} else $findme="";
// Блок считает ХОСТЫ (уникальных посетителей)
usort($records,"prcmp");
$numip=0; $numsys=0; $i=0; $ab="0"; $ac="0"; $ad="0"; $newlines=null;
do { $dt=explode("|",$records[$i]); $newlines[$i]="$dt[4]"; $i++; } while ($i<$maxi);
usort($newlines,"prcmp"); $i=0; // Сортируем все просмотренные страницы
do { $dt=explode("|",$records[$i]);
if ($ab!=$dt[0]) {$ab=$dt[0]; $numip++;}
if ($ad!=$newlines[$i]) {$ad=$newlines[$i]; $numsys++;}
$i++; } while ($i<$maxi);
$i=1; $msg=""; // Собираем информацию о посещаемых страницах
$newlines2=array_count_values($newlines); // считаем кол-во посещений каждой страницы
arsort($newlines2); reset($newlines2);
do {
$massiv=each($newlines2);
$m2=round($massiv[1]*$scale1*5);
$delta=100*$massiv[1]/$maxi;
if ($delta>2) $addstyle="bgcolor=#E6FFE6"; else $addstyle="";
if ($delta>5) $addstyle="bgcolor=#CAFFCA";
if ($delta>10) $addstyle="bgcolor=#64FF64";
$procent=round($delta,1); $procent="($procent %)";
if (strlen($massiv[0])<1) $massiv[0]="СТРАНИЦА НЕ РАСПОЗНАНА";
$msg.="
<-- Предыдущая дата: $lastday1 г. |
"; if ($dayn!=0 and $dayn!=6) print"$weeks[$dayn]"; else print "$weeks[$dayn]"; print" Итого хитов: $hitov Итого хостов: $numip Уникальных страниц: $numsys |
Следующая дата: $nextday1 г. --> |
№ п/п | Страница | Просмотров * |
"; if (sizeof($records)>=1) { // ЕСЛИ есть данные - то выводим графики if ($gtype=="1") { $itogohit=0; $itogohost=0; // ГОРИЗОНТАЛЬНЫЙ график $xdaym=" | |||||||||||||||||||||||||||||||||||||||||
Дата | \r\n "; $graph1=""; $graph2=""; // Формируем данные для графиков $g1shapka=" |
К О Л - В О Х И Т О В | \r\n"; $g2shapka=" |
К О Л - В О Х О С Т О В | \r\n"; for ($i=0; $i<$maxi; $i++) { // начало FOR $dtt=explode("|",$records[$i]); $dttn1=round($dtt[1]*$scale1); // шкала 1-го графика $dttn2=round($dtt[2]*$scale2); // шкала 2-го графика $itogohit=$itogohit+$dtt[1]; $itogohost=$itogohost+$dtt[2]; $graph1.=" |
| \r\n";
$graph2.="
| \r\n";
if (!isset($m0)) {$m0=date("m",$dtt[0])-1;}
if ($i==$maxi-1) {$m1=date("m",$dtt[0])-1;}
$xday=date("d",$dtt[0]);
$dayn=date("w",$dtt[0]); // Считаваем день недели по порядку
if ($dayn=="0" or $dayn=="6") $weekstyle="bgcolor=#FF7979"; else $weekstyle="";
$xdaym.="$xday | \r\n"; } // конец FOR $xdaym.="ИТОГО | "; $graph1.="
| \r\n";
$graph2.="
| \r\n";
$mm1=$months[$m0]; $mm2=$months[$m1]; if ($mm1==$mm2) {$mm1="";} else {$mm1.=" - ";}
$msdat="
Дата | КОЛ-ВО ХИТОВ | |||||||||||||||
\r\n"; $g2shapka=" |
Дата | КОЛ-ВО ХОСТОВ | ||
\r\n"; $xdaym=""; $graph1=""; $graph2=""; // Формируем данные для графиков for ($i=0; $i<$maxi; $i++) { // начало FOR $dtt=explode("|",$records[$i]); //$dtt[0]=date("d.m.y",$dtt[0]); if (!isset($m0)) {$m0=date("m",$dtt[0])-1;} if ($i==$maxi-1) {$m1=date("m",$dtt[0])-1;} $xday=date("d",$dtt[0]); $dttn1=round($dtt[1]*$scale1); // шкала 1-го графика $dttn2=round($dtt[2]*$scale2); // шкала 2-го графика $graph1.=" | |||
$xday |
| ||
$xday |
| ||
$g1shapka $graph1 $xdaym |