2012-03-19 54 views
2

当用户成功登录网站时,该事件会创建一个名为'loggedin'的会话并将其设置为true。用户登录会话状态为only = true,直到他们离开网站

if (criteria satisfied){ 
    $_SESSION['loggedin'] = true;} 
else { ... } 

该会话如何在用户退出网站时过期?

退出网站意味着直接离开网站。无论是关闭标签页,浏览器还是访问其他网站,都意味着用户离开网站的任何情况。

我在问这个问题之前检查了其他问题,但没有人似乎直接回答,似乎都处理与每个提问者相关的唯一实例。

+4

“退出网站”对您意味着什么? – jprofitt 2012-03-19 12:32:39

+1

有很多关于这方面的问题。请检阅他们:http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes – sikander 2012-03-19 12:34:53

+0

@ryan你的意思是跟踪关闭标签/窗口? – hjpotter92 2012-03-19 12:35:44

回答

3

尝试把:

session.cookie_lifetime = 0; 
在php.ini

。如果用户正在退出您的网站(通过关闭浏览器,例如关闭计算机),这将删除会话cookie。请参阅session.cookie_lifetime

+1

+1,注意:不适用于关闭标签页或访问其他网站。附加说明:无法用于关闭标签和访问其他网站,因为用户可以让您的站点的多个选项卡打开,并且服务器永远不会知道用户拥有多少标签。 (所以当最后一个标签关闭时它不能删除会话) – Kaii 2012-03-19 12:50:05

0

客户端的会话只是一个会话ID号的cookie。

您可以将Cookie的过期设置为非常小,但如果有人在页面上空闲,那么会话可能会过期。您可以在所有页面(主页/主模板)上放置一个隐藏的IFRAME,并使用META刷新来刷新会话cookie到期。

您也可以尝试使用onUnload JavaScript事件对您的LogOut页面进行Ajax调用,该页面可能会放弃会话并清除cookie。

相关问题