我正在研究 php 项目。我只想这样做,当我关闭浏览器时,取消设置或销毁会话。
这里我也试过
ini_set('session.cookie_lifetime', 0) 和 session_set_cookie_params(0) 在 session_start() 之前;
它在 Windows 操作系统中运行良好,但在 MAC 操作系统中运行良好。
提前致谢。
我正在研究 php 项目。我只想这样做,当我关闭浏览器时,取消设置或销毁会话。
这里我也试过
ini_set('session.cookie_lifetime', 0) 和 session_set_cookie_params(0) 在 session_start() 之前;
它在 Windows 操作系统中运行良好,但在 MAC 操作系统中运行良好。
提前致谢。
一个会话有两个部分。
当浏览器关闭时,没有可靠的方法来删除服务器上的数据。每个健全的会话系统只是定期清理旧数据(如果 N 分钟内没有关联浏览器的迹象)。
浏览器上的cookie通常是没有过期时间发送的,这意味着浏览器退出时它就会过期。这工作可靠。
如果您在 Windows 客户端上做任何您想做的事,那么我会假设您正在谈论使 cookie 过期。
这将在 Mac 和 Windows 上发生。我最好的猜测是你的测试有问题。在 Windows 上,应用程序通常在最后一个窗口关闭时退出。在 Mac 上,应用程序通常要求您明确退出它们,但如果您只是关闭最后一个窗口,则保持打开状态。
为确保 cookie 过期,您必须明确退出浏览器(通过从菜单中选择退出或右键单击并在 Dock 中的图标上选择退出)。
服务器无法检测到最后一个窗口何时关闭并远程终止会话。
它在 Windows 中运行良好
这或多或少意味着它有效。
但不适用于 MAC 操作系统
这大概是个误会。您需要关闭所有浏览器窗口,浏览器才能销毁会话 cookie。很可能您只关闭了多个窗口中的一个,并且至少有一个浏览器实例仍然存在(您可以top
在终端窗口中检查这种情况)。