2024-02-28 09:00:02

移除一块饼干

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

unset($_COOKIE['hello']);

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


当前回答

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

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

其他回答

很简单!

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

我在php中使用这个,它工作得很好。

function cookie_unset()
{
    setcookie("cookie_name", "", time() - 3600, '/');
    unset ($_COOKIE['cookie_name']);
    //done
}

我在代码中遇到了同样的问题,并发现这是一个cookie路径问题。查看这个堆栈溢出的帖子:不能删除php集cookie

我使用路径值“/”设置了cookie,但当我试图清除它时,它没有任何路径值,所以它没有清除。这里有一个有效的例子:

设置cookie:

$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);

清除cookie:

setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);

希望这能有所帮助。

我发现在Chrome浏览器中,除非你在cookie中定义最后三个参数,否则不可能取消设置cookie。域名,它是安全的,只有http…

if (isset($_COOKIE['user_id'])) {
unset($_COOKIE['user_id']); 
setcookie("user_id", "", time() - 3600, "/", 'yourdomain.com',true,true);
header('Location: /');
} else {
/* other code here */
}

我就是这样让它为我工作的。 阅读文档:官方PHP站点中关于cookie的所有内容

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

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

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