2024-02-28 09:00:02

移除一块饼干

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

unset($_COOKIE['hello']);

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


当前回答

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

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

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

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

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

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

其他回答

这将在代码中取消设置cookie,但由于$_COOKIE变量在每个请求中都被刷新,因此它只会在下一次页面请求中返回。

要真正摆脱cookie,请将过期日期设置为过去:

// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);

很简单!

setcookie("cookiename", "cookievalue", 1);

你可以简单地使用这个自定义函数:

function unset_cookie($cookie_name) {
    if (isset($_COOKIE[$cookie_name])) {
        unset($_COOKIE[$cookie_name]);
        setcookie($cookie_name, null, -1);
    } else { return false; }
}

如果您想删除$_COOKIE['user_account']。 只使用:

unset_cookie('user_account');

一个干净的删除cookie的方法是清除$_COOKIE值和浏览器cookie文件:

if (isset($_COOKIE['key'])) {
    unset($_COOKIE['key']);
    setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}

如果您将cookie设置为过去过期时间,浏览器将删除它。参见setcookie() delete example at php.net