Подтвердить что ты не робот

Можно ли проводить сеанс даже после закрытия браузера?

Может ли кто-нибудь сказать, как поддерживать сеанс (в PHP), чтобы содержание сеанса было сохранено и доступно даже после перезапуска браузера.

В общем, сеанс заканчивается закрытием браузера, но я хочу, чтобы сессия НЕ ЗАКРЫЛА, чтобы доступ к данным сеанса можно получить при следующем использовании браузера.

4b9b3361

Ответ 1

Используйте session_set_cookie_parameters(), чтобы дать cookie сеанса ненулевое время жизни перед началом сеанса или установить session.cookie_lifetime в ненулевое значение.

Ответ 2

Это оксюморон.
Сессия означает "до закрытия браузера".
Сессия заканчивается. Если вы не хотите, чтобы срок его действия истек, вам, вероятно, не нужен сеанс вообще.

Вероятно, вы используете сеанс обмена сообщениями с файлом cookie или базой данных.

Ответ 3

Сессия в php (и в большинстве веб-технологий) работает следующим образом:

Вы сохраняете идентификатор сеанса в файле cookie на клиентском компьютере.

Когда клиент приходит на ваш сайт, он отправляет вам идентификатор сеанса.

Сервер находит данные сеанса в файле с идентификатором сеанса и загружает его.

Таким образом, закрытие браузера не влияет на сеанс, но если браузер пуст файл cookie, когда вы его закрываете (я не думаю, что какой-либо браузер делает такую ​​вещь).

Если вы уверены, что пользователь всегда вошел в систему, вы можете сохранить его имя пользователя/пароль в своих файлах cookie, но это не очень безопасно.

Ответ 4

Самый простой и лучший из них - это то, что вместо просто session_start мы должны вводить это на каждой странице, есть сеанс

$expire = 365*24*3600; // We choose a one year duration

ini_set('session.gc_maxlifetime', $expire);

session_start(); //We start the session 

setcookie(session_name(),session_id(),time()+$expire); 
//Set a session cookies to the one year duration

Ответ 5

Вы можете сделать что-то вроде этого: (см. session_set_cookie_parameters() и session_name())

// long long time
$sessionTime = 365 * 24 * 60 * 60;
$sessionName = "my_session";
session_set_cookie_params($sessionTime);
session_name($sessionName);
session_start();

if (isset($_COOKIE[$sessionName])) {
    setcookie($sessionName, $_COOKIE[$sessionName], time() + $sessionTime, "/");
}

Для $sessionTime также см. этот вопрос

Ответ 6

Это можно сделать, если вы используете файлы cookie вместо сеансов.