2014-03-13 119 views
2

我想通过使用下面的脚本将会话生存期延长到3天。会话在php重置每页加载?

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帮助我解决这个问题。提前致谢。

回答

5

创建一个名为“创造”创建变量时,其持有的那一刻时间戳的会话变量。现在在每一页上载入您检查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(); 
} 

?> 
+0

谢谢@Robert – Nag

2

不,会话不复位每个页面加载,它会失效,因为它是第一次创建的时间计算。

+0

谢谢@ user1708762 – Nag

-1

为什么看在上帝的份上你想要吗?现在让我们说一些用户在每周的每个工作日(周一到周六)使用您的程序。

所以他可以开始使用上周一你的程序,会话是到星期三。星期三会议更新至星期六。星期六会议更新至星期二。在星期二,会话被刷新到星期五,直到星期五,直到星期日,然后booooom - >新的登录需要。

此行为是跆拳道,因为用户不能确定为什么他在一个星期周六和周一之间注销,但不是在其他。

+0

这是不使用登录系统,这是使用缓存的服务器响应数据,并应每隔3天重置。 – Nag