<?php
?>
<?
// Сколько забаненных адресов выводить на одной странице!?
$messonpage = 3;
?>
<?php
error_reporting(0);
global $error, $logined;
if (file_exists("password.adm") and $QUERY_STRING != ""):
require ("password.adm");
if (!isset($login) or !isset($kPass[$login]) or md5($pass) != $kPass[$login]):
		$logined = 0;
		$error = "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>access no<br></center></td></tr></table></center>";
		setcookie("login","",0);
		setcookie("pass","",0);		
	else:
		$logined = 1;
		setcookie("login",$login);
		setcookie("pass",$pass);		
	endif;
endif;
?>
<html><head>
<title>::</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>
<!--
body, td, input, textarea, select { color: black; font: 8pt verdana; font-weight: none; text-decoration: none }
}
-->
</style></head>
<body bgcolor="#FFFFFF" text="#000000" link="#0095ff" vlink="#0095ff" alink="#0095ff"  style="font-size: 8pt; font-family: Verdana">
<?php
if (!file_exists("password.adm") and $QUERY_STRING == "login"):
	echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>Сейчас будет создан файл с паролем.<br></center></td></tr></table></center>";
	if (isset($login) and $login != "" and isset($pass) and $pass != ""):
		$file = fopen("password.adm","w");
		fputs($file,"<?php #Внимание! Не редактируйте этот файл вручную! Для того чтобы сменить пароль нужно удалить этот файл!\r\n\$kPass['$login'] = \"".md5($pass)."\";\r\n?>");
		fclose($file);
		echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>Файл с паролем создан!<br></center></td></tr></table></center>";
		$error = "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>Теперь Вы можете войти в администрирование!<br></center></td></tr></table></center>";
	else: echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>Файл не создан! Недостаточно параметров!<br></center></td></tr></table></center>";
	endif;
endif;
if ($logined):
function timendate($timezdatez)
        {
        $minute = date ($timezdatez);
        $timezdatez = getdate ($timezdatez);
        $days = array ("декабря","января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября");
        $j = $timezdatez[mon];
        $daystwo = array( "в воскресенье","в понедельник","во вторник","в среду","в четверг","в пятницу","в субботу");
        $j2 = $timezdatez[wday];
        $timezdatez = "Был заблокирован: ".$daystwo[$j2].", $timezdatez[mday] ".$days[$j]." $timezdatez[year] года, в $timezdatez[hours]:".date("i",$minute);
        return $timezdatez;
        }
	if ($QUERY_STRING == "help"):?>
<center>
  <table width="596" border="0" cellspacing="1" cellpadding="2" bgcolor="#DCDCDC">
  <tr>
  <td align=left bgcolor="f5f5f5" colspan="2" width="586"></center>
 
  </td>
  </tr>
  <tr>
  <td bgcolor="white" colspan="2" width="586"><font face="Verdana" size="1">
Помощь по работе.<br><br>
Ну как что вводить я думаю понятно!? Нет!? :) Ну тогда слушайте!<br><br>
Вводите нужный Вам ip адрес, типа: 127.2.3.4<br>
Вводите нужный комментарий, типа: За плохое поведение!<br>
Если Вы хотите чтобы заблокированный пользователь, зайдя на защищённую страницу увидел Ваш комментарий, то поле для его заполнения, разумеется, нельзя оставлять пустым :) Я вот выгнал за плохое поведение :)
<br><br>
Дальше нажимаете кнопку, "Добавить". И готово! IP адрес в базе данных!<br>
В ниже следующей таблице Вы можете изменить введённые ранее данные или вовсе удалить IP адрес из базы данных. ( Только в том случае если пользователь исправился :))<br>Кстати, IP адрес 1.1.1.1 который стоит по умолчанию, Вы разумеется, можете спокойно удалять. ( если он там есть :))<br><br>
Диапазоны IP адресов.<br><br>
Рассмотрим пример:<br>
Допустим, Вы точно знаете только три последних числа IP адреса, и не знаете первое число. Ну пусть это будут числа, "22,33,44". <br> Что делать спросите Вы!?<br> Говорите скрипт не поможет!? :) А вот и поможет! Точнее диапазоны помогут.<br>
Вводим в форму добавления нового IP адреса: *.22.33.44<br>
Далее комментарий, если он нужен. И жмем кнопку, "Добавить".<br>
Всё пользователь готов. Пользоваться диапазонами очень удобно!<br>
* - означает, что первое число IP адреса пользователя может быть любым, и оно не учитывается. Проверка ведётся только по оставшимся трём числам.<br><br>
Рассмотрим несколько примеров:<br>
125.*.*.44 - Здесь учёт ведётся только по первому и последнему числу IP адреса.<br>
*.1.*.* - Здесь только по второму числу.<br>
*.*.*.* - А здесь вообще ВСЕХ забанили.<br><br>
Ещё диапазоны могут быть полезны, когда у Вашего неприятеля например пять телефонов для дозвона на модемный пул провайдера:<br>
12-12-13<br>
12-12-14<br>
12-12-15<br>
12-12-16<br>
12-12-17<br><br>
И каждому из этих телефонов присваивается такой IP:<br>
Неизвестно.33.34.112<br>
Неизвестно.33.34.112<br>
Неизвестно.33.34.112<br>
Неизвестно.33.34.112<br>
Неизвестно.33.34.112<br><br>
Первое число IP адреса неизвестно, так - как оно постоянно меняется. Зато остальные три известны.<br>
Вот и вводим их в форму для добавления IP: *.33.34.112<br>
Далее комментарий, если он нужен.<br>
Готово! Доступ закрыт :) ( напоминает мне k.Open/Close )<br>
Также этот скрипт может пригодиться и для защиты гостевых, форумов и т.д.<br><br>

Изменение времени блокировки:<br>
Для каждого заблокированного пользователя, указывается время его блокировки, Вы соответственно можете его изменить. Так - же кроме комментария пользователю можно вывести и время, когда ему закрыли доступ к системе. Вывод времени блокировки пользователя, не относится к обязательным параметрам скрипта, и если Вам необходима данная функция читайте комментарии в коде скрипта, "banzz.php".<br>
P.S. Под словом, "время", подразумевается не только время, но и дата :))<br><br>

 </td>
 </tr>
 </table>
<?exit;endif;
$datafile="banzz.dat";
if (!file_exists("$datafile")):
$filez = fopen("$datafile","w");$timezdatez = time();$timezdatez=timendate($timezdatez);
fputs($filez,"1.1.1.1|Это - тестовый комментарий!|$timezdatez\r\n");fclose($filez);endif;
$QUERY_STRING = "ban";
if ($QUERY_STRING == "ban"):
		$datafile="banzz.dat";
		$bans = file("$datafile");
		if (isset($znach)) {
			if ($znach == "Добавить") {
				if ($ip == ""){echo "Не заполнен раздел, \"IP\". Вернитесь назад.";exit;}
				if (!ereg("^[\"*\",0-9]{1,3}\.[\"*\",0-9]{1,3}\.[\"*\",0-9]{1,3}\.[\"*\",0-9]{1,3}$", $ip)){echo "Не правильно заполнен раздел, \"IP\".<br>Примеры: 127.0.0.1 : 127.*.*.1<br>Вернитесь назад.";exit;}
				$file = fopen("$datafile","a");
				$ip = ereg_replace("\*",".*",$ip);
                $ip = ereg_replace("\.",".",$ip);$timezdatez = time();$timezdatez=timendate($timezdatez);              
				fputs($file,"$ip|$comm|$timezdatez\r\n");
				fclose($file);				
			}
			if ($znach == "Изменить" or $znach == "Удалить") {
			$file = fopen("$datafile","w");
         	for ($q = 0; $q < count($bans); $q++) {
			if ($q != $number) {fputs($file,$bans[$q]);}
			else {
			if ($znach == "Изменить") {
            if ($ip == ""){echo "Не заполнен раздел, \"IP\". Вернитесь назад.";exit;}
	        if (!ereg("^[\"*\",0-9]{1,3}\.[\"*\",0-9]{1,3}\.[\"*\",0-9]{1,3}\.[\"*\",0-9]{1,3}$", $ip)){echo "Не правильно заполнен раздел, \"IP\".<br>Примеры: 127.0.0.1 : 127.*.*.1<br>Вернитесь назад.";exit;}
			  $ip = ereg_replace("\*",".*",$ip);
              $ip = ereg_replace("\.",".",$ip);
             fputs($file,"$ip|$comm|$timezdatez\r\n");
						}
				}
			}
				fclose($file);			
			}
			$bans = file("$datafile");
		}
$dataz="banzz.dat";
$ondataz = file("$dataz");
$messages = count($ondataz);
if (!isset($page)) {$page = 1;}
$numzone = count($ondataz) - ($messonpage * ($page - 1));
$numztwo = count($ondataz) - ($messonpage * $page) + 1;
if ($numztwo < 1) {$numztwo = 1;}
$pages = (int) ((count($ondataz) + $messonpage - 1) / $messonpage);
$line = "";
for ($u = 1; $u <= $pages; $u++) {
  if ($u != $page) {$line .= "<a href=\"admin.php?page=$u\"> $u </a>|";}
  if ($u == $page) {$line .= " $u |";}
}
		echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=left bgcolor=\"f5f5f5\"colspan=\"2\" width=\"586\"><center>  Добавление нового IP адреса.<br></center></td></tr><tr><td bgcolor=\"white\" colspan=\"2\" width=\"586\"><form action=admin.php?ban method=post>";
		echo "IP:<br><input style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid;  FONT-SIZE: 8pt\" type=text name=ip size=60> | <a href=\"admin.php?help\" title=\"Небольшая справка по работе со скриптом.\" target=\"_blank\" >Помощь.</a><br>";
		echo "Описание:<br><input style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid;  FONT-SIZE: 8pt\" type=text name=comm size=60 > </td></tr>\r\n";
		echo "<tr><td align=center colspan=2 bgcolor=\"ffffff\"><input style=\"background-color : #cccccc; 	border-style: solid;border-width: 1;\" type=submit name=znach title=\"Добавляет введённый Вами IP в банлист. Так - же можно добавить комментарий к нему, он высветится при обращении к защищённой странице забаненного пользователя. Время добавляется автоматически!\" value=Добавить></td></tr>\r\n";
		echo "<br><center><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>Всего заблокированных: $messages | Страницы: $line<br></center></td></tr></table></center>";		
		echo "</table>\r\n</form></td></tr>\r\n";
		echo "<table width=468 bgcolor=#cccccc border=0 cellspacing=1 cellpadding=0>\r\n";
		for ($q = $numzone - 1 ; $q >= $numztwo - 1; $q--) {
		$bans[$q] = ereg_replace("\r\n","",$bans[$q]);
		list ($ip,$comm,$timezdatez)=split("\|",$bans[$q]);
			$ip = ereg_replace("\.",".",$ip);
            $ip = ereg_replace("\.\*","*",$ip);
            $ip = ereg_replace("\\\.",".",$ip);
			echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=left bgcolor=\"f5f5f5\"colspan=\"2\" width=\"586\"><center>Удалить/Изменить!?<br></center></td></tr><tr><td bgcolor=\"white\" colspan=\"2\" width=\"586\"><form action=admin.php?ban method=post><input type=hidden name=number value=$q><input style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid;  FONT-SIZE: 8pt\" size=\"35\" type=text name=ip value=\"$ip\" size=11><br><input style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid;  FONT-SIZE: 8pt\" type=text name=comm value=\"$comm\" size=65><br><input style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid;  FONT-SIZE: 8pt\" type=text name=timezdatez value=\"$timezdatez\" size=65 > <input style=\"background-color : #cccccc; border-style: solid;border-width: 1;\" type=submit name=znach  value=\"Удалить\" title=\"Удаляет IP и комментарий из базы данных.\" size=11> <input style=\"background-color : #cccc4c; border-style: solid;border-width: 1;\" type=submit name=znach  value=\"Изменить\" title=\"Изменяет старый IP, комментарий или время блокирования, на новое значение.\" size=11></form></td></tr></table>\r\n";
		}
		echo "</table>";
	
	endif;
else:
	echo "$error";
?>
<center>
  <table width="596" border="0" cellspacing="1" cellpadding="2" bgcolor="#DCDCDC">
  <tr>
  <td align=left bgcolor="f5f5f5" colspan="2"></center>
  <center>
</center>
   </td>
  </tr>
  <tr>
   <td bgcolor="white" colspan="2" width="586"><font face="Verdana" size="1">Добро пожаловать. Вы можете войти в систему.<br><br>
<table width=300 cellspacing=0 cellpadding=0 border=0>
<tr><td width=100 valign="top">
<form action="admin.php?login" method="post">
Логин:
</td><td width=200 valign="top">
<input type="text" style="background-color : #f5f5f5;
 	border-style: solid;border-width: 1;" name="login">
</td></tr><tr><td width=100 valign="top">
Пароль:
</td><td width=200 valign="top">
<input type="password" style="background-color : #f5f5f5;
 	border-style: solid;border-width: 1;" name="pass">
</td></tr><tr><td width=211 valign="top">
<br><input type="submit" style="background-color : #cccccc;
 	border-style: solid;border-width: 1;" value="Проверить"><br>
</form></td></tr></table></font>
   </td>
  </tr>
 </center>
  <tr>
   <td align=left bgcolor="f5f5f5" colspan="2">
   </td>
  </tr>
 </table><br><br>
<?php if (!file_exists("password.adm")) { echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=center bgcolor=\"f5f5f5\" colspan=\"2\" width=\"588\" valign=\"top\"><center>Вход в систему осуществляется впервые! Введите любой логин и пароль и запомните их.<br></center></td></tr></table></center>";}?>
<?php endif; ?>
</center>
</body>
</html>