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

Размер файла: 9.96Kb
  1. <?php
  2.  
  3. // Устанавливаем константу WBCAT , true
  4. define( 'WBCAT', 1 );
  5.  
  6. // Подключаем "верх" каталога
  7. require_once ('../inc/head.php');
  8.  
  9. $id = isset($_GET['id']) ? intval($_GET['id']) : '';
  10. $mod = isset($_GET['mod']) ? $_GET['mod'] : '';
  11.  
  12. switch ($mod) {
  13.  
  14. # Баним ip-адрес #
  15. case 'ban' :
  16.  
  17. // Заголовок
  18. echo '<div class="zag">Блокировка ip-адреса </div>';
  19.  
  20. if (isset($_POST['go'])) {
  21.  
  22. // Обработка переменных , полученых через форму
  23. $ip = isset ($_POST['ip']) ? trim($_POST['ip']) : '';
  24. $ban_term = isset ($_POST['term']) ? intval($_POST['term']) : 1;
  25. $ban_url = isset ($_POST['url']) ? htmlentities(trim($_POST['url']), ENT_QUOTES, 'UTF-8') : '';
  26. $reason = isset ($_POST['reason']) ? htmlentities(trim($_POST['reason']), ENT_QUOTES, 'UTF-8') : '';
  27.  
  28. if (empty($ip)) {
  29. $error[1] = 'Вы не ввели ip-адрес';
  30. }
  31.  
  32. // Обработка ip-адреса
  33. if (!ereg("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$", $ip)) {
  34. $error[2] = 'Неправильно ip-адрес';
  35. }
  36.  
  37. if(isset($_SERVER['HTTP_X_REAL_IP'])) {
  38. $ip2 = $_SERVER['HTTP_X_REAL_IP'];
  39. } else {
  40. $ip2 = $_SERVER['REMOTE_ADDR'];
  41. }
  42.  
  43. if ($ip == $ip2) {
  44. $error[3] = 'Вы пытаетесь забанить свой собственный ip-адрес !';
  45. }
  46.  
  47. if (!empty($error)) {
  48. echo '<div class="title">';
  49. foreach($error as $value) {
  50. echo "<b>$value</b> <br />";
  51. }
  52. echo '</div>';
  53. }
  54. else {
  55.  
  56. $ip = ip2int($ip);
  57.  
  58. $result = mysql_query("INSERT INTO `ban_ip` SET
  59. `ip`='" . mysql_real_escape_string($ip). "',
  60. `type`='" . mysql_real_escape_string($ban_term). "',
  61. `url`='" . mysql_real_escape_string($ban_url) . "',
  62. `reason`='" . mysql_real_escape_string($reason) . "',
  63. `date`='" . $time . "';");
  64. echo '<div class="title">IP-адрес успешно забанен</div>';
  65. echo '<div class="main"><a href="ban_ip.php">Список забанненых</a></div>';
  66. echo '<div class="main"><a href="index.php">Админка</a></div>';
  67. }
  68. }
  69. else {
  70.  
  71. echo '<form action="ban_ip.php?mod=ban" method="post">';
  72. echo '<div class="title"><u>Введите IP адрес</u><br/>';
  73. echo '<input type="text" name="ip"/><br />';
  74. echo '<small>Банить можно один адрес Пример:<br />';
  75. echo '<font color="#FF0000">10.5.7.1</font> - Баним адрес<br />';
  76. echo '</small></div>';
  77. echo '<div class="title"><u>Тип бана</u><br/>';
  78. echo '<input name="term" type="radio" value="1" checked="checked" />Полная блокировка<br />';
  79. echo '<input name="term" type="radio" value="2" />Редирект<br />';
  80. echo '<u>URL редиректа</u><br /><small>[Необязательное поле]</small><br />';
  81. echo '<input type="text" name="url"/><br />';
  82. echo '<small[Например http://site.ru]</small></div>';
  83. echo '<div class="title"><u>Причина бана</u><br /><p><small>[Необязательное поле]</small><br />';
  84. echo '<textarea cols="20" rows="4" name="reason"></textarea></div>';
  85. echo '<div class="title"><input type="submit" name="go" value="Банить"/>';
  86. echo '</form></div>';
  87. echo '<div class="main"><a href="index.php">Отмена</a><br /><a href="ban_ip.php">Список забанненых</a></div>';
  88. }
  89.  
  90. break;
  91.  
  92. # Удаляем ip из бана #
  93. case 'del' :
  94.  
  95. if (isset ($_GET['go'])) {
  96. mysql_query("DELETE FROM `ban_ip` WHERE `id`='$id' LIMIT 1");
  97. mysql_query("OPTIMIZE TABLE `ban_ip`");
  98. echo '<div class="title">Бан успешно удален из базы</div>';
  99. echo '<div class="title"><a href="ban_ip.php">Продолжить</a><br /><a href="index.php">Админ панель</a></div>';
  100. }
  101. else {
  102. $req = mysql_query("SELECT * FROM `ban_ip` WHERE `id`='" . $id . "' LIMIT 1");
  103. if (mysql_num_rows($req) != 1) {
  104. echo '<div class="title">Такого ip нет в базе<br/>';
  105. echo '<a href="ban_ip.php">Назад</a><br /><a href="index.php">Админ панель</a></div>';
  106. require_once ('../inc/foot.php');
  107. exit;
  108. }
  109. else {
  110. echo '<div class="title">Вы действительно хотите разбанить ip-адрес ?</div>';
  111. echo '<div class="title"><a href="ban_ip.php?mod=del&id='.$id.'&go">Разбанить</a><br /><a href="ban_ip.php">Отмена</a></div>';
  112. }
  113. }
  114.  
  115. break;
  116.  
  117.  
  118. # Удаляем все забанненые ip-адреса #
  119. case 'del_all' :
  120.  
  121. echo '<div class="zag" Удаление всех забанненых ip</div>';
  122. if (isset($_POST['submit'])) {
  123. $result = mysql_query("DELETE FROM `ban_ip`;");
  124. mysql_query("OPTIMIZE TABLE `ban_ip`");
  125. if ($result == true){
  126. echo '<div class="title">Все ip-адреса удалены из базы !</div>';
  127. echo '<div class="title"><a href="ban_ip.php">Продолжить</a><br /><a href="index.php">Админ панель</a></div>';
  128. }
  129. else {echo 'Ошибка разбана всех ip . Код ошибки <br/>';
  130. echo mysql_error();
  131. }
  132.  
  133. } else {
  134.  
  135. echo '<div class="title"><form action="ban_ip.php?mod=del_all" method="post">
  136. Вы действительно желаете разбанить все ip-адреса ?<br />
  137. <input type="submit" name="submit" value="Разбанить всех"/>
  138. </form></div>
  139. <div class="main"><a href="ban_ip.php">Назад</a></div>';
  140. }
  141. break;
  142.  
  143. # Выводим список забанненых ip #
  144. default :
  145.  
  146. // Заголовок
  147. echo '<div class="zag">Список забанненых ip</div>';
  148.  
  149. $num = $settings['on_page'];
  150. $page = intval($_GET['page']);
  151. $result = mysql_query('SELECT COUNT(*) FROM `ban_ip`');
  152. $posts = mysql_result($result, 0);
  153. $total = intval(($posts - 1) / $num) + 1;
  154. if(empty($page) or $page < 0) $page = 1;
  155. if($page > $total) $page = $total;
  156. $start = $page * $num - $num;
  157. $result = mysql_query('SELECT * FROM `ban_ip` ORDER BY id DESC LIMIT '.$start.', '.$num.'');
  158. if ($posts > 0 ) {
  159. while ($m = mysql_fetch_array($result)){
  160. echo '<div class="title">';
  161. echo '<u>IP</u>: <b>'.int2ip($m['ip']).'</b>| [id'.$m['id'].']<br/>';
  162. echo '<u>Тип бана </u>: '.($m['type'] == 1 ? 'полная блокировка' : 'редирект').'<br/>';
  163. echo '<u>Причина бана</u>: '.(empty($m['reason']) ? 'Причина не указана' : ''.$m['reason'].'').'<br/>';
  164. echo ''.($m['type'] == 2 ? '<u>Редирект</u> : '.$m['url'].'<br/>' : '').'';
  165. echo '<u>Дата бана</u>: '.date('d.m.y H:i',$m['date']).'';
  166. echo '</div>';
  167. echo '<div class="min"><a href="ban_ip.php?mod=del&id='.$m['id'].'">Разбанить</a></div>';
  168. // 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/>';
  169. }
  170. if ($page != 1) $pervpage = ' <a href= "ban_ip.php?page='. ($page - 1) .'">Назад</a> ';
  171. // Проверяем нужны ли стрелки вперед
  172. if ($page != $total) $nextpage = ' <a href="ban_ip.php?page='. ($page + 1) .'">Вперед</a>';
  173. if ($page !=1 AND $page != $total) $i = '|';
  174. if ($page - 4 > 0) $first = '<a href="ban_ip.php?page=1">1</a>...';
  175. if ($page + 4 <= $total) $last = '...<a href="ban_ip.php?page='.$total.'">'.$total.'</a>';
  176. // Находим две ближайшие станицы с обоих краев, если они есть
  177. if($page - 2 > 0) $page2left = ' <a href= "ban_ip.php?page='. ($page - 2) .'">'. ($page - 2) .'</a> ';
  178. if($page - 1 > 0) $page1left = '<a href= "ban_ip.php?page='. ($page - 1) .'">'. ($page - 1) .'</a> ';
  179. if($page + 2 <= $total) $page2right = ' <a href="ban_ip.php?page='. ($page + 2) .'">'. ($page + 2) .'</a>';
  180. if($page + 1 <= $total) $page1right = ' <a href="ban_ip.php?page='. ($page + 1) .'">'. ($page + 1) .'</a>';
  181.  
  182. // Вывод меню
  183. if ($posts > $num) {
  184. echo '<div class="title"><small>Навигация :<br/>Страница '.$page.' из '.$total.'</small><br/>'.$pervpage.$i.$nextpage.'<br/>'.$first.$page2left.$page1left.'['.$page.']'.$page1right.$page2right.$last.'</div>';
  185. }
  186. }
  187. else {
  188. echo '<div class="title">Нет забанненых ip-адресов</div>';
  189. }
  190. echo '<div class="main"><a href="ban_ip.php?mod=ban">Банить IP</a></div>';
  191. if ($posts > 1) { echo '<div class="main"><a href="ban_ip.php?mod=del_all">Разабнить все ip</a></div>'; }
  192. echo '<div class="main"><a href="index.php">Админка</a></div>';
  193. echo '<div class="zag">Всего забанненых ip : '.$posts.'</div>';
  194.  
  195. }
  196.  
  197. // Ссылка на главную
  198. echo '<div class="main"><a href="'.$settings['url'].'">Главная</a></div>';
  199.  
  200. // Покдлючаем "низ" каталога
  201. require_once ('../inc/foot.php');
  202. ?>