我希望每24小时清理一个会话变量。我不想杀死或取消设置所有会话,每天24小时不会设置一个会话。
答案 0 :(得分:2)
尝试将Cookie过期时间设置为now()+ 24小时......
答案 1 :(得分:1)
创建会话时,请写入时间戳。然后你使用seesion检查实际时间戳和创建会话,然后如果差异比86400差,那么删除会话并创建新会话。
此解决方案可防止用户使用超过24小时的会话。您可以将其他比较算法应用于例如。阻止用户在当天凌晨1点之前使用会话。如果你想在每天凌晨1点每隔24小时进行一次擦除,那么将会非常相同。
答案 2 :(得分:0)
在客户端上创建第一个会话时,只需给它一个日期:
if(!isset($_SESSION['date'])
$_SESSION['date'] = date('m_d_y');
然后每当页面更改时检查该日期:
if($_SESSION['date'] == date('m_d_y')){
//still today
}
else {
//destroy session
}
或者您可以使用时间戳并根据小时数进行检查:
if(!isset($_SESSION['creationTime'])
$_SESSION['creationTime'] = time();
if (time() - $_SESSION['creationTime'] <= 60*60*24 ){
//still today
}
else {
//destroy session
}
答案 3 :(得分:0)
创建会话时(可能在用户登录时),声明会话超时:
session_start();
$_SESSION["timeout"] = time()+ (60*60*24);
创建后端函数/页面,其中jquery可以每隔10秒/ 5秒调用一次(我保存为get_session.php):
session_start();
$session_life = time() - $_SESSION["timeout"];
$inactive = 0;
if($session_life > $inactive){
session_destroy();
echo 'Destroyed';
}
jquery脚本每5秒运行一次(建议在页面的母版页/模板页眉/页脚):
<script type="text/javascript">
window.setInterval(function(){
sessionHeartBeat();
}, 5000);
function sessionHeartBeat(){
$.ajax({
url: 'get_session.php',
success: function(response){
console.log(response);
}
});
}
</script>