Показать сообщение отдельно
  #1 (permalink)  
Старый 10.06.2011, 19:09
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

Проблема со скриптом авторизации
Собственно, изначально система авторизации была рабочая, была построена на константах файла-конфига и имела следующий вид:

session_start();
    include("dbconnect.php");   
    if (isset($_POST["authorize"]))
            $password=$_POST["password"];
            $login=$_POST["login"];
    {       
        if (!strcmp($_POST["login"], ADMIN_LOGIN) && !strcmp($_POST["password"], ADMIN_PASS))
        { 
            $_SESSION["log"] = ADMIN_LOGIN;
            $_SESSION["pass"] = ADMIN_PASS;
            header("Location: index.php");
        }
        else $errorStr = "Invalid login and/or password";
    }

а во всех файлах, в которых требуется авторизация, в начале стояла следующая проверка:


include ("dbconnect.php");
session_start();
include("checklogin.php");
if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized
    {
        header("Location: access_admin.php");
        die("<script>window.location='access_admin.php';</script>");
    }
    if (isset($_GET["logout"])) 
    {   
        $_SESSION["log"] = "";
        $_SESSION["pass"] = "";
        unset($_SESSION["log"]);
        unset($_SESSION["pass"]);
        die("<script>window.location='access_admin.php';</script>");
    }

и файл checklogin.php:
if ((isset($_SESSION["log"]) && isset($_SESSION["pass"])) && (strcmp($_SESSION["log"], ADMIN_LOGIN) || strcmp($_SESSION["pass"], ADMIN_PASS)))
    {
        unset($_SESSION["log"]);
        unset($_SESSION["pass"]);
    }

Собственно, желая организовать авторизацию чеорез БД, я привел ее к следующему:
session_start();
    include("dbconnect.php");   
    if (isset($_POST["authorize"]))
            $password=$_POST["password"];
            $login=$_POST["login"];
    {       
                $authorize="SELECT login, password FROM admin WHERE login='$login'";
            $authorize=mysqli_query($connector, $authorize);
            while($row=mysqli_fetch_assoc($authorize)){
                $real_pass=$row['password'];
                $real_login=$row['login'];
                 }
                if (!strcmp($login, $real_login) && !strcmp($password, $real_pass))
                {
                        $_SESSION["log"] = $real_login;
            $_SESSION["pass"] = $real_pass;
            header("Location: index.php");
                }
                else $errorStr = "Invalid login and/or password";
    }

Авторизация происходит, но вот при проверке в файле checklogin.php я не знаю чем заменить ADMIN_LOGIN и ADMIN_PASS. Пока происходит редирект на страницу авторизации без входа.
Если же убрать checklogin.php совсем, то тогда авторизация не срабатывает, то есть, невозможно разлогиниться...

Помогите разобраться плиз.
Ответить с цитированием