[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Простой блок авторизации для администратора
amberlx
Если есть сайт и админ, который заполняет его содержимым - вычитал такой способ. Кажись для большинства случаев подойдет. Примерно так:

Файл config.php
Код
<?php
   $host   = "localhost";
   $user   = "root";
   $pass   = "";
   $dbname = "auth_db";
?>


Файл install.php
Код
<?php
   include "config.php";
   $conn   = mysql_connect($host, $user, $pass);
   $query  = "CREATE DATABASE $dbname";
   mysql_query ($query, $conn);
   mysql_select_db($dbname, $conn);

   mysql_query("
       CREATE TABLE
           userlist(
               id   int(11) NOT NULL auto_increment,
               user varchar(16) NOT NULL default '',
               pass varchar(16) NOT NULL default '',
               PRIMARY KEY (id)
           )
   ");
   mysql_query("INSERT INTO userlist VALUES ('1', 'admin', '12345')");
   echo 'Ok. <a href="admin.php">Админка</a>';
?>


Файл db.php
Код
<?php
   require_once "config.php";
   $conn = mysql_connect ($host, $user, $pass);
   mysql_select_db($dbname, $conn);
?>


Файл lock.php
Код
<?php
   include("db.php");

   if (!isset($_SERVER['PHP_AUTH_USER'])) {
       Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
       Header ("HTTP/1.0 401 Unauthorized");
       exit();
   }
   else {
       if (!get_magic_quotes_gpc()) {
           $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
           $_SERVER['PHP_AUTH_PW']   = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
       }

       $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
       $lst = @mysql_query($query);

       if (!$lst) {
           Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
       }

       if (mysql_num_rows($lst) == 0) {
           Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
       }

       $pass =  @mysql_fetch_array($lst);
       if ($_SERVER['PHP_AUTH_PW']!= $pass['pass']) {
           Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
       }
   }
?>


Файл admin.php
Код
<?php
   include "lock.php";
   echo 'Ура! Вы в админке.';
?>






Спустя 6 часов, 2 минуты, 49 секунд (31.01.2009 - 07:53) Sylex написал(а):
как простой WWW-Authenticate: Basic пойдет smile.gif

Спустя 1 час, 41 минута, 26 секунд (31.01.2009 - 09:34) twin написал(а):
Можно чуть пооптимальней сделать и пароль все таки хэшировать желательно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.