Просмотр файла admin.php

Размер файла: 11.46Kb
<?php
ini_set('session.use_trans_sid', 1);
$title = 'Админка гостевой';
require 'root.part';
$sr = 'index.php Гостевая|admin.php Админка';
$content = '';

session_start();
$x = 0;
if(isset($_SESSION['kods'])){
$kodSES = $_SESSION['kods'];
++$x;
}
$_SESSION['kods'] = rand(rand(126, 4659), rand(4894, 92659));

$formVH = '<form action="admin.php">
<b>Логин:</b><br/>
<input type="text" name="log"/><br/>
<b>Пароль:</b><br/>
<input type="password" name="par"/><br/>
<img src="img.php?' . rand(1001, 9999) . '="/><br/>
Код с картинки:<br/>
<input type="text" name="kod"/><br/>
<br/>
<input type="submit" value="Войти"/>
</form>';
      function gasim(){
session_unset(); session_destroy(); }



$ipADR = $_SERVER['REMOTE_ADDR'];
$HTTPuser = $_SERVER['HTTP_USER_AGENT'];

      if(isset($_SESSION['ip']) and isset($_SESSION['user']) and $HTTPuser and $ipADR){
      if(($_SESSION['ip'] == $ipADR) && ($_SESSION['user'] == $HTTPuser)){


   if(isset($_GET['v'])){
      switch($_GET['v']){
//
//если $_GET['v'] равен
//
case 'izmlogpar':




$content = '<form action="admin.php">
Новый логин:<br/>
<input type="text" name="login"/><br/>
Старый пароль:<br/>
<input type="password" name="pars"/><br/>
Новый пароль:<br/>
<input type="password" name="par1"/><br/>
Повторите новый пароль:<br/>
<input type="password" name="par2"/><br/>
<img src="img.php?' . rand(1001, 9999) . '="/><br/>
Код с картинки:<br/>
<input type="text" name="kod"/><input type="hidden" name="v" value="izmlogpar"/><br/>
<input type="submit" value="Изменить"/></form><br/>';
if(isset($_GET['par1']) && isset($_GET['par2']) && isset($_GET['pars']) && isset($_GET['login']) && isset($_GET['kod'])){
      if($_GET['par1'] !== $_GET['par2']) $content = 'Пароли не совпадают!<br/>' . $content;
   else ++$x;
      if(($_GET['par1'] === '') || ($_GET['par2'] === '')) $content = 'Пароль и логин не должны быть пустыми!<br/>' . $content;
   else ++$x;
      if($_GET['pars'] != preg_replace('~^.*? \$=@=\$ (.*?) \$=@=\$.*$~', '$1', file_get_contents('admin.conf'))) $content = 'Неверный старый пароль!<br/>' . $content;
   else ++$x;
      if($_GET['kod'] != $kodSES) $content = 'Неправильный код с картинки!<br/>' . $content;
   else ++$x;


   if($x == 5){
$conf = file_get_contents('admin.conf');
      if($conf && file_put_contents('admin.conf', preg_replace('".*?( \$=@=\$ ).*? \$=@=\$ "', $_GET['login'] . '$1' . $_GET['par2'] . '$1', $conf, 1)))
  $content = 'Даные изменены!<br/>
Новый логин: <b>' . $_GET['login'] . '</b><br/>Новый пароль: <b>' . $_GET['par2'] . '</b><br/>' . $content;
   else $content = 'Ошибка, даные не изменены!<br/>' . $content;
} }



break;
//
//если $_GET['v'] равен
//
case 'bezopas':
$content = 'Всегда выходите из админки через кнопку выход!<br/>
Не сообщайте ни кому свой пароль и логин!<br/>
<b>Не переходите по неизвестным ссылкам в сообщениях из админки!<br/><br/>
Всегда следуйте этими правилами, и гостевую будет намного сложнее взломать!</b> Я так говорю, потому что можно взломать что угодно, но трудность взлома зависит от вас.<br/>' . $content;
break;
//
// если $_GET['v'] raven
//
case 'ipban':



include 'dat.part';

$form = '<form action="admin.php">
IP:<br/>
<input type="text" name="adr"/><br/>
<b>На:</b><br/>
Часов:<br/>
<input type="text" name="ts"/><br/>
Дней:<br/>
<input type="text" name="dn"/><br/>
Месяцев:<br/>
<input type="text" name="msc"/><br/>
<input type="hidden" name="v" value="ipban"/><br/>
<input type="submit" value="Забанить"/></form><br/>';
   if(isset($_GET['ban'])) $content .= $form;

      if(isset($_GET['iprbv'])){
$content .= 'База забаненых IP очищена.<br/>';
file_put_contents('ban.dat', '');
      } elseif(isset($_GET['obnov'])){
include 'cron.php';
if($d) $content .= 'База ip обновлена!<br/>';
else $content .= 'Обновлять нечего.<br/>';
      } elseif(isset($_GET['adr']) and isset($_GET['ts']) and isset($_GET['dn']) and isset($_GET['msc'])){
$adr = $_GET['adr'];
$ts = intval($_GET['ts']);
$dn = intval($_GET['dn']);
$msc = intval($_GET['msc']);
   if(ctype_digit(str_replace('.', '', $adr))){
$banfile = file_get_contents('ban.dat');
   if(strpos($banfile, $adr . '¤') === false){
       if(($msc + $dn + $ts) > 0){
$do = time() + (60 * 60 * $ts) + (60 * 60 * 24 * $dn) + (60 * 60 * 24 * 31 * $msc);

if(!strpos($banfile, '¤')) file_put_contents('ban.dat', $adr . '¤' . $do);
else file_put_contents('ban.dat', $banfile . '§' . $adr . '¤' . $do);

$content .= 'IP '. $adr . ' забанен до ' . dat($do) . '<br/>';
} else{
$content .= 'Бан минимум на 1 час!<br/>' . $form;
} } else{
$content .= 'Этот IP уже забанен!<br/>' . $form;
} } else{
$content .= 'Неверные данные!<br/>' . $form;
} }


#
#Читаем забаненные ip
#

if(@filesize('ban.dat')){
$post = file_get_contents('ban.dat');
if($post){

include 'lst.class.part';

class Lst2 extends Lst{
public $Wy = 0;

      protected function vidwywod($soob){
   ++$this->Wy;
return '<input type="checkbox" name="iprb' . $this->Wy . '" value="' . $soob['0'] . '"/><b>' . $soob['0'] . '</b> До ' . dat($soob['1']) . '<br/>';
} }
$ob = new Lst2($post);

$nastr = explode('¤', file_get_contents('gost.conf'));
$ob->soob4 = $k = $nastr['5'];
$ob->fail = 'admin.php';
$ob->getd = 'v=ipban';
$soob = $ob->wywodsoob();
      if(strpos($soob, 'checkbox')) $content .= '<form action="admin.php">' . $soob . '<input type="hidden" name="v" value="ipban"/><input type="submit" value="Разбанить"/></form><br/>
<a href="admin.php?v=ipban&amp;iprbv=">Очистить базу забаненых IP.</a><br/>
<a href="admin.php?v=ipban&amp;obnov=">Обновить базу IP.</a><br/>';


#
#Делаем разбан
#
$post .= '§';

for($y = '1'; $y <= $k; ++$y){
      if(isset($_GET['iprb' . $y])){
$get = $_GET['iprb' . $y];
$post = preg_replace('~' . $get . '¤[0-9]+\§~', '$1', $post, 1);
$content = 'IP: ' . $get . ' разбанен<br/>' . preg_replace('~<input[^/d]+' . $get . '.*?<br\/>~i', '', $content, 1);
} }
file_put_contents('ban.dat', preg_replace('|\§$|', '', $post, 1));


} else{
$content .= 'Ошибка!<br/>';
} } else {
$content .= 'Забаненых пока нет.<br/>';
}
$content .= '<a href="admin.php?v=ipban&amp;ban=">Добавить ip, который будет забанен.</a><br/>';


break;
//
// если $_GET['v'] raven
//меняем формат даты
//
case 'nastrojka':


$x = 0;
      if(isset($_GET['adr'])){
$adr = $_GET['adr'];
++$x;
} else{
$adr = '0';
}      if(isset($_GET['sajt'])){
$sajt = $_GET['sajt'];
++$x;
} else{
$sajt = '0';
}      if(isset($_GET['mail'])){
$mail = $_GET['mail'];
++$x;
} else{
$mail = '0'; 
}      if(isset($_GET['icq'])){
$icq = $_GET['icq'];
++$x;
} else{
$icq = '0';
}      if(isset($_GET['soob'])){
$soob = intval($_GET['soob']);
++$x;
} else{
$soob = '0';
}      if(isset($_GET['ipk'])){
$ipk = intval($_GET['ipk']);
++$x;
} else{
$ipk = '0';
}


if($x){
$d = intval($adr) . '¤' . intval($sajt) . '¤' . intval($mail) . '¤' . intval($icq);
   if($soob)  $d .= '¤' . $soob;
else $d .= '¤' . '10';
   if($ipk) $d .= '¤' . $ipk;
else  $d .= '¤' . '20';
file_put_contents('gost.conf', $d);
$content .= '<b>Данные изменены!</b><br/>';
}

if(isset($_GET['data'])){
if($_GET['data']){
   file_put_contents('dat.part', preg_replace("~'.*?'~e", '"\'" . str_replace("\'", "", $_GET["data"]) . "\'"', file_get_contents('dat.part')));

$content .= 'Сегодня: ' . date($_GET['data'], time());
      } else{
include 'dat.part';
$content .= 'Сегодня: ' . dat(time());
} }

$check = ' checked="checked"';
$d = explode('¤', file_get_contents('gost.conf'));
$content .= '<form action="admin.php"><br/>Формат даты такой же, как у функции <a href="admin.php?v=datephp">date()</a> в PHP<br/>
<b>Формат:</b><br/>
<input type="hidden" name="v" value="nastrojka"/>
<input type="text" name="data" value="' . preg_replace("|^.*'(.*)'.*$|sU", '$1', file_get_contents('dat.part')) . '"/><br/>
<b>Выводить в гостевой IP:</b><br/>
<input type="radio" name="adr" value="1"';
      if($d['0']) $content .= $check . '/>Да<input';
   else $content .= '/>Да<input' . $check;

$content .= ' type="radio" name="adr"/>Нет<br/>
<b>Выводить сайт:</b><br/>
<input type="radio" name="sajt" value="1"';
      if($d['1']) $content .= $check . '/>Да<input';
   else $content .= '/>Да<input' . $check;

$content .= ' type="radio" name="sajt"/>Нет<br/>
<b>Выводить e-mail:</b><br/>
<input type="radio" name="mail" value="1"';
      if($d['2']) $content .= $check . '/>Да<input';
   else $content .= '/>Да<input' . $check;

$content .= ' type="radio" name="mail"/>Нет<br/>
<b>Выводить ICQ:</b><br/>
<input type="radio" name="icq" value="1"';
      if($d['3']) $content .= $check . '/>Да<input';
   else $content .= '/>Да<input' . $check;

$content .= ' type="radio" name="icq"/>Нет<br/>
<b>Количество выводимых сообщений на странице:</b><br/>
<input type="text" name="soob" value="' . $d['4'] . '"/>
<b>Количество выводимых забаненых IP на странице:</b><br/>
<input type="text" name="ipk" value="' . $d['5'] . '"/>
<input type="submit" value="Изменить"/><br/>
</form>';


break;
//
// если $_GET['v'] raven
//
case 'datephp':
$content = file_get_contents('datephp.txt');



//
// если нет $_GET['v']
//

break;
default:
$content = 'Неверный раздел!<br/>' . $content;
   } } else{
$content .= '<a href="admin.php?v=nastrojka">Настройки</a><br/>
<a href="admin.php?v=ipban">БАН</a><br/>
<a href="admin.php?v=izmlogpar">Изменить логин, пароль</a><br/>
<a href="admin.php?v=bezopas">Правила безопасности. <b>Читать обязательно!</b></a><br/>'; }




$content .= '<a href="admin.php?vhd"><b>Выход</b></a>';
if(isset($_GET['vhd'])){ gasim();
$content = 'Вы вышли!<br/>' . $formVH;}
   } else{
gasim();
$content = 'Взломщеки не зайдут!<br/>' . $formVH;
   } } else{


   if(isset($_GET['log']) && isset($_GET['par']) && isset($_GET['kod'])){
$r = ' $=@=$ ';
$conf = file_get_contents('admin.conf');
$conf = explode($r, $conf);

$y = '0';
   if((strtolower($_GET['log']) == strtolower($conf['0'])) && ($_GET['par'] == $conf['1'])) ++$y;
else $content .= 'Неверный пароль или логин!<br/>';
      if($_GET['kod'] == $kodSES) ++$y;
else $content .= 'Неверный код с картинки!<br/>';


if($y == 2){
      include 'dat.part';
$_SESSION['ip'] = $ipADR;
$_SESSION['user'] = $HTTPuser;
$content = '<a href="admin.php">Вход</a><br/>
Последний раз вы заходили с<br/>
<b>' . $conf['2'] . '</b><br/>' . $conf['3'] . '<br/><b>' . ((intval($conf['4'])) ? dat($conf['4']) : '') . '</b>';
file_put_contents('admin.conf',  $conf['0'] . $r . $conf['1'] . $r . $ipADR . $r . $HTTPuser . $r . time());
   } else{
$content .= $formVH;
   } } else{
$content .= $formVH;
} }

require 'wablon.part';
?>