即使在浏览器closures后,是否可以保持会话?

任何人都可以告诉如何保持一个会话(在PHP中),以便会话包含保留,即使浏览器重新启动后仍可访问。

一般而言,会话在浏览器closures的情况下到期,但是我希望会话不被closures,以便下次使用浏览器时可以访问会话数据。

在开始会话之前使用session_set_cookie_parameters()给会话cookie一个非零的生命周期,或者将session.cookie_lifetime设置为非零。

这是矛盾的。
会话代表“直到浏览器closures”。
会话是过期的事情
如果你不希望它过期,你可能根本不需要一个会话。

你可能正在用cookie或数据库搞会议。

在PHP(和大多数Web技术)中的会话是这样工作的:

您将会话ID存储在客户端计算机上的cookie中。

当客户端来到你的网站,他发给你的会话ID。

服务器在具有会话ID的文件中查找会话数据并加载它。

所以closures浏览器对会话没有影响,但是如果浏览器在closures浏览器时清空cookie(我不认为浏览器会这样做)。

如果您确定用户始终login,则可以将其用户名/密码存储在他的Cookie中,但这并不安全。

我发现的最简单和最好的是,而不是只是session_start,我们应该在每个页面上input这个会话

 $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 ,也可以参考这个问题

这可以通过使用cookies而不是会话来完成。