singlepost

авторизация в админке << На главную или назад  

Народ подскажите где ошибка или может дадите свой вариант
я сделал админку в начале каждого ее файла поcтавил код
<? include(lock.php);?>

Файл lock.php выглядет так
<?php
include("blocks/bd.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();
}

}

?>
таблицу в базе завел туда записал user Иpass
но при попытке входа хоть я и ввожу правильные данные все равно опять открывается окно авторизации а не нужные страницы

подскажите где ошибка или мож что свое посоветуете попроще?

3 ответов в теме “авторизация в админке”

  1. 2
    Юрий Жупиков ответил:

    А вот такой

    <?php
    session_start();
    //Поключаем конфиг здесь имена переменных команд подключения к базе
    include("config.inc.php");

    //Необходимо подключиться к БД
    $link = mysql_сonnect($DBSERVER, $DBUSER, $DBPASS)
    or die("Не могу подключиться" );
    // сделать $DB текущей базой данных
    mysql_select_db($DB, $link) or die ('Не могу выбрать БД');

    //Если нет сессий
    if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
    //Если кнопка не нажата, отображаем форму
    if(!$_POST['do']){

    echo '<form name="1" action="" method="post">
    <input name="login" type="text" value=""> <br/>
    <input name="password" type="password" value=""> <br/>
    <input name="do" type="submit" value="Войти">
    </form>';

    }
    //Если кнопка нажата
    if($_POST['do']) {
    //Проверяем данные
    $login = $_POST['login'];
    $upass = $_POST['password'];
    if($login !='' AND $upass !='') {
    //Создаем запрос
    $q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");

    //Проверяем существует ли хоть одна запись
    if(mysql_num_rows($q1)===1) {
    //Если есть, то создаем сессии и перенаправляем на эту страницу
    $r=mysql_fetch_array($q1);
    $_SESSION['user'] = $r['nick'];
    $_SESSION['password'] = $r['password'];

    $_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));

    @Header("Location: index.php");
    }
    else {echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}
    }
    }
    else {echo 'Введите данные';}
    }
    else {

    $q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");
    if(@mysql_num_rows($q2)==1){
    $r2 = @mysql_fetch_array($q2);

    echo 'Вы: '.ucfirst($r2['nick']).'<br/>';
    echo '<a href="index.php">главная</a> ';
    echo '<a href="index.php?page=выфвффывф">ывывфывфыв</a><br/>';

    if($_GET['page'] !='') {
    @include("tpl/".$_GET['page'].".php");
    }
    else { @include("tpl/default.php");}

    echo '<br/><br/><a href="index.php?exit=1">выход</a>';
    }
    }
    if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: index.php");}
    ?>

    Здесь авторизованный пользователь имеет доступа, а не нет
    Почти тож самое немного может под своё пережедаешь

  2. 1
    Сергей Безрукавников ответил:

    У меня вечная проблемма с кавычками, поэтому сужу по себе, я бы тут заострил внимание

    $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.