会话过期时的PHP +注销成员

时间:2012-03-10 23:30:12

标签: php session

我有一个人们登录并创建了一个SESSION的网站。

我注意到,如果您离开网站的时间足够长(不确定确切的时间范围)会话结束,但会员仍在网站中。他们仍然可以点击并导航,我相信这会在数据库中产生一些无意义的数据,因为不存在像userID这样的SESSION变量。

当SESSION结束时,我一直在寻找关于记录用户的建议。 我看过这样的代码 - 有什么更好的想法吗?

 <?php if(!isset($_SESSION[]) {header(loginpage.php);}?>

有没有更好的方法来编写上面的代码?

此代码应放在何处?只是在导航菜单上或用户可以点击的任何地方?

最后是否有一种方法可以理解SESSION何时自然到期 - 是否有一个SESSION变量我可以打印到屏幕上以查看timeleft等?

感谢

2 个答案:

答案 0 :(得分:2)

你需要验证会话,你已经用你的代码走向了这个方向,但这还不够:

<?php if(!isset($_SESSION[]) {header(loginpage.php);}?>

这还不够,因为$_SESSION[]在会话启动后自动存在(PHP中的会话机制,请参阅session_start)。

相反,如果您已在会话中保存userID,请检查一个:

isset($_SESSION['userID'])

如果会话真的过期,则不应设置。

答案 1 :(得分:0)

我同意上述答案。我会说这取决于你的应用程序如何构建以说明它属于何处。在屏幕上有任何输出之前,我假设您正在调用session_start,然后立即检查会话变量,例如在用户登录后设置的userID。如果未设置重定向,则将位置标题设置为登录页面。您还可以编写一些js,以指定的间隔检查会话cookie中的值(我相信,它已经过了一段时间以便测试它),然后当变量不存在时,您可以重定向到登录页面。第三种方法是让js代码对php脚本进行XHR调用,以便为你检查会话。