我在长时间保存会话状态时遇到问题。我使用会话来保留登录状态。在任何其他代码之前,我在每个页面的顶部都需要以下代码段。首先,我缺少任何设置吗?
session_cache_expire(2880); //set session to expire in 48 hours
session_start();
有些人在48小时到期之前就已退出。什么类型的东西可能导致这种情况?我知道关闭浏览器可以杀死会话,但事实并非如此。
据我所知,当用户闲置数小时或更长时间时会发生这种情况。
在主动浏览网站时,用户永远不会被注销。
是什么给出的?
答案 0 :(得分:1)
这只影响浏览器缓存会话页面的时间。
尝试设置gc_maxlifetime变量(值以秒为单位):
ini_set("session.gc_maxlifetime", "172800");
答案 1 :(得分:1)
session_cache_expire仅影响HTTP缓存过期时间。您要做的是使用cookie来设置会话数据。
以下是我用于登录/退出会话的示例。
<?php
session_start();
if ($action == "logout") {
setcookie('sId', '', time()-60*60*24*365); //set sId cookie to expire
session_destroy();
} else if (empty($_SESSION['sId'])) { //if cannot get sId from session
if (isset($_COOKIE['sId'])) { //check if sId is in cookie
$sId = $_COOKIE['sId'];
} else { //get a new sId and set to cookie
$sId = session_id();
setcookie('sId', $sId, time()+60*60*24*365);
}
$_SESSION['sId'] = $sId;
} else { //get sId from session
$sId = $_SESSION['sId'];
}
?>