如果用户关闭浏览器窗口或导航离开php中的页面,我该如何销毁会话?

时间:2010-03-21 02:23:23

标签: php javascript session

我有一些保存的会话。如果用户关闭浏览器窗口或单个选项卡或导航离开页面,我想销毁所有会话。我有什么方法可以做到这一点吗?

5 个答案:

答案 0 :(得分:1)

现在所有现代标签式浏览器都非常复杂。因此,您只能依赖会话超时。不过没什么大不了的。你确定你真的需要这个吗?这会让用户感到痛苦。

答案 1 :(得分:0)

好吧,我正在为我的所有项目使用CodeIgniterCodeIgniter具有使用cookie存储数据的会话类。我可以在应用程序配置中设置cookie超时。将其设置为0将使cookie仅在页面打开时持续,并且当页面的所有选项卡在浏览器中关闭时,cookie将自动删除。

如果您不想使用其他框架,则可以使用cookie来保存会话数据,该会话数据将持续到用户关闭浏览器选项卡。使用setcookie编写Cookie数据,并从$_COOKIE变量中读取。

答案 2 :(得分:0)

第一个设置$config['sess_expiration'] to 0

然而,由于system/libraries/Session.php文件中的代码

,这会产生实际持续2年的cookie的效果

接下来我们设置$config['sess_expiration'] to -1

这对我来说完全无效。当我登录时保存了会话变量,然后当我转到下一页时它就消失了。

答案 3 :(得分:-1)

与Donny的答案类似,但是您可以告诉内置的Session类将PHPSESSID cookie更改为在浏览器关闭时到期,而不是使用Codeigniter:

session_set_cookie_params(0);

必须在您使用它的每个页面上session_start()之后调用它(否则它会从ini参数session.cookie_lifetime重置为默认值。)

答案 4 :(得分:-1)

浏览器关闭时你无法破坏会话!会话需要销毁服务器端指令。您可以将会话设置为在一段时间不活动后销毁。

研究http://www.php.net/manual/en