Для фона вот мой сценарий:
Я создаю платформу с собственным хостингом для определенной ниши, и частью этой платформы является процесс входа в систему, который при проверке устанавливает сеанс для пользователя. При каждой загрузке страницы администрирования сеанс запускается, и переменная $_SESSION['key']
проверяется, чтобы убедиться, что это правда.
Если значение равно false, пользователь перенаправляется на страницу входа в систему с ошибкой, сообщающей ему о необходимости повторного входа в систему.
Проблема заключается в том, что это зависит от того, установлен файл cookie сеанса или не установлен, в том смысле, что когда срок действия файла cookie сеанса истекает, а сеанс начинается с session_start()
, чтобы проверить $_SESSION['key']
, следовательно, создается новый файл cookie сеанса значения по умолчанию (я использую session_set_cookie_params()
для изменения пути, времени ожидания и т. д.), что делает невозможным повторный вход в систему, поскольку сеансовые куки не перезаписывают то, что я вижу.
Чтобы это исправить, я подумал об использовании чего-то вроде session_set_cookie_params(5, ..)
перед session_start()
при проверке $_SESSION['key']
, что создаст 5-секундный сеансовый cookie, поэтому можно будет создать новый при повторной регистрации в, но я не уверен, будет ли это работать - и я также уверен, что должен быть более эффективный способ установки / сброса переменной сеанса?
Вот мой код:
Начать сеанс, если подтвержден логин
if($validated){
session_set_cookie_params(1800, "/inst", $server_name['home']);
session_name("_inst");
session_start();
$_SESSION['key'] = true;
}
Проверьте, верно ли значение $ _SESSION ['key']
session_name("_inst");
session_start();
if(!$_SESSION['key']) {
header('Location: ' . $server['home'] . '/login/?error=1');
}
Любые ответы или советы будут хорошими, и, пожалуйста, спросите, если вам нужно что-то разъяснить!