我在这里使用PHP5。我已经建立了一个登录系统,根据数据库中的记录检查用户名和密码。我想使用会话来存储记录的值。例如,当我到达我成功“登录”用户的区域时:
if($errors = 0) {
$_SESSION['logged'] = "1";
}
问题在于我希望$_SESSION['logged']
保持活动状态让我们说5分钟,所以当我在此之后执行if($_SESSION['logged'] == "1")
返回false时。此外,我想在用户关闭浏览器后删除此会话。基本上,我想要一个会话配置,以便用户可以安全地离开他的桌面,当他或某人在10分钟后按下刷新或在浏览器关闭后再次进入时,会话已被删除,并且访问受到限制。
有人可以帮忙吗?感谢。
答案 0 :(得分:3)
使用session_set_cookie_params()
更改会话Cookie的生命周期。请注意,默认情况下,它设置为 0
,这意味着Cookie会一直设置,直到用户退出浏览器。您可以通过以下方式执行此操作:
/* Set to 0 if you want the session
cookie to be set until the user closes
the browser. Use time() + seconds
otherwise. */
session_set_cookie_params(0);
session_start();
然后检查上次活动时间,每次有人访问页面时都会更新。
if(($_SESSION['lastActivity'] + 300) < time()) {
// timeout, destroy the session.
session_destroy();
unset($_SESSION);
die('Timeout!');
} else {
$_SESSION['lastActivity'] = time();
}
答案 1 :(得分:2)
为什么不设置$_SESSION['logged_time'] = time();
,然后在应用程序中检查时间()的时间,而不是将其设置为1?
如果您希望实际到期整个会话,具体细节可能会根据您的会话处理程序而改变,但对于默认会话处理程序(以及任何其他表现良好的会话处理程序),您需要查看{{ 3}}
答案 2 :(得分:1)
您可以更改配置设置session.cookie_lifetime,例如在php.ini或.htaccess文件中:
session.cookie_lifetime指定 cookie的生命周期 这是发送到浏览器。该 值0表示“直到浏览器为止 关闭。“默认为0。
这意味着(我认为)在浏览器关闭时,您不能同时基于超时和到期。所以也许最好的办法就是保持默认值,并像其他人建议的那样在$_SESSION
设置你自己的计时器,从而使这个答案毫无意义。
答案 3 :(得分:0)
只要用户停留在您的网站上,会话就会保持活跃状态。您必须使用cookie来设置特定的超时。