Вход через сессию в PHP не работает с первой попытки (в новом окне) - PullRequest
1 голос
/ 13 февраля 2010

Итак, я работаю над приложением, которое требует от пользователя входа в систему, прежде чем он получит доступ к «чувствительному материалу».

Сценарий входа работает следующим образом: пользователь вводит U / P-> Script проверяет данные-> Если он действителен, переменные SESSION установлены.

Это очень странная проблема, поскольку СЕССИИ обрабатываются сервером.

Проблема: при первом открытии скрипта в новом окне или вкладке отправка формы входа возвращает вас обратно к форме входа. Все последующие запросы работают как положено!

Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2010

$ 5 говорит, что $auth->userAuth() - это то место, где устанавливаются значения сеанса, и угадывание, которое должно было быть !$auth->userAuth() для случая "пароль не соответствует". Хотя логика частично перекрывает себя.

Попробуйте вместо этого, просто отсортировав логику по отдельным блокам:

if ($action == 'login') {
    // all of the pre-authentication error checking first
    if (!$auth->emailExists($username)) {
        header('Location: index.php?action=unknownuser');
    } else if (!$auth->isAccountActive($username)) {
        header('Location: index.php?action=inactive');
    }

    // then actual authentication here - any errors have already redirected
    $_SESSION['loggedin'] = $auth->userAuth($username, $password);
    // opinionated bonus: adds clarity & keeps superglobals out of your classes
    // (you'll have to take them out yourself though)

    // and finally redirect on success/failure
    if (!$_SESSION['loggedin']) header('Location: index.php?action=authfailed');
    else header('Location: services.php');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...