如何在mac os中关闭浏览器时销毁会话?

时间:2012-05-09 10:34:49

标签: php session session-cookies

我正在开发php项目。所有我想这样做,当我关闭浏览器以便取消设置或破坏会话时。

我在这里也试过

在session_start()之前

ini_set('session.cookie_lifetime',0)和session_set_cookie_params(0);

它在Windows操作系统中运行良好,但在MAC OS中没有。

先谢谢。

2 个答案:

答案 0 :(得分:4)

会话分为两部分。

  1. 存储在服务器上的数据
  2. 客户端上具有会话ID的cookie
  3. 关闭浏览器时,没有可靠的方法可以删除服务器上的数据。每个理智的会话系统只是定期清理旧数据(如果N分钟没有相关浏览器的迹象)。

    浏览器上的cookie通常在没有到期时间的情况下发送,这意味着它将在浏览器退出时到期。这很可靠。

    如果您拥有的是在Windows客户端上执行的操作,那么我会假设您正在讨论将cookie过期。

    这将在Mac和Windows上发生。我最好的猜测是您的测试存在问题。在Windows上,应用程序通常在最后一个窗口关闭时退出。在Mac上,应用程序通常要求您明确退出它们,但如果只关闭最后一个窗口则保持打开状态。

    要确保Cookie过期,您必须明确退出浏览器(从菜单中选择退出或右键单击并在Dock中的图标上选择退出)。

    服务器无法检测最后一个窗口何时关闭并远程终止会话。

答案 1 :(得分:1)

  

它在Windows中运行良好

这或多或少意味着它有效。

  

但不适用于MAC os

这可能是一种误解。您需要关闭所有浏览器窗口以使浏览器销毁会话cookie。很可能你只关闭了多个窗口中的一个,并且至少有一个浏览器实例仍然存在(你可以在终端窗口中用top检查那种事情。)