无法删除php set cookie

时间:2011-05-31 11:51:33

标签: php cookies

我通过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, '/');
}

3 个答案:

答案 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”]。
其他参数是主要参数。