我已经建立了我的登录和注销系统,但它似乎在某些浏览器(如 chrome 和 firefox)中无法正常工作。问题是浏览器会记住 cookie,即使它们在会话结束时会过期。有没有人有解决方案?
我只想指出,创建另一个 cookie 来监控它是否应该记住不是一个有效的解决方案,必须有更专业的方法。
先感谢您!
编辑:我很抱歉我感到困惑。我根本没有取消设置cookie,浏览器应该在关闭时销毁它,但它没有。那就是问题所在
将到期日期设置为过去
// set the expiration date to one hour ago
setcookie ("cookie", "", time() - 3600);
请参阅php 手册中的此示例。
编辑:
要在浏览器或选项卡关闭时删除 cookie,您可以使用 javascript onunload。
<script>
window.onunload=function()
{
document.cookie = 'cookie =; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
</script>
它将在页面卸载时将 cookie 过期日期设置为过去。
要删除 cookie,您需要设置一个负数时间。
setcookie('cookie', '', time() - 3600);
就像PHP Doc说的:
如果设置为 0 或省略,cookie 将在会话结束时过期(当浏览器关闭时)
这是 PHP 的想法,但有些浏览器不这样做。只需设置一个负时间
setcookie("cookie", "", time() - 10);
它有效。