session_regenerate_id 没有创建新的会话 id

2024-05-17

我有一个脚本,旨在完成当前会话并开始新的会话。我使用了一段代码,它在我的开发计算机上运行良好。但是,当我将其发布到生产服务器时,会话 ID 始终保持不变。

以下是我重新启动会话的代码:

session_start();

$_SESSION = array();
$_POST = array();
$_GET = array();

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_destroy();
session_write_close();
session_start();    

session_regenerate_id(true);

最后一行,不会生成新的会话 ID。

为什么运行 PHP 的两个服务器之间会有所不同?我能做些什么来纠正它?


经过一番实验我解决了这个问题。

如果响应中写入了任何文本,则 session_regenerate_id(true) 行不会重新生成新的会话 ID。我已经有一系列的 echo 语句发出用于调试目的的文本,在删除它们后,创建了新的会话 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

session_regenerate_id 没有创建新的会话 id 的相关文章