PHP session_start不会恢复会话

时间:2013-03-07 18:03:38

标签: php session

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

我在这里写什么?

1 个答案:

答案 0 :(得分:1)

  

我在这里缺少什么?

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

甚至是一个不同的保存处理程序,所以甚至不保存到磁盘而是保存到数据库中。

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