会话ID重复

时间:2011-09-06 20:12:08

标签: php session content-management-system

出于某种原因,当我第一次使用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');

?>

2 个答案:

答案 0 :(得分:2)

如果您首先加载页面,则您没有任何包含sessionid的cookie,因此服务器会创建一个新的并将其发送给您。如果您注销cookie仍然存在,那么当您重新登录服务器时,从cookie获取sessionid并且不会创建新的。所以你保留你的sessionid。这不是很安全。 CMS或您应该做的是在检查用户名和密码后立即调用session_regenerate_id()。这样您也可以阻止session fixation

答案 1 :(得分:1)

您可能正在取消设置一些会话变量(那些会让您知道用户是否已登录,以及他们的用户ID是什么),但您忘记在注销过程中调用session_destroy()。< / p>

更新:您似乎正在正确销毁会话状态,但您没有重置会话Cookie。上面的链接页面解释了您需要做什么并提供示例代码。