我想恢复一个会话。所以我传递会话ID并试图像这样恢复会话:
session_save_path($_SERVER["DOCUMENT_ROOT"].'/mysessions');
if(!empty($_POST['session_id'])) {
session_id($_POST['session_id']); // $_POST['session_id'] = "4dkwkeiugraqhfpeq745l2c2a1";
session_start();
}
$session_var = $_SESSION['property_name']; // <- null even though there was something there
ob_start();
var_dump($_SESSION);
$session_data = ob_get_clean(); // $session_data = NULL
我看到物理会话文件在我存储会话的会话文件夹中存在“sess_4dkwkeiugraqhfpeq745l2c2a1
”。三是那里的数据。但是,会话不会恢复。致电session_start()
后,$_SESSION
变量不存在。
我在这里写什么?
答案 0 :(得分:1)
我在这里缺少什么?
这很难说。 session_id()
是更改会话ID的正确函数,但session_save_path()
可能是另一个。所以你认为会话在磁盘上,但它是错误的目录。
甚至是一个不同的保存处理程序,所以甚至不保存到磁盘而是保存到数据库中。
同样在你的代码中我没有看到任何检查来测试$_SESSION
是否实际为空,所以不清楚你在哪里检查。您应该在session_start()
之后直接对此进行测试,以便了解数据是否已加载。