2024-02-28 09:00:02

移除一块饼干

当我想要删除Cookie时,我会尝试

unset($_COOKIE['hello']);

我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?


当前回答

你可以试试这个

if (isset($_COOKIE['remember_user'])) {
    unset($_COOKIE['remember_user']); 
    setcookie('remember_user', null, -1, '/'); 
    return true;
} else {
    return false;
}

其他回答

只要将cookie的值设置为false就可以取消设置:

setcookie('cookiename', false);

将值设置为"",过期日期设置为昨天(或过去的任何日期)

setcookie("hello", "", time()-3600);

然后,cookie将在下次页面加载时过期。

要删除cookie,你只需要将值设置为NULL:

“如果您为cookie设置了过期时间、路径或域的非默认值,则在删除cookie时必须再次提供这些相同的值,以便正确删除cookie。” 引自《学习PHP5》一书。

所以这段代码应该工作(为我工作):

设置cookie: Setcookie ('foo', 'bar', time() + 60 * 5);

删除cookie: setcookie(“foo”,时间()+ 60 * 5);

但是我注意到每个人都将过期日期设置为过期,这有必要吗?为什么?

如果你想从你当前的所有域中完全删除cookie,那么下面的代码一定会帮助你。

unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");

这段代码将删除cookie变量完全从所有的域,即;" / " -它表示cookie变量的值为所有域设置,而不仅仅是当前域或路径。Time() - 300表示它设置为以前的时间,因此它将过期。

这就是它被完美删除的方式。

要可靠地删除cookie,仅将其设置为PHP服务器计算的过去任何时间过期是不够的。这是因为客户端计算机的时间可能而且经常与服务器的时间不同。

最好的做法是用一个空白的cookie覆盖当前的cookie,该cookie在epoch(1970年1月1日00:00:00 UTC)之后一秒过期,如下所示:

setcookie('hello', '', 1);