Система входа в сессию PHP - PullRequest
2 голосов
/ 28 апреля 2011

Я пытаюсь протестировать простую систему входа в систему без БД, просто для целей тестирования.Я создал файл php, который проверяет правильность имени пользователя и пароля и регистрирует сеанс.

<?php
session_start();
define("ADMINUSER", "user");
define("ADMINPASSWORD", "pass");
$user = $_POST['user'];
$pass = $_POST['pass'];
if (($user==ADMINUSER) && ($pass==ADMINPASSWORD))
{
    $_SESSION['logged_in'] = true;
    header("Location: main.php");
}
else
{
    header("Location: auth.php?flag=wrong");
}
?>

и включаю его в другие файлы, чтобы проверить, вошел ли пользователь в систему:

<? session_start();
if ($_SESSION['logged_in'] != true)
{
    header("Location: auth.php?flag=not");
    exit;
}
?>

Но, похоже, это не работает, так как я закрываю окно и пытаюсь открыть его снова, и оно не перенаправляет меня на страницу входа (auth.php).

Что я делаюнеправильно ?Любая помощь приветствуется.

Ответы [ 3 ]

6 голосов
/ 28 апреля 2011

Эта часть вашего кода:


    $_SESSION['logged_in'] == true;

Должно быть:


    $_SESSION['logged_in'] = true;

= является оператором присваивания.

== является оператором сравнения.

0 голосов
/ 28 апреля 2011

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

header('Location: auth.php', true, 303);
exit;

Рекомендуется указывать код 303 вместо перенаправления со значением по умолчанию 301. Код 301 означает «перемещен навсегда», код 303 означает «увидеть другое».

0 голосов
/ 28 апреля 2011

Он не будет перенаправлять вас на страницу auth.php, поскольку сеанс сохраняется до тех пор, пока вы не очистите куки своего браузера или пока сеанс не закончится.Поэтому закрытие окна браузера не приведет к выходу из системы Facebook / Twitter и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...