删除cookie不起作用

时间:2013-03-05 12:16:45

标签: php session cookies setcookie

你好,因为我试图去抓一个问题而疯了。

我无法删除将在index.php上设置的cookie:

$a = 'text';
setcookie('name_of_cookie', $a, time()+60*60*24*365);

在page-php上我可以调用该cookie,内容就像$ a。我试图在page.php上删除那种不同的方式:

setcookie('name_of_cookie', FALSE, time()-3600);

我还找到了一个版本,我只将它设置为:

setcookie('name_of_cookie');

正如我在浏览器的设置中看到的那样设置另一个具有相同名称的cookie。新cookie没有内容 - 当然,没有声明内容。

由于服务器的位置,我也试图在过去设置更高的时间,但这也不起作用。即使尝试将时间设置为1也不起作用。

我几次检查了这个名字的拼写,没有来自不同名字的失败。

如果有人能说出我做错了什么,我会很高兴的吗?

感谢。

3 个答案:

答案 0 :(得分:6)

设置Cookie时非常具体,如何设置始终设置域名(可以从$ _SERVER ['SERVER_NAME'])和路径(我通常设置为“/”)中获取。如果你不一致,某些东西可以采取“聪明”的主动性并打破你的逻辑。当你在JS中设置cookie并尝试从PHP中删除它们时(或者反过来),它经常发生。您可能有多个具有相同名称但不同子域或路径的cookie。

例如,您可以像这样设置Cookie:

setcookie( 'Foo', 'Bar', time() + 3600, '/', $_SERVER['SERVER_NAME'] );

你这样解开他们:

setcookie( 'Foo', '', time() - 999999, '/', $_SERVER['SERVER_NAME'] );

缺少最后两个参数将使您处于目前的状态。

答案 1 :(得分:1)

删除每个Cookie,如下所示。

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 :(得分:0)

在设置cookie时始终设置路径,否则它不会破坏