Работает ли функция session_destroy() при неудачной попытке входа в систему?

#php #authentication

#php #аутентификация

Вопрос:

Я пытаюсь создать страницу входа в систему электронной почты 2FA, и я немного сомневаюсь в ее использовании $_SESSION .

Процесс включает эти шаги в следующем порядке :

  1. Убедитесь, что значение $_SESSION['isLoggedIn'] не установлено (см. Шаг 3)
  2. Убедитесь, что $_POST['username'| 'password'] это те же значения, что и те, которые хранятся в базе данных
  3. В этом случае, если пароль, введенный пользователем, правильный, установите $_SESSION['isLoggedIn'] = false (чтобы пользователь, пытающийся войти в систему, не мог быть перенаправлен на ту же страницу)
  4. Перенаправление на страницу проверки токена, которая генерирует и отправляет токен на адрес электронной почты пользователя
  5. Проверьте, являются ли токены одинаковыми значениями
    • Если это правильно, установите $_SESSION['isLoggedIn'] = true
    • Если нет, вызовите session_destroy() ?
  6. Перенаправить пользователя в исходную форму в случае ошибки

Есть ли какие-либо лучшие решения в этом случае?

Заранее благодарю вас за ваше время,

Ответ №1:

Если вы не устанавливали другие значения на странице ранее в своем сеансе, это может быть правильным решением. Но помните: Сеанс будет полностью остановлен, поэтому другие значения, которые вы установили ранее, будут удалены

Комментарии:

1. Спасибо за разъяснение. Поправьте меня, если я ошибаюсь, предполагая, что два пользователя пытаются войти в систему одновременно, но один из них терпит неудачу, второй пользователь также должен быть затронут? (пока он $_SESSION['id'] не установлен?)

2. @tama Нет, сеанс предназначен для каждого пользователя, поэтому, если вы сделаете что-то с 1 человеком в его сеансе, другие сеансы не будут затронуты

3. да, извините за это @Timberman, я неправильно прочитал ваш первый ответ, еще раз спасибо!