#php #authentication
#php #аутентификация
Вопрос:
Я пытаюсь создать страницу входа в систему электронной почты 2FA, и я немного сомневаюсь в ее использовании $_SESSION
.
Процесс включает эти шаги в следующем порядке :
- Убедитесь, что значение
$_SESSION['isLoggedIn']
не установлено (см. Шаг 3) - Убедитесь, что
$_POST['username'| 'password']
это те же значения, что и те, которые хранятся в базе данных - В этом случае, если пароль, введенный пользователем, правильный, установите
$_SESSION['isLoggedIn'] = false
(чтобы пользователь, пытающийся войти в систему, не мог быть перенаправлен на ту же страницу) - Перенаправление на страницу проверки токена, которая генерирует и отправляет токен на адрес электронной почты пользователя
- Проверьте, являются ли токены одинаковыми значениями
- Если это правильно, установите
$_SESSION['isLoggedIn'] = true
- Если нет, вызовите
session_destroy()
?
- Если это правильно, установите
- Перенаправить пользователя в исходную форму в случае ошибки
Есть ли какие-либо лучшие решения в этом случае?
Заранее благодарю вас за ваше время,
Ответ №1:
Если вы не устанавливали другие значения на странице ранее в своем сеансе, это может быть правильным решением. Но помните: Сеанс будет полностью остановлен, поэтому другие значения, которые вы установили ранее, будут удалены
Комментарии:
1. Спасибо за разъяснение. Поправьте меня, если я ошибаюсь, предполагая, что два пользователя пытаются войти в систему одновременно, но один из них терпит неудачу, второй пользователь также должен быть затронут? (пока он
$_SESSION['id']
не установлен?)2. @tama Нет, сеанс предназначен для каждого пользователя, поэтому, если вы сделаете что-то с 1 человеком в его сеансе, другие сеансы не будут затронуты
3. да, извините за это @Timberman, я неправильно прочитал ваш первый ответ, еще раз спасибо!