我在处理 PHP 中使用 cookie 销毁会话的文档方法时遇到了问题。
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
这导致我看到了两次设置cookie的情况:
Set-Cookie: SESSION_NAME=deleted
Set-Cookie: SESSION_NAME=1_4f09a3871d483
正如PHP注释中所记录的,将cookie值设置为除了空字符串('')之外的其他值可以去掉"deleted"值,但第二个设置的cookie仍然存在。
要完全摆脱它,我必须添加上面建议的代码:
ini_set('session.use_cookies', '0');
我还没有查看会话处理的源代码,但我猜测setcookie(...)正在绕过会话模块,因此会话不知道我是否调用了它。因此,在我设置删除的cookie之后,它正在设置默认cookie。
我在Mac上进行测试:PHP 5.3.6 with Suhosin-Patch(cli)(built:Sep 8 2011 19:34:00)