题
目前,在我的PHP脚本,一个用户登录后,我存储session_login = 1。但是我有一个问题。我在使用Firefox的习惯,多标签(相信大多数人以及所有今天的网页浏览器应用程序具有多标签功能)。我关闭具有会话的标签,但我没有关闭浏览器。几个小时后,我回来要求我登录在同一页上,但事实并非如此。它不要求我再次登录(我认为这就是所谓的“会议”)。反正是有注销用户,如果他关闭的标签,而不是关闭浏览器??
我有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函数:这个文件然后选择“刷新”,为接下来的五分钟饼干/数据库条目。如果他们再离开你的网站超过五分钟,然后会话是无效的。
您还可以添加一个Javascript“onunload的”功能检测,如果他们已经关闭了网页或去另一个页面:您可以在此增加一个钩子称之为“destroycookie”功能 - 但是,你必须检查他们已经不只是去网站上的另一页,并实际上并没有从您的网站在两个选项卡打开两个页面。
我相信你正在寻找的选项是会话cookie有效期的设置。我不记得PHP命令,但你应该能够设置cookie窗口关闭时到期。
下面是PHP会话文档: HTTP://us2.php。 nET /手动/ EN / book.session.php
也许你可以使用session_write_close()?
还有一个供session_destroy函数的PHP文件,可能对你有用的注释:的 http://us2.php.net/manual/en/function.session-destroy.php#71889