在php中删除cookie

时间:2012-02-22 19:32:03

标签: php cookies session-cookies

我正在尝试删除Cookie。

我正在使用setcookie("PHPSESSID", "", time() - 6400);删除Cookie。

但是并没有完全删除。在查看firebug时,在“Response Headers”下,cookie被删除。但是,在“请求标头”下,cookie不会被删除(这会影响代码行为)。

我是否也删除(或修改或访问)其他cookie?

谢谢!

5 个答案:

答案 0 :(得分:3)

我的退出代码出现了这样的问题,经过努力和研究,我自己终于想出来并用javascript来解决问题。

您可以使用下面的脚本轻松地在客户端执行此操作, 您可能需要更改路径和主机的值:

document.cookie = "PHPSESSID=; expires=Thu, 01 Jan 1970 00:00:00   UTC;path=/;host=localhost";

答案 1 :(得分:1)

使用setcookie("PHPSESSID", "", time() - 6400);就像2小时前一样过期了, 尝试使用setcookie("PHPSESSID", "", 1);在1970年1月1日的时期到期。

如果不起作用,您可以尝试添加此setcookie("PHPSESSID","",time()-6400,"/");

之类的路径

你可以从http://www.php.net/manual/en/function.setcookie.php#73484尝试这个例子来删除所有的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, '/');
    }
}

答案 2 :(得分:1)

您可能还想通过添加

取消设置$ _COOKIE变量
unset($_COOKIE['PHPSESSID']);

在下一行。然而,这只会影响当前加载的页面。

答案 3 :(得分:0)

此代码可以解决此问题:

session_start(); // initialize session
session_destroy(); // destroy session
setcookie("PHPSESSID","",time()-3600,"/"); // delete session cookie

答案 4 :(得分:-1)

请参阅此处的示例1以删除和销毁会话:

http://php.net/manual/en/function.session-destroy.php

首先取消设置cookie,然后销毁会话。