Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Проблема со скриптом авторизации (https://javascript.ru/forum/server/17970-problema-so-skriptom-avtorizacii.html)

ArmagedDance 10.06.2011 19:09

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

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 совсем, то тогда авторизация не срабатывает, то есть, невозможно разлогиниться...

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

ArmagedDance 12.06.2011 21:19

Никто не разбирается в авторизациях через php?

Gozar 13.06.2011 12:27

Все разбираются. Думать за вас никто не хочет.

Вы опубликовали очень много кода. Пожалуйста, локализуйте проблему!

ArmagedDance 14.06.2011 00:24

Весь код локализован в заглавном посте, где-то там сосредоточена проблема. Если бы я знал где она сосредоточена, тему бы не создавал.

Gozar 14.06.2011 12:13

ArmagedDance,
Думать за вас никто не хочет.

Второе: вы не задали вопрос, поэтому вам никто и не отвечает.

Цитата:

Сообщение от ArmagedDance (Сообщение 108164)
Авторизация происходит, но вот при проверке в файле checklogin.php я не знаю чем заменить ADMIN_LOGIN и ADMIN_PASS.

замените на ADMINA_LOGINA и ADMINA_PAROLA

ArmagedDance 15.06.2011 15:14

Gozar, очень остроумно.

SkyLight 18.06.2011 10:50

Ну а какой еще ответ вы хотели? Или вы не учили английский и не понимаете, что должно быть в этих константах (хотя зачем пихать админские реквизиты в константы, непонятно)?

melky 19.06.2011 10:28

Цитата:

Сообщение от ArmagedDance (Сообщение 108164)
Авторизация происходит, но вот при проверке в файле checklogin.php я не знаю чем заменить ADMIN_LOGIN и ADMIN_PASS.

это как понять,чем заменить?
md5( $login.$pass."я ломал стекло".time() );


Часовой пояс GMT +3, время: 02:51.