Вход в PHP – возобновите старый сеанс без продления его срока службы [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Вход в PHP – возобновите старый сеанс без продления его срока службы [дубликат]

Сообщение Anonymous »

Я пытаюсь реализовать механизм входа в PHP, способный автоматически возобновлять ранее созданный сеанс в течение последнего дня, не запрашивая у пользователя повторно имя пользователя и пароль.
Если новый сеанс должен быть создан, этот сеанс должен иметь продолжительность жизни, скажем, один день (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();
}
}
Здесь функция renderPage() вызывается для визуализации страницы контента, но сначала она проверяет, был ли уже открыт сеанс с клиента, с помощью checkConnectionStatus() . Последний вызывает session_start, устанавливая время жизни cookie равным 86400. После этого вызова загружается $_SESSION$, и, если установлено поле «user», то отображается страница содержимого. в противном случае мы отображаем страницу входа.
При нажатии «Отправить» на странице входа вызывается функция login($username, $password). . Наличие $username и $password проверяется с помощью isUserInDB(). Если да, то вызывается session_start (снова!) и устанавливается поле «user» $_SESSION. Затем снова вызывается renderPage(), что приводит к третьему вызову session_start().
Правильен ли этот подход для реализации входа в систему с автоматическим возобновлением предыдущего создали сеанс в течение последнего дня?
Кроме того, будут ли многочисленные вызовы session_start сбрасывать срок действия файлов cookie?

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-lifetime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»