有没有办法指示网页浏览器使用PHP完全删除一个人的cookie集?
我不想到期它或等待浏览器关闭。
使用删除我的意思是实际上不再将它列在cookie的列表中。
答案 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)
我认为你必须使用组合方法:
使用混合方法有两个很好的理由:
答案 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);