删除php中的cookie


delete cookie in php

我正在尝试删除一个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,然后销毁会话。