即使在浏览器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而不是会话来完成。