PHP 会话在标头后被销毁/丢失

2022-08-31 00:59:41

我有一个脚本,在重定向到使用之前设置一些会话值。/header()

我读过很多关于变量在之后被摧毁/丢失的帖子,即使在我实现了这个之后:$_SESSIONheader()

// set session here

session_regenerate_id(true);
session_write_close();
header("Location: /");

session_start()设置在正确的位置,有谁知道我可能缺少的任何东西?

在索引.php页面上,我有这个:

session_start();
print_r($_SESSION);

// outputs nothing :'(

代码非常复杂,因此不会全部发布,只是片段。


答案 1

由于使用位置标头,我从未见过任何与会话相关的问题 - 您确定在两个页面上都调用session_start吗?


嗯。。。在你添加上面的session_start位之前,这个答案更有意义,并提到你确定你正在使用session_start。:-)


答案 2

标头必须在会话关闭之前发送

session_regenerate_id(true);

header("Location: /");
// the header must be sent before session close
session_write_close(); // here you could also use exit();

推荐