我正在尝试使用下面的脚本将会话生命周期延长到3天。
ini_set('session.gc_maxlifetime',3*24*60*60);
ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',1);
$sessionCookieExpireTime = 3*24*60*60;
session_set_cookie_params($sessionCookieExpireTime);
session_start();
// page code
会话生命周期必须保持3天,并且在第3天会话结束时必须到期。我的问题是,
1)每次加载页面时会重置会话吗?
2)我是否会在每次重页加载时将生命周期延长至3天?
如果是,我不想在每次加载页面时延长会话生命周期。它应该首次设置用户访问的页面,它应该在第3天结束。每次页面重新加载时都不应重置会话生存期。
会话必须在会话到期后的第3天结束时重置。直到那时不应该执行重置。
Plz在这个问题上帮助我。提前谢谢。
答案 0 :(得分:5)
创建一个名为“created”的会话变量,该变量保存创建变量时的时间戳。现在在每个页面上加载,检查是否已过了3天。如果已经过了3天,则取消设置会话变量并销毁会话。
<?php
session_start();
$expiry = 60 * 60 * 24 * 3; // 3 days
if (!isset($_SESSION['created'])) {
// Session variable 'created' doesn't exist, let's create one for the session
$_SESSION['created'] = time();
} else if (time() - $_SESSION['created'] > $expiry) {
// More than 3days has passed since the timestamp in 'created' session variable. Destroy the session.
// Here you could also unset any other session variables you had. I am unsetting the 'created' variable.
unset($_SESSION['created']);
session_destroy();
}
?>
答案 1 :(得分:2)
不,会话不会在每次加载页面时重置,并且自首次创建以来计算将到期。
答案 2 :(得分:-2)
为什么天堂的缘故你想要那个?现在让我们说一些用户在每个工作日(周一至周六)使用你的程序。
所以他可能会在星期一开始使用你的节目,会议是在星期三。星期三,会议将更新至周六。星期六,会议将更新到周二。星期二,会议将在周五,周五至周日更新,然后是booooom - &gt;需要新登录。
此行为是WTF,因为用户无法确定他在一周内的星期六和星期一之间注销的原因,而不是另一个星期一。