出于某种原因,当我第一次使用CMS登录然后注销然后再次登录时,它不会创建新的session_id。它希望在我退出之前使用相同的session_id。有关为什么会这样的想法吗?
这是我的退出页面:
<?php
// Access the existing session
session_start();
// Delete the session variable
unset($_SESSION);
// Destroy the session data:
session_destroy();
// Redirects to the login page
header ('Location: login.php');
?>
答案 0 :(得分:2)
如果您首先加载页面,则您没有任何包含sessionid的cookie,因此服务器会创建一个新的并将其发送给您。如果您注销cookie仍然存在,那么当您重新登录服务器时,从cookie获取sessionid并且不会创建新的。所以你保留你的sessionid。这不是很安全。 CMS或您应该做的是在检查用户名和密码后立即调用session_regenerate_id()。这样您也可以阻止session fixation
答案 1 :(得分:1)
您可能正在取消设置一些会话变量(那些会让您知道用户是否已登录,以及他们的用户ID是什么),但您忘记在注销过程中调用session_destroy()
。< / p>
更新:您似乎正在正确销毁会话状态,但您没有重置会话Cookie。上面的链接页面解释了您需要做什么并提供示例代码。