2

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

我现在有 1 个解决方案,空闲时间退出。但是,我对 php 中的日期/时间方面的知识非常有限,所以这将是最后的选择。我想知道,除了使用time-idle,我还能做些什么吗?

4

5 回答 5

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

于 2009-08-03T08:42:47.193 回答
2

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

您还可以添加一个 Javascript“onunload”函数来检测他们是否已关闭网页或转到另一个页面:您可以在此添加一个挂钩以调用“destroycookie”函数 - 但是,您必须检查他们是否有'不要只是转到您网站上的另一个页面,实际上并没有在两个选项卡中打开您网站上的两个页面。

于 2009-08-03T08:42:48.753 回答
0

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

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

于 2009-08-03T08:42:50.890 回答
0

也许你可以使用 session_write_close()?

于 2009-08-03T08:45:08.110 回答
0

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

于 2009-08-03T09:40:02.190 回答