【问题标题】:Browser remembering cookies even if not supposed to浏览器即使不应该记住cookies
【发布时间】:2013-05-29 14:26:29
【问题描述】:

我已经建立了我的登录和注销系统,但它似乎无法在某些浏览器(如 chrome 和 firefox)中正常工作。问题是浏览器会记住 cookie,即使它们在会话结束时会过期。 有人对此有解决方案吗?

我只想指出,创建另一个cookie来监控它是否应该记住不是一个有效的解决方案,必须有更专业的方法。

提前谢谢你!

编辑:我很抱歉我感到困惑。我根本没有取消设置cookie,浏览器应该在它关闭时销毁它,但它没有。这就是问题

【问题讨论】:

标签: php cookies browser


【解决方案1】:

将过期日期设置为过去

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

参见 php 手册中的 this example

编辑:

要在浏览器或标签页关闭时删除 cookie,您可以使用 javascript onunload。

<script>
    window.onunload=function()
    {
        document.cookie = 'cookie =; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    }
</script>

它会在页面卸载时将 cookie 的过期日期设置为过去。

【讨论】:

  • @php_nub_qq, 0 不完全是时间值
  • 这在所有浏览器中都不起作用,在那些它将在标签关闭时删除 cookie 的浏览器中,这不是我需要的。怎么会有这么大的问题,我快哭了!
  • @php_nub_qq 也许你必须使用session cookies
  • 这是我最后的选择,我希望我能找到其他更简单的解决方法,但我猜这就是我必须要做的。感谢你的付出! +代表
【解决方案2】:

要删除 cookie,您需要设置一个负数。

setcookie('cookie', '', time() - 3600);

【讨论】:

    【解决方案3】:

    就像PHP Doc 说的:

    如果设置为 0 或省略,cookie 将在结束时过期 会话(当浏览器关闭时)

    这是 PHP 的想法,但有些浏览器不这样做。只需设置一个负时间,例如

    setcookie("cookie", "", time() - 10);
    

    它有效。

    【讨论】:

    • 这是我想要做的,但它不会过期。我编辑了我的问题,我很抱歉
    • 您正在关闭浏览器?不只是一个标签?认为这可能是一个潜在的错误,虽然我没有测试这个场景
    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 2015-03-12
    • 2022-12-23
    • 1970-01-01
    • 2014-01-11
    • 2017-02-14
    • 2012-05-30
    相关资源
    最近更新 更多