任何人都可以告诉如何维护会话(在PHP中),以便保留会话,并且即使在重新启动浏览器后也可以访问。
一般情况下,会话会在关闭浏览器时到期,但我希望会话不被关闭,以便下次使用浏览器时可以访问会话数据。
答案 0 :(得分:19)
在开始会话之前使用session_set_cookie_parameters()
为会话Cookie提供非零生命周期,或将session.cookie_lifetime
设置为非零。
答案 1 :(得分:8)
这是矛盾的
会话代表“直到浏览器关闭”
会话是过期的。
如果你不希望它过期,你可能根本不想要一个会话。
您可能正在使用cookie或数据库搞乱会话。
答案 2 :(得分:4)
php中的会话(以及大多数网络技术)的工作方式如下:
您将会话ID存储在客户端计算机上的cookie中。
当客户端访问您的网站时,他会向您发送会话ID。
服务器在具有会话ID的文件中查找会话数据并加载它。
因此关闭浏览器对会话没有影响,但是如果浏览器在关闭时清空cookie(我不认为任何浏览器会这样做)。
如果您确定用户始终登录,您可以将其用户/密码存储在他的cookie中,但这不是很安全。
答案 3 :(得分:2)
我发现最简单和最好的是,我们应该在每个页面上输入这个会话
而不仅仅是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
答案 4 :(得分:0)
您可以执行以下操作:(请参阅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
,另请参阅this question
答案 5 :(得分:-1)
如果您使用Cookie而不是会话,则可以执行此操作。