如何在php中注销用户?

时间:2009-08-03 08:35:12

标签: php session logout

目前,在我的php脚本中,用户登录后,我存储了session_login = 1.但是我遇到了问题。我习惯使用firefox,multi-tab(我相信大多数人和今天所有的web浏览器应用程序都有多标签功能)。我关闭了具有会话的选项卡,但我没有关闭浏览器。几个小时后,我回到需要登录的同一页面,但事实并非如此。它不需要我再次登录(我认为这称为“会话”)。无论如何,如果他关闭标签而不是关闭浏览器,则注销用户?

我现在有1个解决方案,时间空闲。但是,我对php中日期/时间的知识非常有限,所以这将是最后一个选项。我想知道,除了使用闲置时,还有什么我可以做的吗?

5 个答案:

答案 0 :(得分:2)

PHP有一种简单的方法可以设置会话在超时之前的持续时间:

session_set_cookie_params(3600); // make it expire after 1 hour

只需传递您希望会话持续的秒数(例如,1小时= 60分钟= 3600秒)。

http://us2.php.net/manual/en/function.session-set-cookie-params.php

答案 1 :(得分:2)

会话cookie仅在浏览器会话关闭时(即浏览器关闭时)从浏览器中清除:因此名称。如果您希望在关闭选项卡后立即清除会话,您可以在cookie上设置非常短的到期时间(大约5分钟)并将其存储在数据库中。然后在网页上有一个javascript函数,每分钟从你的服务器调用一个文件:这个文件然后“刷新”接下来五分钟的cookie /数据库条目。如果他们离开您的网站超过五分钟,则会话无效。

您还可以添加Javascript“onunload”功能,该功能可以检测他们是否已关闭网页或转到其他页面:您可以在此处添加一个钩子来调用“destroycookie”功能 - 但是,您必须检查他们还没有进入您网站上的另一个页面,并且实际上没有从您的网站打开两个页面中的两个页面。

答案 2 :(得分:0)

我相信您要查找的选项是会话Cookie到期的设置。我不记得它的PHP命令,但你应该能够设置cookie在窗口关闭时到期。

以下是PHP会话文档:http://us2.php.net/manual/en/book.session.php

答案 3 :(得分:0)

也许你可以使用session_write_close()?

答案 4 :(得分:0)

对session_destroy函数的PHP文档有一些评论可能对您有用:http://us2.php.net/manual/en/function.session-destroy.php#71889