session_regenerate_id 没有创建新的会话 ID
session_regenerate_id is not creating a new session id
我有一个脚本,用于完成当前会话并开始一个新会话。我使用了一段代码,它在我的开发计算机上运行良好。但是,当我将其发布到生产服务器时,会话 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() 用新生成的会话 ID 更新当前会话 ID。它不会更改会话变量。
echo session_id();
session_regenerate_id();
echo session_id();
您应该取消设置会话才能执行此操作:
unset($_SESSION); // or
$_SESSION = array();
如何开始新会话:
session_start();
session_destroy();
session_regenerate_id();
unset($_SESSION);
session_start();
经过一些试验,我解决了这个问题。
如果任何文本已写入响应,session_regenerate_id(true) 行不会重新生成新的会话 ID。我已经有一系列 echo 语句发出用于调试目的的文本,在我删除它们之后创建了新的会话 ID。
我有一个脚本,用于完成当前会话并开始一个新会话。我使用了一段代码,它在我的开发计算机上运行良好。但是,当我将其发布到生产服务器时,会话 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() 用新生成的会话 ID 更新当前会话 ID。它不会更改会话变量。
echo session_id();
session_regenerate_id();
echo session_id();
您应该取消设置会话才能执行此操作:
unset($_SESSION); // or
$_SESSION = array();
如何开始新会话:
session_start();
session_destroy();
session_regenerate_id();
unset($_SESSION);
session_start();
经过一些试验,我解决了这个问题。
如果任何文本已写入响应,session_regenerate_id(true) 行不会重新生成新的会话 ID。我已经有一系列 echo 语句发出用于调试目的的文本,在我删除它们之后创建了新的会话 ID。