- <?
-
- /* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + Название: | PHPru_Auth +
- + ---------------------------------------------------------- +
- + Версия: | 2.0 +
- + Стоимость: | бесплатный скрипт +
- + Требования: | PHP4 +
- + Платформа: | любая +
- + Язык: | русский +
- + Автор: | Alex (http://www.phpru.net) +
- + Copyright 2004: | PHPru.net™ - All Rights Reserved. +
- + ---------------------------------------------------------- +
- + Обновлен: | 23 июля 2004 +
- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */
-
- #######################################################################
-
- class PHPruAuth
- {
- var $LOGIN;
- var $PASSWORD;
- var $USER;
- var $PASS;
-
- function Error()
- {
- echo '<CENTER><BR><BR><FONT COLOR=RED><B>ACCESS DENIED!...</B></FONT>';
- exit("<BR>\n</BODY>\n</HTML>");
- }
-
- function CheckUser()
- {
- $this->LOGIN = 'admin'; // логин администратора
- $this->PASSWORD = 'pass'; // пароль администратора
-
- if($this->LOGIN === $_SERVER["PHP_AUTH_USER"] && $this->PASSWORD === $_SERVER["PHP_AUTH_PW"])
- {
- $_SESSION["admin_online"] = 'true';
- $AUTH = array(trim($this->LOGIN),trim($this->PASSWORD));
- return ($AUTH);
- }
- $user = file('users.php');
- foreach($user as $value)
- {
- list($this->USER,$this->PASS,$email,$code,$time) = explode("^^",$value);
- if(($this->USER === $_SERVER["PHP_AUTH_USER"]) && ($code == 'yes'))
- {
- $AUTH = array(trim($this->USER),trim($this->PASS));
- return ($AUTH);
- }
- }
- }
-
- function PHPruAuth()
- {
- if(isset($_SERVER["PHP_AUTH_USER"]))
- $AUTH = $this->CheckUser();
- if ( (!isset($_SERVER["PHP_AUTH_USER"])) || ! (($_SERVER["PHP_AUTH_USER"] === $AUTH[0]) && ( $_SERVER["PHP_AUTH_PW"] === $AUTH[1] )) )
- {
- header("HTTP/1.0 401 Unauthorized");
- header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
- header("WWW-Authenticate: Basic Realm=\"PROTECTED AREA\"");
- $this->Error();
- }
- }
- }
-
- session_name('PROTECT');
- session_start();
- $MEMBER = new PHPruAuth;
-
- ?>
- <HTML>
- <HEAD>
- <TITLE>Закрытая зона</TITLE>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
- <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
- <LINK href="phpru.css" type=text/css rel=STYLESHEET>
- </HEAD>
- <BODY leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" BGCOLOR=#2A3747>
- <CENTER><BR>
- <?
-
- function ListUser()
- {
- $list = file('users.php');
- $all = count($list);
- ?>
- <TABLE WIDTH=600 CELLPADDING=5 CELLSPACING=1 BGCOLOR=#FFFFFF>
- <TR ALIGN=CENTER BGCOLOR=#444444>
- <TD><B>Логин</B></TD>
- <TD><B>Пароль</B></TD>
- <TD><B>E-mail</B></TD>
- <TD><B>Дата регистрации</B></TD>
- <TD><B>Удалить</B></TD>
- </TR>
- <?
- $act = 0;
- foreach($list as $string)
- {
- list($user,$pass,$email,$code,$time) = explode("^^",$string);
- if ($code != 'yes')
- {
- if($time > time())
- $txt = '<FONT COLOR=#66CC00>ожидаем до</FONT> ';
- else
- $txt = '<FONT COLOR=#FF0000>на удаление</FONT> ';
- }
- else
- {
- $txt = ''; $act++;
- }
- echo '<TR ALIGN=CENTER BGCOLOR=#2A3747><TD>'.$user.'</TD><TD>'.$pass."</TD><TD><A HREF='mailto:".trim($email)."'>".trim($email)."</A></TD><TD>".$txt.date("d.m.Yг.",$time)."</TD><TD><A HREF='?user=del&login=".$user."' TITLE='Удалить'><FONT COLOR='#FF0000'><B>X</B></FONT></A></TD></TR>\n";
- }
- ?>
- </TABLE>
- <BR>Пользователей, имеющих доступ в закрытую зону - <B><?=$act?></B>
- <BR>Всего пользователей -
- <?
- echo '<B>'.$all.'</B>';
- }
-
- function AddUser()
- {
- ?>
- <FORM METHOD=POST ACTION="">
- <TABLE>
- <TR>
- <TD>Логин: </TD>
- <TD><INPUT class=auth TYPE="text" NAME="login"></TD>
- </TR>
- <TR>
- <TD>Пароль: </TD>
- <TD><INPUT class=auth TYPE="text" NAME="pass"></TD>
- </TR>
- <TR>
- <TD>E-mail: </TD>
- <TD><INPUT class=auth TYPE="text" NAME="email"></TD>
- </TR>
- <TR>
- <TD COLSPAN=2><INPUT class=auth TYPE="submit" NAME="protect" VALUE='Добавить'></TD>
- </TR>
- </TABLE>
- </FORM>
- <?
- }
-
- function DelUser()
- {
- $list = file('users.php');
- for($a = 0; $a < count($list); $a++)
- {
- list($user,$pass,$email,$code,$time) = explode("^^",$list[$a]);
- if($user == trim($_GET["login"]))
- {
- $fix = 1;
- unset($list[$a]);
- echo 'Пользователь '.$user.' удален!';
- break;
- }
- }
- if(!isset($fix))
- echo 'Ошибка. Пользователь '.$_GET["login"].' в базе не найден.';
- else
- {
- $user_info = str_replace("\r","",join("",$list));
- PHPruSave($user_info,'users.php','w+');
- }
- }
-
- function PHPruSave($input,$file,$chmod='w+')
- {
- $fp = fopen($file,$chmod);
- flock($fp,2);
- fputs ($fp, $input);
- flock($fp,3);
- fclose($fp);
- }
-
-
- if (isset($_SESSION["admin_online"]))
- {
- ShowAdmin();
- exit("\n</BODY>\n</HTML>");
- }
-
- function ShowAdmin()
- {
- ?>
- <CENTER><BR><BR>
- <P><B>Меню администратора:</B><BR><BR>
- <A HREF="?user=add">Создать нового пользователя</A><BR><BR>
- <A HREF="?user=list">Просмотреть список пользователей</A><BR><BR>
- <?
-
- if(isset($_POST["protect"]))
- {
- $check = file('users.php');
- foreach($check as $string)
- {
- list($user,$pass,$email,$code,$time) = explode("^^",$string);
- if(trim($_POST["login"]) == trim($user))
- {
- $fix = 1;
- break;
- }
- }
- if(!isset($fix))
- {
- $user_info = trim($_POST["login"]).'^^'.trim($_POST["pass"]).'^^'.trim($_POST["email"]).'^^yes^^'.time()."\n";
- PHPruSave($user_info,'users.php','a+');
- echo 'Новый пользователь добавлен.';
- unset($_GET["user"]);
- }
- else
- {
- echo 'Ошибка. Пользователь с таким логином уже есть.<BR><BR>';
- }
- }
-
- if(isset($_GET["user"]))
- {
- if($_GET["user"] == 'add')
- AddUser();
- elseif($_GET["user"] == 'list')
- ListUser();
- elseif($_GET["user"] == 'del')
- DelUser();
- }
-
- ?>
- <BR><BR><BR>
- <FONT CLASS=stat>Copyright © 2004 <A HREF='http://phpru.net'>PHPru.net™</A><BR><BR>
- <?
- }
- ?>