php - session_regenerate_id 没有创建新的 session ID

标签 php session session-state

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

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

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);

在最后一行,没有生成新的 session ID。

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

最佳答案

经过一些试验,我解决了这个问题。

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

关于php - session_regenerate_id 没有创建新的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31436949/

相关文章:

php - 使用 PHP 的 preg_replace() 只返回 <h1>?

PHP MySQL 通过附加到 "object"的删除按钮从数据库中删除行

php - 将 Wordpress 复制到 Staging 丢失 wp_options

PHP:由于“致命”错误而突然终止请求的影响

php - Symfony 4 一些用户无法登录,csrf token 无效,可能是 php session 问题,没有产生错误

session - Nodejs Express req.session 不存储我的变量

ASP.NET session 性能

java - Oracle JDBC 事务管理和提交 session

php - codeigniter session 同时交换多个请求