当您注销时,首先,您正在排队 cookie的破坏(它将在发送响应后发生),然后在呈现您的页面之后立即排队.浏览器在渲染之前没有机会删除cookie,并且您的$_SESSION
变量仍然存在.
PHP文档说session_destroy
:
session_destroy()销毁与当前会话关联的所有数据.它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie.
一个解决方案是,而不是破坏会话和cookie,只需取消设置将导致身份验证的变量:
unset($_SESSION['user']); unset($_SESSION['lastActive']); unset($_SESSION['fingerprint']);
请注意:我建议将代码拆分为函数.这将使它更有条理和可读(如果你做对了就可以重复使用).
当您注销时,首先,您正在排队 cookie的破坏(它将在发送响应后发生),然后在呈现您的页面之后立即排队.浏览器在渲染之前没有机会删除cookie,并且您的$_SESSION
变量仍然存在.
PHP文档说session_destroy
:
session_destroy()销毁与当前会话关联的所有数据.它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie.
一个解决方案是,而不是破坏会话和cookie,只需取消设置将导致身份验证的变量:
unset($_SESSION['user']); unset($_SESSION['lastActive']); unset($_SESSION['fingerprint']);
请注意:我建议将代码拆分为函数.这将使它更有条理和可读(如果你做对了就可以重复使用).