Просмотр файла adm/ban_ip.php

Размер файла: 10.13Kb
<?php

// Устанавливаем константу WBCAT , true
define( 'WBCAT', 1 );

// Подключаем "верх" каталога
require_once ('../inc/head.php');

  if (!$allow)
  { // если ошибка, то закрываем доступ
    exit ('Доступ закрыт');
  }

$id = isset($_GET['id']) ? intval($_GET['id']) : '';
$mod = isset($_GET['mod']) ? $_GET['mod'] : '';

switch ($mod) {

# Баним ip-адрес #
case 'ban' :

// Заголовок
echo '<div class="zag">Блокировка ip-адреса </div>';

if (isset($_POST['go'])) {

// Обработка переменных , полученых через форму
	        $ip = isset ($_POST['ip']) ? trim($_POST['ip']) : '';
            $ban_term = isset ($_POST['term']) ? intval($_POST['term']) : 1;
            $ban_url = isset ($_POST['url']) ? htmlentities(trim($_POST['url']), ENT_QUOTES, 'UTF-8') : '';
            $reason = isset ($_POST['reason']) ? htmlentities(trim($_POST['reason']), ENT_QUOTES, 'UTF-8') : '';

if (empty($ip)) {
$error[1] = 'Вы не ввели ip-адрес';
}

// Обработка ip-адреса
if (!ereg("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$", $ip)) {
$error[2] = 'Неправильно ip-адрес';
}

if(isset($_SERVER['HTTP_X_REAL_IP'])) {
$ip2 = $_SERVER['HTTP_X_REAL_IP'];
} else {
$ip2 = $_SERVER['REMOTE_ADDR'];
}

/*if ($ip == $ip2) {
$error[3] = 'Вы пытаетесь забанить свой собственный ip-адрес !';
}*/

	 	 if (!empty($error)) {
			     echo '<div class="title">';
			       foreach($error as $value) {
                     echo "<b>$value</b> <br />";
                    }
					echo '</div>';
			}
			else {

$ip = ip2int($ip);

       $result  =  mysql_query("INSERT INTO `ban_ip` SET
	    `ip`='" . mysql_real_escape_string($ip). "',
		`type`='" . mysql_real_escape_string($ban_term). "',
		`url`='" . mysql_real_escape_string($ban_url) . "',
		`reason`='" . mysql_real_escape_string($reason) . "',
		`date`='" . $time . "';");
        echo '<div class="title">IP-адрес успешно забанен</div>';
		echo '<div class="main"><a href="ban_ip.php">Список забанненых</a></div>';
        echo '<div class="main"><a href="index.php">Админка</a></div>';
			}

}
 else {

            echo '<form action="ban_ip.php?mod=ban" method="post">';
            echo '<div class="title"><u>Введите IP адрес</u><br/>';
            echo '<input type="text" name="ip" value="'.htmlspecialchars($_REQUEST['ip']).'"/><br />';
            echo '<small>Банить можно один адрес Пример:<br />';
            echo '<font color="#FF0000">10.5.7.1</font> - Баним адрес<br />';
            echo '</small></div>';
            echo '<div class="title"><u>Тип бана</u><br/>';
            echo '<input name="term" type="radio" value="1" checked="checked" />Полная блокировка<br />';
            echo '<input name="term" type="radio" value="2" />Редирект<br />';
            echo '<u>URL редиректа</u><br /><small>[Необязательное поле]</small><br />';
            echo '<input type="text" name="url"/><br />';
            echo '<small[Например http://site.ru]</small></div>';
            echo '<div class="title"><u>Причина бана</u><br /><p><small>[Необязательное поле]</small><br />';
            echo '<textarea cols="20" rows="4" name="reason"></textarea></div>';
            echo '<div class="title"><input type="submit" name="go" value="Банить"/>';
            echo '</form></div>';
            echo '<div class="main"><a href="index.php">Отмена</a><br /><a href="ban_ip.php">Список забанненых</a></div>';
 }

break;

# Удаляем ip из бана #
case 'del' :

if (isset ($_GET['go'])) {
                mysql_query("DELETE FROM `ban_ip` WHERE `id`='$id' LIMIT 1");
                mysql_query("OPTIMIZE TABLE `ban_ip`");
                echo '<div class="title">Бан успешно удален из базы</div>';
                echo '<div class="title"><a href="ban_ip.php">Продолжить</a><br /><a href="index.php">Админ панель</a></div>';
            }
            else {
                $req = mysql_query("SELECT * FROM `ban_ip` WHERE `id`='" . $id . "' LIMIT 1");
                if (mysql_num_rows($req) != 1) {
                    echo '<div class="title">Такого ip нет в базе<br/>';
                    echo '<a href="ban_ip.php">Назад</a><br /><a href="index.php">Админ панель</a></div>';
                    require_once ('../inc/foot.php');
                    exit;
                }
                else {
                    echo '<div class="title">Вы действительно хотите разбанить ip-адрес ?</div>';
                    echo '<div class="title"><a href="ban_ip.php?mod=del&id='.$id.'&go">Разбанить</a><br /><a href="ban_ip.php">Отмена</a></div>';
                }
            }

break;


# Удаляем все забанненые ip-адреса #
case 'del_all' :

       echo '<div class="zag" Удаление всех забанненых ip</div>';
          if (isset($_POST['submit'])) {
                  $result = mysql_query("DELETE FROM `ban_ip`;");
				            mysql_query("OPTIMIZE TABLE `ban_ip`");
                      if ($result == true){
                echo '<div class="title">Все ip-адреса удалены из базы !</div>';
                echo '<div class="title"><a href="ban_ip.php">Продолжить</a><br /><a href="index.php">Админ панель</a></div>';
		            }
					 else {echo 'Ошибка разбана всех ip . Код ошибки <br/>';
					 echo mysql_error();
					 }

            } else {

           echo '<div class="title"><form action="ban_ip.php?mod=del_all" method="post">
			Вы действительно желаете разбанить все ip-адреса ?<br />
			<input type="submit" name="submit" value="Разбанить всех"/>
			</form></div>
			<div class="main"><a href="ban_ip.php">Назад</a></div>';
}
break;

# Выводим список забанненых ip #
default :

// Заголовок
echo '<div class="zag"><a href="index.php">Админ-панель</a> => <a href="ban_ip.php">IP-адреса</a></div>';

		 $num = $settings['on_page'];
         $page = intval($_GET['page']);
		 $result = mysql_query('SELECT COUNT(*) FROM `ban_ip`');
         $posts = mysql_result($result, 0);
         $total = intval(($posts - 1) / $num) + 1;
         if(empty($page) or $page < 0) $page = 1;
         if($page > $total) $page = $total;
         $start = $page * $num - $num;
		 $result = mysql_query('SELECT * FROM `ban_ip` ORDER BY id DESC LIMIT '.$start.', '.$num.'');
         if ($posts > 0 ) {
                  while ($m = mysql_fetch_array($result)){
				  echo '<div class="title">';
                      echo '<u>IP</u>: <b>'.int2ip($m['ip']).'</b>| [id'.$m['id'].']<br/>';
                     echo '<u>Тип бана </u>: '.($m['type'] == 1 ? 'полная блокировка' : 'редирект').'<br/>';
					 echo '<u>Причина бана</u>: '.(empty($m['reason']) ? 'Причина не указана' : ''.$m['reason'].'').'<br/>';
					 echo ''.($m['type'] == 2 ? '<u>Редирект</u> : '.$m['url'].'<br/>' : '').'';
					 echo '<u>Дата бана</u>: '.date('d.m.y H:i',$m['date']).'';
					 echo '</div>';
					 echo '<div class="min"><a href="ban_ip.php?mod=del&id='.$m['id'].'">Разбанить</a></div>';
					// echo '<br/><small><a href="ban_ip.php?do=add&id='.$m['id'].'">Добавить</a>|<a href="ban_ip.php?do=del&id='.$m['id'].'">Удалить</a></small><hr/>';
                    }

					if ($page != 1) $pervpage = ' <a href= "ban_ip.php?page='. ($page - 1) .'">Назад</a> ';
                    // Проверяем нужны ли стрелки вперед
                    if ($page != $total) $nextpage = ' <a href="ban_ip.php?page='. ($page + 1) .'">Вперед</a>';
                    if ($page !=1 AND $page != $total) $i = '|';
                    if ($page - 4 > 0) $first = '<a href="ban_ip.php?page=1">1</a>...';
                    if ($page + 4 <= $total) $last = '...<a href="ban_ip.php?page='.$total.'">'.$total.'</a>';
                    // Находим две ближайшие станицы с обоих краев, если они есть
                    if($page - 2 > 0) $page2left = ' <a href= "ban_ip.php?page='. ($page - 2) .'">'. ($page - 2) .'</a> ';
                    if($page - 1 > 0) $page1left = '<a href= "ban_ip.php?page='. ($page - 1) .'">'. ($page - 1) .'</a> ';
                    if($page + 2 <= $total) $page2right = ' <a href="ban_ip.php?page='. ($page + 2) .'">'. ($page + 2) .'</a>';
                    if($page + 1 <= $total) $page1right = ' <a href="ban_ip.php?page='. ($page + 1) .'">'. ($page + 1) .'</a>';

                    // Вывод меню
                       if ($posts > $num) {
                          echo '<div class="title"><small>Навигация :<br/>Страница '.$page.' из '.$total.'</small><br/>'.$pervpage.$i.$nextpage.'<br/>'.$first.$page2left.$page1left.'['.$page.']'.$page1right.$page2right.$last.'</div>';
                         }
            }
          else {
             echo '<div class="title">Нет забанненых ip-адресов</div>';
            }

 echo '<div class="main"><a href="ban_ip.php?mod=ban">Банить IP</a></div>';
if ($posts > 1) { echo '<div class="main"><a href="ban_ip.php?mod=del_all">Разабнить все ip</a></div>'; }
 echo '<div class="main"><a href="index.php">Админка</a></div>';
 echo '<div class="zag">Всего забанненых ip : '.$posts.'</div>';

}

// Ссылка на главную
echo '<div class="main"><a href="'.$home.'">Главная</a></div>';

// Покдлючаем "низ" каталога
require_once ('../inc/foot.php');
?>