View file counter/admin.php

File size: 15.25Kb
<? // WR-Counter v 1.0  //  17.10.06 г.  //  [email protected]

#error_reporting (E_ALL);

include "config.php";

$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$sburl="http://$host$self";
$sburl=str_replace("/admin.php", "", $sburl);

// Авторизация
if (!isset($_GET['pswrd'])) {echo "<center><form action=\"admin.php\" method=\"get\" name=pass>Введите пароль: <BR><input type=password size=\"17\" value=\"\" name=\"pswrd\"><BR><input type=\"submit\" value=\"Войти\"><SCRIPT language=JavaScript>document.pass.pswrd.focus();</SCRIPT>";}
else {if ($_GET['pswrd']=="$password") {$password=$_GET['pswrd']; // Авторизация пройдена успешно

function prcmp ($a, $b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;}



// Блок используется для удаления ПОДПИСЧИКА рассылки
if(isset($_GET['xduser'])) {
if ($_GET['xduser'] =="") {print"произошёл глюк-переглюк :-("; exit;}

$xduser=$_GET['xduser']-1;
$file=file("database.php"); $i=count($file);
if ($xduser<"1") {print "$back. 1 строкая является защитной! Её <B>НЕЛЬЗЯ УДАЛЯТЬ!</B>"; exit;}
if ($i<"3") {print "$back. Необходимо оставить хотябы <B>ОДНОГО</B> участника!"; exit;}
// удаляем строку с участником
$fp=fopen("database.php","w");
flock ($fp,LOCK_EX);
for ($i=0;$i< sizeof($file);$i++) { if ($i==$xduser) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("database.php", 0644);
Header("Location: admin.php?pswrd=$password&event=statv"); exit; }





$shapka="<html><head>
<title>Админка. Счётчик со статистикой WR-Counter 1.0</title>
<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">
<META HTTP-EQUIV=\"Cache-Control\" CONTENT=\"no-cache\">
<META content='text/html; charset=windows-1251' http-equiv=Content-Type>
<style>
BODY {FONT-FAMILY: Verdana}

a {text-decoration: underline; color: #000000;}
a:visited {text-decoration: underline; color: #000000;}
a:hover, a:active {text-decoration: underline; color: #FF9C00;}

A.about_menu {TEXT-DECORATION: none}
A.about_menu:hover {COLOR: #996600}
A.pagesLine {COLOR: #006600}
A.menu {COLOR: #666666; TEXT-DECORATION: none}
A.menu:hover {COLOR: #009900; TEXT-DECORATION: none}

.maininput {FONT-SIZE: 12px; WIDTH: 200px; font-size: 10; color: 000000; border: #808080 1 solid;}
.simpleok {WIDTH: 50px; height:18px; background-color: cccccc; font-size: 10; color: 000000; font-weight: bold; border: #808080 1 solid;}
.longok {WIDTH: 100px; height:20px; background-color: cccccc; font-size: 10; color: 000000; border: #808080 1 solid;}

.small {FONT-SIZE: 11px;}
.smallest {FONT-SIZE: 9px;}

TD {FONT-SIZE: 11px}
TD.menu {FONT-SIZE: 11px; FONT-WEIGHT: bold}
TD.big_item_title {FONT-SIZE: 13px; FONT-WEIGHT: bold}
TD.pagesLine {FONT-SIZE: 10px}

#copyright {FONT-SIZE: 10px; font-color: #666666}
</STYLE>
</head>
<body bgcolor=\"#F3F3F3\"><center>

<table width=100% cellpadding=1 cellspacing=0 border=1 bordercolor=#666666>
<TR height=30><TD align=center class=big_item_title>
<b>
<a href='admin.php?pswrd=$password&event=makeform'>Код счётчика</a> :: 
<a href='admin.php?pswrd=$password&event=config'>Конфигурация</a> :: 
<a href='admin.php?pswrd=$password&event=statv'>Статистика хиты/хосты</a> :: 
<!--<a href='admin.php?pswrd=$password&event=subscribe'>Статистика броузер/ОС</a> :: -->
<a href=''>Выход</a> :: 
</td></tr>
<tr><td width=100%>
";


// ничего не выбрано
if(!isset($_GET['event'])) { print"$shapka <BR><BR><center><h3>Выберете действие в верхнем меню.</h2><BR><BR></TD></TR></TABLE>"; }  // if !isset($event')




// Вывод формы, которую необходимо установить для пописки
else  { if ($_GET['event'] == "makeform") {
print"$shapka <BR><BR><center>
<form><textarea rows=10 cols=60>
<!-- Код счётчика сайта ХХХ -->
<a href=\"info.php\"><img src=\"counter.php\" width=88 height=31 border=0></a>
<!-- ВЫШЕ код счётчика сайта ХХХ -->
</textarea><BR><BR><BR></TD></TR></TABLE>";
}




if ($_GET['event']=="statv")  {  // просмотр всей СТАТИСТИКИ

$months=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");

$deldt=mktime()-$days*86400; // формируем дату удаления объявления

$i=0; if ($handle = opendir($datadir)) {
while (($file = readdir($handle)) !== false)
if (!is_dir($file)) {$lines[$i]=$file; $i++;}
closedir($handle);
} else {print 'В папке, которую вы указали нет данных счётчика!';}

$itogo=count($lines); $k=0; $text=null;


do {
$fline=file("$datadir/$lines[$k]");
$fitogo=count($fline);

if ($fitogo!=0 and $lines[$k]!="all.dat" and $lines[$k]!="last.dat" and $lines[$k]!="mainbase.dat")
{
$thendayx=str_replace(".dat","",$lines[$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/$lines[$k]");}

// Блок считает ХОСТЫ (уникальных посетителей)
usort($fline,"prcmp");
$numip="0"; $numsys="0"; $hi=0; $ab="0"; $ac="0";

do {
$dt=explode("|",$fline[$hi]);
if ($ab!=$dt[0]) {$ab=$dt[0]; $numip++;}
if (isset($dt[2])) {if ($ac!=$dt[2]) {$ac=$dt[2]; $numsys++;}}
$hi++;
} while ($hi<$fitogo);

$text.="$then|$fitogo|$numip|$numsys|\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);


// сортируем данные 
$lines=file("$datadir/mainbase.dat");
$maxi=count($lines);
usort($lines,"prcmp");



//!!!!!!!!!!!!!!!!!!!
// ПОДУМАТь и решить когда сохранять в файл промежуточные данные.
// НАВЕРНО сначала обработать три раза - потом один раз сохранить
// и открыть для показа.
// В начале делать проверку на сохранение результатов в файл:
// при разнице в создании файла < 10 минут - не перезаписывать файл.

print"<BR>$shapka";

print"<HTML><BODY text=#000000 leftMargin=0 topMargin=0 rightMargin=0 bottomMargin=0 marginheight=0 marginwidth=0><center><B>Информация по посещаемости</B><TABLE border=0 cellSpacing=0 cellPadding=0 width=\"98%\"><TR><TD>";

if ($gtype=="1") {

// выводим 1 график - ХИТЫ
print"<table border=0 cellSpacing=0 cellPadding=0 align=center><tr align=center valign=bottom><TD valign=middle><small>К<BR>О<BR>Л<BR>-<BR>В<BR>О<BR><B><BR>Х<BR>О<BR>С<BR>Т<BR>О<BR>В</TD><TD><img src='images/v1scale.gif' border=0></TD>";

for ($i=0; $i<$maxi; $i++)  {
$dtt=explode("|",$lines[$i]);
$dtt[0]=date("d.m.y",$dtt[0]);
$dttn=round($dtt[1]/2);
print"<TD><table cellSpacing=2 cellPadding=0 border=0><TR><TD align=center><small>$dtt[1]</small></TD></TR><TR><TD><img src='images/v1.gif' height=$dttn width=18></TD></TR></TABLE></td>";
}
print"</TR><TR><TD align=center><small>Дата</TD><TD>&nbsp;</TD>";

for ($i=0; $i<$maxi; $i++)  {
$dtt=explode("|",$lines[$i]);
if (!isset($m0)) {$m0=date("m",$dtt[0])-1;}
if ($i==$maxi-1) {$m1=date("m",$dtt[0])-1;}
$dtt[0]=date("d",$dtt[0]);
print"<td align=center><small>$dtt[0]</small></TD>"; }

$mm1=$months[$m0]; $mm2=$months[$m1]; if ($mm1==$mm2) {$mm1="";} else {$mm1.=" - ";}
print"</tr><TR><TD><small>Месяц</TD><TD>&nbsp;</TD><TD align=center colspan=$i>$mm1 $mm2</TD></TR></TABLE>";



// выводим 2 график - ХОСТЫ

print"<table border=0 cellSpacing=0 cellPadding=0 align=center><tr align=center valign=bottom><TD valign=middle><small>К<BR>О<BR>Л<BR>-<BR>В<BR>О<BR><B><BR>Х<BR>И<BR>Т<BR>О<BR>В</TD><TD><img src='images/v2scale.gif' border=0></TD>";

for ($i=0; $i<$maxi; $i++)  {
$dtt=explode("|",$lines[$i]);
$dtt[0]=date("d.m.y",$dtt[0]);
$dttn=round($dtt[2]*2);
print"<TD><table cellSpacing=2 cellPadding=0 border=0><TR><TD align=center><small>$dtt[2]</small></TD></TR><TR><TD><img src='images/v2.gif' height=$dttn width=18></TD></TR></TABLE></td>";
}
print"</TR><TR><TD align=center><small>Дата</TD><TD>&nbsp;</TD>";

for ($i=0; $i<count($lines);$i++)  {
$dtt=explode("|",$lines[$i]);
if (!isset($m0)) {$m0=date("m",$dtt[0])-1;}
if ($i==$maxi-1) {$m1=date("m",$dtt[0])-1;}
$dtt[0]=date("d",$dtt[0]);
print"<td align=center><small>$dtt[0]</small></TD>"; }

$mm1=$months[$m0]; $mm2=$months[$m1]; if ($mm1==$mm2) {$mm1="";} else {$mm1.=" - ";}
print"</tr><TR><TD><small>Месяц</TD><TD>&nbsp;</TD><TD align=center colspan=$i>$mm1 $mm2</TD></TR></TABLE>";



}  else   {  // $gtype!="1"



// выводим 1 график - ХИТЫ
print" <table border=0 align=center><tr align=center><td width=70><B>ДАТА</B></td><td><B>ХИТЫ</B></td><TD><B>Кол-во</B></TD></tr>
<tr><TD>&nbsp;</TD><TD><img src='images/g1scale.gif' border=0></TD></TR>";

for ($i=0; $i<$maxi; $i++)  {
$dtt=explode("|",$lines[$i]);
$dtt[0]=date("d.m.y",$dtt[0]);
print"<tr>
<TD>$dtt[0]</TD>
<td><table cellSpacing=0 cellPadding=0 border=0><TR><TD><img src='images/g1.gif' height=18 width=$dtt[1]></TD><TD align=center>&nbsp; $dtt[1]</TD></TR></TABLE></td>
</tr>"; }


// выводим 2 график - ХОСТЫ
print"</table><BR> <table border=0 align=center><tr align=center><td width=70><B>ДАТА</B></td><td><B>ХОСТЫ</B></td><TD><B>Кол-во</B></TD></tr>
<tr><TD>&nbsp;</TD><TD><img src='images/g2scale.gif' border=0></TD></TR>";

for ($i=0; $i<$maxi; $i++)  {
$dtt=explode("|",$lines[$i]);
$dtt[0]=date("d.m.y",$dtt[0]);
$dttn=$dtt[2]*5;
print"<tr><td>$dtt[0]</TD>
<td><table cellSpacing=0 cellPadding=0 border=0><TR><TD><img src='images/g2.gif' height=18 width=$dttn></TD><TD align=center>&nbsp; $dtt[2]</TD></TR></TABLE></td>
</tr>";
}
print"</table><BR>"; 
}

}




if ($_GET['event'] =="config")   {  // КОНФИГУРИРОВАНИЕ - выбор настроек
// Получаем цвета для отображения
$s1=dechex($s1r); $s1.=dechex($s1g); $s1.=dechex($s1b);
$s2=dechex($s2r); $s2.=dechex($s2g); $s2.=dechex($s2b);
$s3=dechex($s3r); $s3.=dechex($s3g); $s3.=dechex($s3b);
if ($image=="counter1.png") {$i1="checked";} else {$i1="";}
if ($image=="counter2.png") {$i2="checked";} else {$i2="";}
if ($image=="counter3.png") {$i3="checked";} else {$i3="";}
if ($image=="counter4.png") {$i4="checked";} else {$i4="";}
if ($image=="counter5.png") {$i5="checked";} else {$i5="";}
if ($image=="counter6.png") {$i6="checked";} else {$i6="";}
if ($image=="counter7.png") {$i7="checked";} else {$i7="";}
if ($image=="counter8.png") {$i8="checked";} else {$i8="";}

if ($sendstat=="1") {$m1="checked"; $m2="";} else {$m2="checked"; $m1="";}
if ($gtype=="1") {$g1="checked"; $g2="";} else {$g2="checked"; $g1="";}
print "$shapka 
<BR><table border=1 width=750 align=center cellpadding=3 cellspacing=0 bordercolor=#DDDDDD class=forumline><tr bgcolor=#BBBBBB height=25 align=center>
<td><B>Переменная</B></td><td><B>Значение</B></td></tr><form action='admin.php?pswrd=$password&event=confignext' method=post name=REPLIER>
<tr><td>Пароль администратора</td><td><input type=text value='$password' name=password size=15></tr></td>
<tr><td>Емайл админа</td><td><input type=text value='$adminemail' name=adminemail size=30></tr></td>
<tr><td>Мылить статистику админу? Периодичность?</td><td><input type=radio name=sendstat value=\"1\"$m1> да&nbsp; <input type=radio name=sendstat value=\"0\"$m2> нет
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=text value='$sendday' name=sendday size=5> (через 1,2,3 дней и т.д.)</tr></td>
<tr><td>Тип графика</td><td><input type=radio name=gtype value=\"1\"$g1> вертикальный&nbsp; <input type=radio name=gtype value=\"0\"$g2> горизонтальный</tr></td>
<tr><td>Коэффициент масштабирования<BR> графика ХИТОВ / ХОСТОВ ?</td><td><input type=text value='$scale1' name=scale1 size=5> &nbsp;&nbsp;&nbsp; .:. &nbsp;&nbsp;&nbsp; <input type=text value='$scale2' name=scale2 size=5> &nbsp; &nbsp; По умолчанию: <B><U>0.5</U> и <U>2</U></B>.</tr></td>
<tr><td>Сколько суток хранить статистику?</td><td><input type=text value='$days' name=days size=5></tr></td>
<tr><td>Путь к папке с данными</td><td><input type=text value='$datadir' name=datadir size=15> &nbsp; &nbsp; По умолчанию: &quot<B><U>./data</U></B>&quot.</tr></td>

<tr><td>файл с рисунком счётчика</td><td>
<input type=radio name=image value='counter1.png' $i1><img src='images/counter1.png'> &nbsp;
<input type=radio name=image value='counter2.png' $i2><img src='images/counter2.png'> &nbsp;
<input type=radio name=image value='counter3.png' $i3><img src='images/counter3.png'> &nbsp;
<input type=radio name=image value='counter4.png' $i4><img src='images/counter4.png'> <BR>
<input type=radio name=image value='counter5.png' $i5><img src='images/counter5.png'> &nbsp;
<input type=radio name=image value='counter6.png' $i6><img src='images/counter6.png'> &nbsp;
</tr></td>

<tr><td>RGB цвет 1-й цифры на счётчике</td><td><input type=text value='$s1r' name=s1r size=5><input type=text value='$s1g' name=s1g size=5><input type=text value='$s1b' name=s1b size=5><B><font color='$s1'>1234567890</font></B></tr></td>
<tr><td>RGB цвет 2-й цифры на счётчике</td><td><input type=text value='$s2r' name=s2r size=5><input type=text value='$s2g' name=s2g size=5><input type=text value='$s2b' name=s2b size=5><B><font color='$s2'>1234567890</font></B></tr></td>
<tr><td>RGB цвет 3-й цифры на счётчике</td><td><input type=text value='$s3r' name=s3r size=5><input type=text value='$s3g' name=s3g size=5><input type=text value='$s3b' name=s3b size=5><B><font color='$s3'>1234567890</font></B></tr></td>

<tr><td colspan=2><BR><center><input type=submit value='Сохранить конфигурацию'>
</form></td></tr></table><BR></td></tr></table>";
}


// Конфигурирование ШАГ 2 - сохранение данных
if ($_GET['event'] =="confignext")  {
$configdata="<? // WR-Counter v 1.0  //  17.10.06 г.  //  [email protected]\r\n".
"$"."password=\"".$_POST['password']."\"; // Пароль администратора\r\n".
"$"."adminemail=\"".$_POST['adminemail']."\"; // Емайл админа\r\n".
"$"."sendstat=\"".$_POST['sendstat']."\"; // Мылить статистику посещений админу?\r\n".
"$"."sendday=\"".$_POST['sendday']."\"; // Периодичность рассылки статистики\r\n".
"$"."gtype=\"".$_POST['gtype']."\"; // Тип графика - горизонтальный / вертикальный ( 1/0 )\r\n".
"$"."days=\"".$_POST['days']."\"; // Сколько суток хранить статистику?\r\n".
"$"."scale1=\"".$_POST['scale1']."\"; // Коэффициент масштабирования графика ХИТОВ\r\n".
"$"."scale2=\"".$_POST['scale2']."\"; // Коэффициент масштабирования графика ХОСТОВ\r\n".
"$"."datadir=\"".$_POST['datadir']."\"; // Путь к папке с данными счётчика '.' - текущая папка\r\n".
"$"."image=\"".$_POST['image']."\"; // имя файла с рисунком счётчика\r\n".
"$"."s1r=\"".$_POST['s1r']."\"; $"."s1g=\"".$_POST['s1g']."\"; $"."s1b=\"".$_POST['s1b']."\"; // RGB - 1-й цифры\r\n".
"$"."s2r=\"".$_POST['s2r']."\"; $"."s2g=\"".$_POST['s2g']."\"; $"."s2b=\"".$_POST['s2b']."\"; // RGB - 2-й цифры\r\n".
"$"."s3r=\"".$_POST['s3r']."\"; $"."s3g=\"".$_POST['s3g']."\"; $"."s3b=\"".$_POST['s3b']."\"; // RGB - 3-й цифры\r\n".
"$"."date=date(\"d.m.Y\"); // число.месяц.год\r\n".
"$"."time=date(\"H:i:s\"); // часы:минуты:секунды\r\n?>";

$file=file("config.php");
$fp=fopen("config.php","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
fputs($fp,$configdata);
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("config.php", 0644);
Header("Location: admin.php?pswrd=$_POST[password]"); exit; }



}
}
} // if isset $event




print"<BR><small>Сегодня <b>$date г.</b></small>";

?>
</td></tr></table></td></tr></table>
<center><small>Powered by <a href="http://www.wr-script.ru/" target="_blank">WR-Counter</a> &copy;<br /></small></center>
</body></html>