我正在尝试删除一个cookie。
我正在使用setcookie("PHPSESSID", "", time() - 6400);
,它可以很好地删除cookie。
然而,它并没有被完全删除。当查看firebug时,在"响应标头"下,cookie正在被删除。但是,在"请求标头"下,cookie不会被删除(这会影响代码行为)。
我如何删除(或修改或访问)其他cookie?
谢谢!
我的注销代码遇到了这样的问题,经过努力和研究,我自己终于解决了,并使用javascript解决了这个问题。
您可以使用下面的脚本在客户端轻松地做到这一点,您可能需要更改路径和主机的值:
document.cookie = "PHPSESSID=; expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;host=localhost";
使用setcookie("PHPSESSID", "", time() - 6400);
使cookie像2小时前一样过期,尝试使用setcookie("PHPSESSID", "", 1);
使其在1970年1月1日的epoch过期。
如果这不起作用,你可以尝试添加这样的路径setcookie("PHPSESSID","",time()-6400,"/");
您可以从中尝试此示例http://www.php.net/manual/en/function.setcookie.php#73484删除所有的cookie,但我是因为这似乎是某种超级cookie谁知道。。
// unset cookies
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
您可能也想通过添加来取消设置$_COOKIE变量
unset($_COOKIE['PHPSESSID']);
在下一行。然而,这只会影响当前加载的页面。
这个代码可以解决这个问题:
session_start(); // initialize session
session_destroy(); // destroy session
setcookie("PHPSESSID","",time()-3600,"/"); // delete session cookie
请参阅此处的示例1来删除和销毁会话:
http://php.net/manual/en/function.session-destroy.php
首先取消设置cookie,然后销毁会话。