PHP:关闭浏览器后继续获取旧的Session ID


PHP: Keep getting old Session ID after closing browser

我已经设置了一个使用会话的PHP5脚本。启动会话很顺利,并且它还创建了一个cookie(如预期的那样)。

但是在关闭浏览器(Mac OSX Mountain Lion上的Firefox 19.0.2)并打开浏览器后,会话ID保持不变。即使是在几天之后。然而,这是在会议期间。Cookie_lifetime设置为0

在PHP中,我用这个来启动会话:

//set cookie params: lifetime, path, domain, https, http-only
session_set_cookie_params(0, "/", null, false, true);
session_name('MySession');
//start session
session_start();

这是我的PHP.ini

session.use_cookies = 1
session.use_only_cookies = 1
session.cookie_httponly = 1
session.cookie_lifetime = 0
session.cookie_path = /
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.hash_function = 1
session.hash_bits_per_character = 6
session.save_path = /var/lib/php5
session.name = PHPSESSID

会话文件不会在/var/lib/php5中被删除在session_destroy()之后,文件将被删除。

然而,在再次使用脚本(启动会话)后,我将获得旧的会话ID。上周五我从我的电脑注销,现在我回来了,我仍然得到这个旧的会话ID。我真的想有一个新的会话ID后关闭浏览器(命令Q)

我刚刚读到firefox的一个烦人的"功能",它会为你存储cookie,就好像你从未关闭过浏览器一样。

Firefox会话cookie

我想这可能就是原因。因为我不想这样,我需要找到一个解决办法。

关于这件事你能给我一些建议吗?

您必须在函数中设置cookie的生存时间,否则它将保留在那里。你必须提供一些过期时间。下面是一些贡献的例子http://php.net/manual/en/function.session-set-cookie-params.php