View file informer/admin.php

File size: 15.85Kb
<?php // Wr-Informer v. 1.5 UTF-8 //  20.11.2018 г. // Miha-ingener@yandex.ru

error_reporting(0); // error_reporting (E_ALL); 

include "config-inf.php";
include_once '../sys/inc/start.php';
include_once '../sys/inc/compress.php';
include_once '../sys/inc/sess.php';
include_once '../sys/inc/home.php';
include_once '../sys/inc/settings.php';
include_once '../sys/inc/db_connect.php';
include_once '../sys/inc/ipua.php';
include_once '../sys/inc/fnc.php';
include_once '../sys/inc/user.php';

echo "<title>Админка -Ближайшие праздники</title>";
$set['title']='Админка - Ближайшие праздники';
include_once '../sys/inc/thead.php';


aut();

$back="<center>Вернитесь <a href='javascript:history.back(1)'><B>назад</B></a>"; // Удобная строка


$skey="657567"; // !!! Секретный ключ !!! 
// Поменяйте на свой и фиг кто вскроет админку :-)
// !!! ПОСЛЕ СМЕНЫ - пароли администратора и модератора становятся ошибочными!
// для получения нового пароля разкоменируйте строку № 104
// вставьте полученный код в config.php В ПЕРЕМЕННЫЕ $password и $moderpass

// Авторизация
$adminname="admin"; // ЛОГИН администратора
$adminpass=$password;

function replacer ($text) { // ФУНКЦИЯ очистки кода
$text=str_replace("&#032;",' ',$text);
$text=str_replace(">",'&gt;',$text);
$text=str_replace("<",'&lt;',$text);
$text=str_replace("\"",'&quot;',$text);
$text=preg_replace("/\n\n/",'<p>',$text);
$text=preg_replace("/\n/",'<br>',$text);
$text=preg_replace("/\\\$/",'&#036;',$text);
$text=preg_replace("/\r/",'',$text);
$text=preg_replace("/\\\/",'&#092;',$text);
// если magic_quotes включена - чистим везде СЛЭШи в этих случаях: одиночные (') и двойные кавычки ("), обратный слеш (\)
if (get_magic_quotes_gpc()) { $text=str_replace("&#092;&quot;",'&quot;',$text); $text=str_replace("&#092;'",'\'',$text); $text=str_replace("&#092;&#092;",'&#092;',$text); }
$text=str_replace("\r\n","<br> ",$text);
$text=str_replace("\n\n",'<p>',$text);
$text=str_replace("\n",'<br> ',$text);
$text=str_replace("\t",'',$text);
$text=str_replace("\r",'',$text);
$text=str_replace('   ',' ',$text);
return $text; }

// Выбран ВЫХОД - очищаем куки
if(isset($_GET['event'])) { if ($_GET['event']=="clearcooke") { setcookie("wrinformer","",time()-3600); Header("Location: index.php"); exit; } }

if (isset($_COOKIE['wrinformer'])) { // Сверяем имя/пароль из КУКИ с заданным в конфиг файле
$text=$_COOKIE['wrinformer'];
$text=str_replace("\r\n","",$text); $text=str_replace(" ","",$text); // Вырезает ПРОБЕЛьные символы 
if (strlen($text)>60) {exit("Попытка взлома - длина переменной куки сильно большая!");}
$text=replacer($text);
$exd=explode("|",$text); $name1=$exd[0]; $pass1=$exd[1];

if ($name1!=$adminname or $pass1!=$adminpass) 
{sleep(1); setcookie("wrinformer", "0", time()-3600); Header("Location: admin.php"); exit;} // убаваем НЕВЕРНУЮ КУКУ!!!

} else { // ЕСЛИ ваще нету КУКИ


if (isset($_POST['name']) & isset($_POST['pass'])) { // Если есть переменные из формы ввода пароля
$name=str_replace("|","I",$_POST['name']); $pass=str_replace("|","I",$_POST['pass']);
$text="$name|$pass|";
$text=trim($text); // Вырезает ПРОБЕЛьные символы 
if (strlen($text)<4) exit("$back Вы не ввели имя или пароль!");
$text=replacer($text);
$exd=explode("|",$text); $name=$exd[0]; $pass=$exd[1];

//$qq=md5("$pass+$skey"); print"$qq"; exit; // РАЗБЛОКИРУЙТЕ для получения MD5 своего пароля!

// Сверяем введённое имя/пароль с заданным в конфиг файле
// АДМИНИСТРАТОРУ присваиваются куки
if ($name==$adminname & md5("$pass+$skey")==$adminpass) 
{$tektime=time(); $wrforumm="$adminname|$adminpass|$tektime|";
setcookie("wrinformer", $wrforumm, time()+18000); Header("Location: admin.php"); exit;}

exit("$back Ваш данные <B>ОШИБОЧНЫ</B>!</center>");

} else { // если нету данных, то выводим ФОРМУ ввода пароля

echo "<html><head><META HTTP-EQUIV='Pragma' CONTENT='no-cache'><META HTTP-EQUIV='Cache-Control' CONTENT='no-cache'><META content='text/html; charset=UTF-8' http-equiv=Content-Type><style>input, textarea {font-family:Verdana; font-size:12px; text-decoration:none; color:#000000; cursor:default; background-color:#FFFFFF; border-style:solid; border-width:1px; border-color:#000000;}</style></head>
<BR><BR><BR><center>
<table border=#C0C0C0 border=1  cellpadding=3 cellspacing=0 bordercolor=#959595>
<form action='admin.php' method=POST name=pswrd>
<TR><TD bgcolor=#C0C0C0 align=center>Администрирование</TD></TR>
<TR><TD align=right>Введите логин: <input size=17 name=name value=''></TD></TR>
<TR><TD align=right>Введите пароль: <input type=password size=17 name=pass></TD></TR>
<TR><TD align=center><input type=submit style='WIDTH: 120px; height:20px;' value='Войти'>
<SCRIPT language=JavaScript>document.pswrd.name.focus();</SCRIPT></TD></TR></table>
<BR><BR><center><font size=-2><small><br></small></font></center></body></html>";
include_once '../sys/inc/tfoot.php';
exit;}

} // АВТОРИЗАЦИЯ ПРОЙДЕНА!


// Выбран ВЫХОД - очищаем куки
if(isset($_GET['event'])) { if ($_GET['event']=="clearcooke") { setcookie("wrinformer","",time()-3600); Header("Location: index.php"); exit; } }

$gbc=$_COOKIE['wrinformer']; $gbc=explode("|", $gbc); $gbname=$gbc[0];$gbpass=$gbc[1];$gbtime=$gbc[2];


$shapka="<html><head>

<META HTTP-EQUIV=Pragma\" CONTENT='no-cache'>
<META HTTP-EQUIV='Cache-Control' CONTENT='no-cache'>
<META content='text/html; charset=UTF-8' 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;}
input {FONT-SIZE: 12px; WIDTH: 50px; font-size: 13; color: 000000; border: #808080 1 solid;}
.text {FONT-SIZE: 12px; WIDTH: 400px; font-size: 13; color: 000000; border: #808080 1 solid;}
.midle {FONT-SIZE: 12px; WIDTH: 100px; font-size: 13; 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}
</STYLE>
</head>
<body bgcolor=#F3F3F3><center>
<center><a href=admin.php><h3>Админка</h3></a>
<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'>Главная админки</a> ::
<a href=admin.php?event=skin>Конфигурирование</a> ::
<a href='admin.php?event=sort'>Отсортировать даты по возрастанию</a> ::
<a href='admin.php?event=clearcooke'>Выход</a> :: 
</td></tr>
<tr><td width=100%>
";


// Блок УДАЛЕНИЯ выбранного сообщения
if (isset($_GET['id'])) { $page=$_GET['page'];
$file=file($datafile); $itogo=count($file)-1;
$id=$itogo-$_GET['id'];
if ($itogo<1) {print"$back. Нужно оставить хотябы одно событие!"; exit;}

$fp=fopen($datafile,"w");
flock ($fp,LOCK_EX);
for ($i=0;$i< sizeof($file);$i++) { if ($i==$id) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);

Header("Location: admin.php?page=$page"); exit; }





if (isset($_GET['event'])) {

if ($_GET['event']=="add") { // if ($event =="add")

$newmonth=$_POST['newmonth']; $msg=$_POST['msg']; $newday=$_POST['newday']; 
if (isset($_POST['page'])) {$page=$_POST['page'];} else {$page=1;}

$msg=str_replace("|","I",$msg);
$msg=str_replace("\r\n","<br>",$msg);
$text="$newday|$newmonth|$msg|";

// если выбрано - редактирование
if (isset($_GET['rd'])) { $rd=$_GET['rd'];  //$rd - номер РЕДАКТИРУЕМОЙ ячейки
$file=file($datafile);
$fp=fopen($datafile,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
for ($i=0;$i< sizeof($file);$i++) {if ($rd!=$i) {fputs($fp,$file[$i]);} else {fputs($fp,"$text\r\n");}}
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
}


else {
$fp=fopen($datafile,"a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
}

Header("Location: admin.php?page=$page"); exit; }




if ($_GET['event']=="sort")  {

// Считываем весь файл в память и меняем местами месяц и день
$lines=file($datafile); $itogo=count($lines); $i=0; $records=null;
do { $dt=explode("|",$lines[$i]); $records[$i]="$dt[1]|$dt[0]|$dt[2]|"; $i++; } while($i<$itogo);

sort($records); $i=0; // Сортируем массив и меняем местами месяц и день
do { $dt=explode("|",$records[$i]); $records[$i]="$dt[1]|$dt[0]|$dt[2]|"; $i++; } while($i<$itogo);


// Записываем в файл
$fp=fopen($datafile,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
for ($i=0;$i< sizeof($records);$i++) fputs($fp,"$records[$i]\r\n");
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
Header("Location: admin.php"); exit; }




if ($_GET['event']=="skin")  {
print "$shapka

<table width=100%><TR><TD>
<center><B><font size=+1>Конфигурирование</font></b>

<form action=admin.php?event=config method=POST name=REPLIER>
<table>
<tr><td class=row2>Пароль админа *</td><td class=row1><input name=password type=hidden value='$password'><input type=text value='скрыт' name=newpassword size=15> (зашифрован и скрыт)</td></tr>
<tr><td>Cколько выводить дат</td><td><input type=text value='$klvmsg' name=klvmsg maxlength=2 size=10></tr></td>
<tr><td>Максимальное удалённое событие</td><td><input type=text value='$klvdays' maxlength=2 name=klvdays size=10></tr></td>
<tr><td>Сообщений на страницу в админке</td><td><input type=text value='$qq' maxlength=2 name=qq size=10></tr></td>
<tr><td>Файл данных</td><td><input type=text value='$datafile' name=datafile size=20 class=midle></tr></td>
<tr><td colspan=2><center><table><tr><td><input type=submit value='Сохранить конфигурацию' class=text></form></td></tr></table>
</td></tr></table><center><br>* Если хотите изменить пароль - сотрите слово <B>\"скрыт\"</B> и введите новый пароль.<br> Рекомендую использовать тольео буквы и/или цифры.<br><br>

</TD></TR></TABLE>
</TD></TR></TBODY></TABLE>";
exit;  }



if ($_GET['event']=="config")  {

if (strlen($_POST['newpassword'])<1) {print"$back разрешается длина пароля МИНИМУМ 1 символ!";}
if ($_POST['newpassword']!="скрыт") {$pass=trim($_POST['newpassword']); $_POST['password']=md5("$pass+$skey");}

$configdata="<?php // Wr-Informer v. 1.5 UTF-8 //  20.11.2018 г. // Miha-ingener@yandex.ru\r\n".
"$"."password=\"".$_POST['password']."\"; // Пароль админа защифрован md5()\r\n".
"$"."klvmsg=\"".$_POST['klvmsg']."\";  // Сколько выводить дат?\r\n".
"$"."klvdays=\"".$_POST['klvdays']."\";  // Максимальное удалённое событие, дней \r\n".
"$"."datafile=\"".$_POST['datafile']."\"; // Имя файла базы данных\r\n".
"$"."qq=\"".$_POST['qq']."\"; // кол-во отображаемых событий в админке на странице\r\n".
"$"."date=date(\"d.m.Y\"); // число.месяц.год\r\n".
"$"."time=date(\"H:i:s\"); // часы:минуты:секунды\r\n?>";

$file=file("config-inf.php");
$fp=fopen("config-inf.php","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
fputs($fp,$configdata);
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);

Header("Location: admin.php"); exit; }

} // if isset['event']





print "$shapka <BR>";

$lines=file($datafile);
$itogo=count($lines);
$maxi=$itogo-1;

if (isset($_GET['page'])) {$page=$_GET['page'];} else {$page="1";}
if ($page=="0") {$page="1";} else {$page=abs($page);}
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;}

$fm=$qq*($page-1); if ($fm>$maxi) {$fm=$maxi-$qq;}
  $lm=$fm+$qq; if ($lm>$maxi) {$lm=$maxi+1;} 

// СПИСОК СТРАНИЦ
$pageinfo="<center><font size=+1>Страницы:&nbsp; ";
for($i=0; $i<$maxi+1;) {$ip=$i/$qq+1;
if ($page==$ip) $pageinfo.="<B>$ip</B> &nbsp;"; else $pageinfo.="<a href='admin.php?page=$ip'>$ip</a> &nbsp;";
$i=$i+$qq;} $pageinfo.="</font>";

print "$pageinfo"; // выводим СПИСОК СТРАНИЦ

do {$dt=explode("|", $lines[$fm]); $fm++;
$num=$itogo-$fm;

print"
<TABLE border=0 width=780 align=center cellPadding=0 cellSpacing=0><TBODY><TR>
<TD width=70><table><TR><TD bgcolor=#22FF44><B><a href='admin.php?rd=$num&page=$page'>.P.</a></TD><TD>&nbsp;&nbsp;</TD><TD bgcolor=#FF2244><a href='admin.php?id=$num&page=$page'>.X.</a></B></TD><TD> &nbsp;&nbsp;</TD></TR></TABLE></TD>
<TD width=50><B>$dt[0] $dt[1]</B></td><td><b>$dt[2]</b></TD>
</TR></TBODY></TABLE><BR>";

} while($fm < $lm);

print "$pageinfo  [Всего <font color=red><B>$itogo</B></font>]"; // выводим СПИСОК СТРАНИЦ


print"<BR><BR><TABLE border=0 width=600 align=center cellPadding=0 cellSpacing=0>
<TR height=20 align=center><TD><B>ДЕНЬ (ДД) / МЕСЯЦ (ММ)<br> (по 2 символа)</B></TD><TD><B>Событие</B></TD></TR>";

// ищем сообщение для редактирования и выводим его в форму
if (isset($_GET['rd']))  {  $rd=$maxi-$_GET['rd'];
$dt=explode("|",$lines[$rd]);
$dt[0]=str_replace("<br>", "\r\n", $dt[0]);

print "<form action=admin.php?event=add&rd=$rd method=POST name=REPLIER>
<TR><TD>&nbsp; <input type=text name=newday value='$dt[0]' size=3 maxlength=2> &nbsp; <input type=text value='$dt[1]' name=newmonth size=3 maxlength=2> &nbsp;</TD><TD>
<textarea class=text cols=50 rows=2 size=500 name=msg>$dt[2]</textarea>
</TD></TR>
<input type=hidden name=page value='$page'>
<TR><TD>&nbsp;</TD><TD><BR><input class=text type=submit value='Изменить и сохранить'></form></TD></TR>";

} else  {

print "
<form action=admin.php?event=add method=POST name=REPLIER>
<TR><TD>&nbsp; <input type=text name=newday size=3 maxlength=2> &nbsp; <input type=text name=newmonth size=3 maxlength=2> &nbsp;</TD><TD>
<textarea class=text cols=50 rows=2 size=500 name=msg></textarea>
</TD></TR>
<TR><TD>&nbsp;</TD><TD><BR><input class=text type=submit value='Добавить'></form></TD></TR>";
}

print"</TD></TR></TABLE>
<BR>* Если Вы хотите ввести ссылку то введите её. только обязательно поставьте пробелы вокруг неё.<br><br>
<small>Сегодня <b>$date г.</b></small>";
include_once '../sys/inc/tfoot.php';
?>
</td></tr></table></td></tr></table>

</body></html>