Если новый сеанс должен быть создан, этот сеанс должен иметь продолжительность жизни, скажем, один день (86400 секунд). С другой стороны, если сеанс присутствует и может быть восстановлен, его следует восстановить, не указывая повторно время его существования, чтобы не сбрасывать его внутренний таймер.
ПОЧЕМУ ЭТОТ ВОПРОС НЕ ДУБЛИКАТ
Определить, существует ли сеанс PHP, предполагает использование session_status(), чтобы определить, вызывался ли session_status ранее. Моя цель — определить, сохранен ли сеанс и может ли он быть перезагружен с помощью session_start().
Далее вы можете найти мой (неполный) PHP-код:
Код: Выделить всё
function renderPage() {
$currentUser = checkConnectionStatus();
if (!strcmp($currentUser, "")) {
renderLoginPage();
} else {
renderContentPage($currentUser);
}
}
function checkConnectionStatus() {
$currentUser = "";
session_start(['cookie_lifetime' => 86400]); // Create a session with a one day lifetime
if (isset($_SESSION["user"])) {
$currentUser = $_SESSION["user"];
error_log("User " . $_SESSION["user"] . " already logged in!");
} else {
error_log("Currently there is no user with a living session on this machine");
}
return $currentUser;
}
function login($username, $password) {
if (isUserInDB($username, $password)) {
session_start(['cookie_lifetime' => 86400]); // Create a session with a one day lifetime
$_SESSION["user"] = $username;
renderPage();
}
}
При нажатии «Отправить» на странице входа вызывается функция login($username, $password). . Наличие $username и $password проверяется с помощью isUserInDB(). Если да, то вызывается session_start (снова!) и устанавливается поле «user» $_SESSION. Затем снова вызывается renderPage(), что приводит к третьему вызову session_start().
Правильен ли этот подход для реализации входа в систему с автоматическим возобновлением предыдущего создали сеанс в течение последнего дня?
Кроме того, будут ли многочисленные вызовы session_start сбрасывать срок действия файлов cookie?
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-lifetime
Мобильная версия