从浏览器中删除cookie?

时间:2009-08-12 16:43:16

标签: php http browser cookies

有没有办法指示网页浏览器使用PHP完全删除一个人的cookie集?

我不想到期它或等待浏览器关闭

使用删除我的意思是实际上不再将它列在cookie的列表中。

6 个答案:

答案 0 :(得分:19)

尝试使用以下内容删除所有Cookie:

foreach ($_COOKIE as $name => $value) {
    setcookie($name, '', 1);
}

1 expire 值,它代表Unix时间段开始后的一秒。所以它总是已经过期了。

答案 1 :(得分:9)

您不能强制浏览器删除与任何cookie相关联的文件,因为您不能保证实际存在这样的文件 - 浏览器和Web服务器之间关于cookie的合同是数据将在符合条件的请求中显示。 / p>

您声明“您不想等待Cookie过期”,但Cookie过期是指示不再需要数据的正确方法,并且不应在将来的请求中显示,在大多数情况下会转换为浏览器删除文件。

因此,要删除cookie,请将其到期时间设置为过去。在PHP中,这是通过setcookie()完成的。

答案 2 :(得分:5)

是。使用setcookie()并将您要删除的Cookie的截止日期设置为过去的时间。用户的浏览器应该自动删除它。

答案 3 :(得分:3)

'似乎删除cookie比看起来更困难。

setcookie($name, '', 1);

不会做的伎俩。 ''为空,setcookie可以忽略整个指令。

同时将时间设置为过去有时允许cookie保留过期时间早于1的值。

我正在处理这个问题。我不知道它来自哪里,但它就在那里。

我已经诉诸

setcookie($name, '0', 9000000000);

这可确保将cookie设置为一个解析为false的值,并且它比以前的任何值都新。

如果有人对此行为有任何见解,请告诉。

我怀疑困难在于,当未指定值时,setcookie的域和路径值在执行到执行时保证相同。

而且我知道这样的cookie不会在2038年左右到期。

或者,如果已知cookie的最新截止日期,则需要在1秒后设置。

答案 4 :(得分:1)

我认为你必须使用组合方法:

  • 设置过去的过期方式(由Chacha102建议)
  • 使用JavaScript从document.cookie DOM对象中删除条目(由andres descalzo建议)

使用混合方法有两个很好的理由:

  • 可以在浏览器中禁用JavaScript
  • 并非所有Cookie都在document.cookie中可见。一些现代浏览器支持cookie的httponly标志。 PHP支持httponly cookie,请参阅http://www.php.net/setcookie

答案 5 :(得分:-2)

我为我编写了这个插件并且工作正常。

(function($) {
    $.cookieAllDelete = function(doc)
    {
        var cookie_date = new Date();
        var cookies = null;

        cookies = doc.cookie.split(';');
        cookie_date.setTime(cookie_date.getTime() - 1);

        for(var i=0; i < cookies.length; i++) 
        {
            var cookie_name = cookies[i].split('=')[0];
            try {
                if (cookie_name.length > 0)
                    doc.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
            } catch(ex) {}
        }
    }
})(jQuery);

jQuery.cookieAllDelete(document);