我通过php中的这个调用设置了一个cookie
setcookie('alert_msg', 'you have the add badge');
我试过这样取消它
setcookie('alert_msg', '');
setcookie('alert_msg', false);
setcookie('alert_msg', false, 1);
setcookie('alert_msg', false, time()-3600);
setcookie('alert_msg', '', 1, '/');
并且仍然不会取消设置$ _COOKIE ['alert_msg']中的Cookie值。
我在Firefox和Chrome中都尝试过
代码示例:
if (isset($_COOKIE['alert_msg'])) {
$this->set('alert_msg', $_COOKIE['alert_msg']);
unset($_COOKIE['alert_msg']);
setcookie('alert_msg', '', 1, '/');
}
答案 0 :(得分:21)
检查cookie路径。
由于您没有将path
参数传递给setcookie
函数,因此在这种情况下,cookie将仅为当前目录设置并且可以使用,并且只能从该目录中取消设置。
可能的解决方案是将path
值作为/
传递。因此,cookie可以在应用程序的任何部分使用和取消设置。
答案 1 :(得分:0)
如果其他人对此有问题:在我的特定情况下,我无法删除 cookie,因为它是在网站的 https 版本中设置的,而我正在访问 http 版本。 始终重定向到 https!
答案 2 :(得分:-1)
2020年-当我无法可靠地删除Cookie时,Google带我来到了这里。
有时,根据您的应用程序设计,您必须设置一些cookie详细信息(例如,路径不是/)。仅当您可以清楚地识别出该Cookie(您在其中设置的所有内容)以进行删除时,才可以使用RELIABLY删除Cookie。
使用以下代码进行可靠删除;
$params = session_get_cookie_params(); // extract cookie details
unset( $_COOKIE[session_name()] ); // unset the cookie
setcookie(session_name(), " " , 1 ,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"] ); // and also expire the cookie
注1:将时间设置为距UNIX纪元时间晚1秒。无需担心用户的机器已正确设置时间。
注2:setcookie最多接受7个参数,因此我们省略了$ params [“ lifetime”]。
其他参数是主要参数。