在stackoverflow上有很多有关破坏会话的页面.相信我,我一直都在阅读它们,我发现:Why does my session remain?
我的问题很简单,是否真的需要我完成以下所有操作才能正确销毁会话?
$tmp = session_id();
session_destroy();
session_id($tmp);
unset($tmp);
这是唯一表明此类极端措施的页面.大多数页面只建议session_destroy();.
为了澄清起见,因为似乎有些混乱,我正在寻找最有效的方法.
提前致谢.
解决方法:
新的答案已经停止出现,因此我将根据所有答案来学习.这是各种答案的汇总.希望它会帮助其他人.下面列出了销毁会话的最有效方法:100%有效:
if (ini_get("session.use_cookies"))
{
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
$_SESSION = array();
$tmp = session_id();
session_id($tmp);
unset($tmp);
session_unset();
session_destroy();
session_write_close();
session_regenerate_id(True); // true indicates the need to delete the old session
感谢大家的帮助,向我展示了如何执行此操作.这不是一个人的努力.我要特别感谢@Kerrek SB,@Uday @Dhruvisha.如果您有更多建议,请随时添加评论,我将编辑答案.
标签:destroy,php,security,session
来源: https://codeday.me/bug/20191013/1906189.html