Файл: adm/ban_ip.php
Строк: 111
<?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');
?>