2013-08-31 27 views
0

我想让会话保持三天,并且每当他们访问该页面时,都会再次更新三天。基本上如果他们没有访问该网站三天,他们的会议下降。

ini_set('session.cookie_lifetime',60*60*24*3); //saw on a similar SO question 
session_start(); 

上面的代码段是在top.php的顶部,也就是include() ED每一个单页上的文件。

$_SESSION["username"] = $username; 
$_SESSION["password"] = $hashedpass; 
$_SESSION["authtoken"] = $authkey; //authentication key 

以上是上的login.php根据它存在于SQL验证其设定$_SESSION数据。

也许这是WAMP的功能,但是无论何时关闭浏览器,尽管php.ini参数被更改,会话也会终止。我可能在top.php的第1行使用了错误的位?

+2

您确定会话在服务器端而不是客户端被终止?许多浏览器在关闭时会清除会话。 – TRiG

+0

使用'$ _SESSION'对我来说比较新,所以我不完全确定。我的浏览器不会终止我经常访问的其他网站的会话,所以我很少相信它会选择性地从我的网站中删除会话。 – gator

回答

2

使用cookies,我怀疑你可以控制你的会话生存期。

你需要做的是基本上存储cookie中需要的会话变​​量,并且在用户进入站点时,如果没有设置会话变量,检查是否存在与这些变量相关的cookie并将数据从cookie加载到会话。或者您可以直接从cookies中访问它们

如果您有不想存储在Cookie中的敏感数据。您可以将这些数据以某种持久性存储形式存储在服务器上(数据库或文件,数据库更可取),并将此数据的ID存储在用户端的Cookie中。当用户访问您的网站时,从cookie中获取ID并加载数据。

+0

我并不是特别想将敏感数据存储到cookie中(或者更糟糕的是,让用户为了恶意目的而制作自己的cookie)。我希望完全通过会议来完成。 – gator

+1

刚刚更新了我的答案bro –

+1

@JoshuaKissoon,我应该去DB选项。只是cookie中的'uid'和'expiration date' + DB中一些更需要的信息 – Mathlight

0

我刚刚发现:

ini_set('session.cookie_lifetime', 60*60*24*3); 
ini_set('session.gc_maxlifetime', 60*60*24*3); 
session_start(); 

...工作正常。即使浏览器关闭,它仍然保持活动状态。

+0

但是想想看修复约书亚所给的。在数据库中保存“会话”非常常见... – Mathlight

相关问题