繁体   English   中英

如何在php中注销用户?

[英]How to log out an user in php?

当前,在我的php脚本中,在用户登录后,我存储了session_login =1。但是我遇到了问题。 我有使用Firefox,多选项卡的习惯(我相信大多数人和当今所有的Web浏览器应用程序都具有多选项卡功能)。 我关闭了具有该会话的选项卡,但没有关闭浏览器。 几个小时后,我回到要求我登录的页面上,但是不需要。 它不需要我再次登录(我认为这称为“会话”)。 无论如何,如果用户关闭标签页而是关闭浏览器,是否可以注销用户?

我现在有1个解决方案,时间空转。 但是,我对php中的日期/时间方面的知识非常有限,所以这将是最后的选择。 我想知道,除了使用时间空闲以外,我还能做其他事情吗?

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

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

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

我相信您正在寻找的选项是会话cookie到期的设置。 我不记得它的PHP命令,但是您应该可以将cookie设置为在窗口关闭时过期。

这是PHP会话文档: http : //us2.php.net/manual/zh/book.session.php

也许您可以使用session_write_close()?

在session_destroy函数的PHP文档中有一条注释可能对您有用: http : //us2.php.net/manual/en/function.session-destroy.php#71889

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM