2

我想恢复会话。所以我正在传递会话 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变量不存在。

我在这里想念什么?

4

1 回答 1

1

我在这里想念什么?

这很难说。session_id()是更改会话 ID 的正确功能,但session_save_path()可能是不同的。所以你认为会话在磁盘上,但它是错误的目录。

甚至是不同的保存处理程序,因此甚至不保存到磁盘而是保存到数据库中。

同样在您的代码中,我看不到任何检查来测试它$_SESSION是否实际上是空的,因此不清楚您在哪里检查。您应该在之后直接对此进行测试,session_start()以便知道数据是否已加载。

于 2013-03-07T18:15:50.753 回答