Intereting Posts

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

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

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

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

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

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

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

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

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

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

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

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

Самое легкое и лучшее, что я нашел, это то, что вместо просто 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 

Вы можете сделать что-то вроде этого: (см. 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 также обратитесь к этому вопросу

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