【问题标题】:Cookie doesn't expire when closing browser关闭浏览器时 Cookie 不会过期
【发布时间】:2012-04-04 09:33:31
【问题描述】:

我正在尝试设置一个 cookie:

setcookie($cookie_name, $val, 0);

或者

setcookie($cookie_name, $val);

但是当我关闭并重新打开浏览器(firefox、chrome)时,cookie 仍然具有相同的值。访问结束时如何强制删除?

谢谢

【问题讨论】:

  • 应该可以,如何检查cookie是否存在?
  • 如果您一次又一次地打开页面来检查 cookie,那么它就会一直存在。
  • 确保您关闭的是浏览器,而不是标签页!
  • 是的,我关闭了浏览器,并通过 Firefox 的 Web 开发者插件、chrome Web 开发者工具和我自己的代码对其进行了三次检查。感谢所有,解决方案是将其设置为过去
  • 实际上,将其设置为过去并不是解决方案,因为它不会在页面之间保留 cookie

标签: php cookies


【解决方案1】:

要删除 cookie,只需将过期日期设置为过去,如下所示:

// Set the cookie in the past to ensure it is removed
setcookie($cookie_name, $val, time()-3600);

但是,我认为这不是您的问题,因为您的代码似乎是正确的。

您如何测试 cookie?您可能在测试之前再次设置它!

您还需要确保关闭浏览器而不是选项卡。关闭选项卡,不会结束会话!

【讨论】:

    【解决方案2】:

    尝试将值设置为空

    setcookie($cookie_name, null);
    

    【讨论】:

    • 这确实删除了过去的cookie,它只是使值变为空!
    【解决方案3】:

    你应该试试

    setcookie($cookie_name, $val, time()-3600);
    

    【讨论】:

    • 哎呀,我将此标记为答案,但实际上这会在同一会话中删除页面转换之间的 cookie,所以这不是我需要的
    【解决方案4】:

    尝试使用此代码:

    setcookie ("TestCookie", "", time() - 3600);// set the time to minus to remove the cookie.
    

    【讨论】:

      【解决方案5】:

      我在使用 Chrome 时遇到过类似的问题。在 Web Developer Tools 中打开 cookie 面板有时会显示 Expires 设置为“Session”的 cookie。关闭浏览器(不仅仅是选项卡)并重新打开浏览器后,此 cookie 仍然存在。解决此问题的可靠方法是清除缓存。这似乎可以解决问题。底线是,如果 cookie 在浏览器工具中显示为“会话”,则说明您已正确设置。

      【讨论】:

        【解决方案6】:

        您可能需要取消设置 cookie,然后将其设置为 null,如下所示:

        unset($_COOKIE['cookie_name']);
        setcookie ( 'cookie_name', null,-1 );
        

        在第一行中,您将其取消设置,然后将其设置为 null 以防出现任何进一步的问题。

        【讨论】:

          猜你喜欢
          • 2011-04-21
          • 2015-08-12
          • 2015-07-30
          • 2016-07-07
          • 2021-12-22
          • 2012-08-20
          • 2014-08-14
          • 2011-02-01
          • 1970-01-01
          相关资源
          最近更新 更多