试图破坏未初始化的会话

时间:2016-07-21 08:59:00

标签: session

if (!($savedid == $current_session_id)) {
    // 3. hijack then destroy session specified.
    session_id($savedid);
    session_start();
    session_destroy();
    session_commit();
    if (session_destroy()) { //eror here
        header("Location: ../../../index.php");
        exit;
    }

    // 4. restore current session id. If don't restore it,
    // your current session will refer to the session you just destroyed!
    session_id($current_session_id);
    session_start();
    session_commit();
}

我想基于其ID销毁会话,但我收到错误Trying to destroy uninitialized session in

如何使用会话ID销毁会话?

更新

我看到我只是想要一个条件说如果会话被销毁我想直接登录页面..如何检查?

  

我希望它像例如用户登录pc1然后登录pc2 pc1将被定向登录

1 个答案:

答案 0 :(得分:0)

如果你看这里:

session_start();
session_destroy(); // Destry
session_commit();
if(session_destroy()){ // Again

您注意到您正试图两次销毁会话 第二次调用session_destroy()会话已经被破坏且不存在。

这就是你收到错误的原因。只需删除对session_destroy()的第一个电话。

根据您的问题更新

修改:您不需要检查(会话是否已销毁),因为您已将其销毁,即您可以确定其中包含'现在没有会议。 (直到你拨打session_start()

您可以通过调用session_id()来检查会话是否存在 - 如果没有会话,则返回空字符串:

if(!session_id()) { /* No session. Redirect! */ }
else { /* There is a session. Continue. */ }