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

Размер файла: 5.94Kb
  1. <?
  2.  
  3. /* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  4. + Название: | PHPru_Auth +
  5. + ---------------------------------------------------------- +
  6. + Версия: | 2.0 +
  7. + Стоимость: | бесплатный скрипт +
  8. + Требования: | PHP4 +
  9. + Платформа: | любая +
  10. + Язык: | русский +
  11. + Автор: | Alex (http://www.phpru.net) +
  12. + Copyright 2004: | PHPru.net™ - All Rights Reserved. +
  13. + ---------------------------------------------------------- +
  14. + Обновлен: | 23 июля 2004 +
  15. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */
  16.  
  17. #######################################################################
  18.  
  19. class PHPruAuth
  20. {
  21. var $LOGIN;
  22. var $PASSWORD;
  23. var $USER;
  24. var $PASS;
  25.  
  26. function Error()
  27. {
  28. echo '<CENTER><BR><BR><FONT COLOR=RED><B>ACCESS DENIED!...</B></FONT>';
  29. exit("<BR>\n</BODY>\n</HTML>");
  30. }
  31. function CheckUser()
  32. {
  33. $this->LOGIN = 'admin'; // логин администратора
  34. $this->PASSWORD = 'pass'; // пароль администратора
  35.  
  36. if($this->LOGIN === $_SERVER["PHP_AUTH_USER"] && $this->PASSWORD === $_SERVER["PHP_AUTH_PW"])
  37. {
  38. $_SESSION["admin_online"] = 'true';
  39. $AUTH = array(trim($this->LOGIN),trim($this->PASSWORD));
  40. return ($AUTH);
  41. }
  42. $user = file('users.php');
  43. foreach($user as $value)
  44. {
  45. list($this->USER,$this->PASS,$email,$code,$time) = explode("^^",$value);
  46. if(($this->USER === $_SERVER["PHP_AUTH_USER"]) && ($code == 'yes'))
  47. {
  48. $AUTH = array(trim($this->USER),trim($this->PASS));
  49. return ($AUTH);
  50. }
  51. }
  52. }
  53.  
  54. function PHPruAuth()
  55. {
  56. if(isset($_SERVER["PHP_AUTH_USER"]))
  57. $AUTH = $this->CheckUser();
  58. if ( (!isset($_SERVER["PHP_AUTH_USER"])) || ! (($_SERVER["PHP_AUTH_USER"] === $AUTH[0]) && ( $_SERVER["PHP_AUTH_PW"] === $AUTH[1] )) )
  59. {
  60. header("HTTP/1.0 401 Unauthorized");
  61. header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
  62. header("WWW-Authenticate: Basic Realm=\"PROTECTED AREA\"");
  63. $this->Error();
  64. }
  65. }
  66. }
  67.  
  68. session_name('PROTECT');
  69. session_start();
  70. $MEMBER = new PHPruAuth;
  71.  
  72. ?>
  73. <HTML>
  74. <HEAD>
  75. <TITLE>Закрытая зона</TITLE>
  76. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
  77. <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  78. <LINK href="phpru.css" type=text/css rel=STYLESHEET>
  79. </HEAD>
  80. <BODY leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" BGCOLOR=#2A3747>
  81. <CENTER><BR>
  82. <?
  83.  
  84. function ListUser()
  85. {
  86. $list = file('users.php');
  87. $all = count($list);
  88. ?>
  89. <TABLE WIDTH=600 CELLPADDING=5 CELLSPACING=1 BGCOLOR=#FFFFFF>
  90. <TR ALIGN=CENTER BGCOLOR=#444444>
  91. <TD><B>Логин</B></TD>
  92. <TD><B>Пароль</B></TD>
  93. <TD><B>E-mail</B></TD>
  94. <TD><B>Дата регистрации</B></TD>
  95. <TD><B>Удалить</B></TD>
  96. </TR>
  97. <?
  98. $act = 0;
  99. foreach($list as $string)
  100. {
  101. list($user,$pass,$email,$code,$time) = explode("^^",$string);
  102. if ($code != 'yes')
  103. {
  104. if($time > time())
  105. $txt = '<FONT COLOR=#66CC00>ожидаем до</FONT> ';
  106. else
  107. $txt = '<FONT COLOR=#FF0000>на удаление</FONT> ';
  108. }
  109. else
  110. {
  111. $txt = ''; $act++;
  112. }
  113. 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";
  114. }
  115. ?>
  116. </TABLE>
  117. <BR>Пользователей, имеющих доступ в закрытую зону - <B><?=$act?></B>
  118. <BR>Всего пользователей -
  119. <?
  120. echo '<B>'.$all.'</B>';
  121. }
  122.  
  123. function AddUser()
  124. {
  125. ?>
  126. <FORM METHOD=POST ACTION="">
  127. <TABLE>
  128. <TR>
  129. <TD>Логин: </TD>
  130. <TD><INPUT class=auth TYPE="text" NAME="login"></TD>
  131. </TR>
  132. <TR>
  133. <TD>Пароль: </TD>
  134. <TD><INPUT class=auth TYPE="text" NAME="pass"></TD>
  135. </TR>
  136. <TR>
  137. <TD>E-mail: </TD>
  138. <TD><INPUT class=auth TYPE="text" NAME="email"></TD>
  139. </TR>
  140. <TR>
  141. <TD COLSPAN=2><INPUT class=auth TYPE="submit" NAME="protect" VALUE='Добавить'></TD>
  142. </TR>
  143. </TABLE>
  144. </FORM>
  145. <?
  146. }
  147.  
  148. function DelUser()
  149. {
  150. $list = file('users.php');
  151. for($a = 0; $a < count($list); $a++)
  152. {
  153. list($user,$pass,$email,$code,$time) = explode("^^",$list[$a]);
  154. if($user == trim($_GET["login"]))
  155. {
  156. $fix = 1;
  157. unset($list[$a]);
  158. echo 'Пользователь '.$user.' удален!';
  159. break;
  160. }
  161. }
  162. if(!isset($fix))
  163. echo 'Ошибка. Пользователь '.$_GET["login"].' в базе не найден.';
  164. else
  165. {
  166. $user_info = str_replace("\r","",join("",$list));
  167. PHPruSave($user_info,'users.php','w+');
  168. }
  169. }
  170.  
  171. function PHPruSave($input,$file,$chmod='w+')
  172. {
  173. $fp = fopen($file,$chmod);
  174. flock($fp,2);
  175. fputs ($fp, $input);
  176. flock($fp,3);
  177. fclose($fp);
  178. }
  179.  
  180.  
  181. if (isset($_SESSION["admin_online"]))
  182. {
  183. ShowAdmin();
  184. exit("\n</BODY>\n</HTML>");
  185. }
  186.  
  187. function ShowAdmin()
  188. {
  189. ?>
  190. <CENTER><BR><BR>
  191. <P><B>Меню администратора:</B><BR><BR>
  192. <A HREF="?user=add">Создать нового пользователя</A><BR><BR>
  193. <A HREF="?user=list">Просмотреть список пользователей</A><BR><BR>
  194. <?
  195.  
  196. if(isset($_POST["protect"]))
  197. {
  198. $check = file('users.php');
  199. foreach($check as $string)
  200. {
  201. list($user,$pass,$email,$code,$time) = explode("^^",$string);
  202. if(trim($_POST["login"]) == trim($user))
  203. {
  204. $fix = 1;
  205. break;
  206. }
  207. }
  208. if(!isset($fix))
  209. {
  210. $user_info = trim($_POST["login"]).'^^'.trim($_POST["pass"]).'^^'.trim($_POST["email"]).'^^yes^^'.time()."\n";
  211. PHPruSave($user_info,'users.php','a+');
  212. echo 'Новый пользователь добавлен.';
  213. unset($_GET["user"]);
  214. }
  215. else
  216. {
  217. echo 'Ошибка. Пользователь с таким логином уже есть.<BR><BR>';
  218. }
  219. }
  220.  
  221. if(isset($_GET["user"]))
  222. {
  223. if($_GET["user"] == 'add')
  224. AddUser();
  225. elseif($_GET["user"] == 'list')
  226. ListUser();
  227. elseif($_GET["user"] == 'del')
  228. DelUser();
  229. }
  230.  
  231. ?>
  232. <BR><BR><BR>
  233. <FONT CLASS=stat>Copyright &copy; 2004 <A HREF='http://phpru.net'>PHPru.net&trade;</A><BR><BR>
  234. <?
  235. }
  236. ?>