会话注销后未定义的索引

时间:2019-12-08 06:39:35

标签: php

首先,让我先说说我已经全部检查了一下,实际上还没有与我的问题完全相似的解决方案。 我试图制作一个在用户登录时显示某些用户数据的标题,并在用户未登录时显示登录链接或注册的标题。但是我得到的是,当用户登录但登录时,它可以很好地工作注销,它给了我一个未定义的索引。

<?php

    if(session_status() == PHP_SESSION_ACTIVE){
        $user = $_SESSION['email_of_user'];
        $st=$conn->prepare("select * from membership where email= ? ");
        $st->bind_param("s", $user);
        $st->execute();
        $rs=$st->get_result();

     while($row=$rs->fetch_assoc()){ 

            echo '<div id="yourBtn" style="border: 1px solid black; cursor:pointer;display:block;width:50px;height:50px;border-radius:105px;align:left"><div style="position:relative;display:block;width:200px"><img src="./users/profile/'.$row["profile_pic"].'" width="50px" height="50px" alt="'.$row["name"].'" style="display:block;border-radius:105px"/></div></div>
                <div class="info">
                <span class="value">Welcome back, '.$row['name'].'!</span>
                <a href="../users/login-home.php">Go Shopping</a>
                </div>  
                <div class="options">
                <p><a href="../users/access-controlled.php">View Dashboard</a></p>
                <a href="../users/update-profile.php">Update your profile information</a>
                <p><a href="../users/logout.php">Logout</a></p>
                </div>';}

    }else{
            echo '<a href="/users/login.php">Login or Register</a>';}
        ?>  

那是我上面的代码。注销时,它说$ user是未定义的,但登录后可以正常工作。

我注意到的另一件事是,当我使用session_status()== PHP_SESSION_ACTIVE而不使用prepare和while语句时,它仍然不显示else语句。这是否意味着注销后会话未正确销毁?我的注销脚本(如下所示)是否未正确销毁?

 function LogOut()
{

    $sessionvar = $this->GetLoginSessionVar();

    $_SESSION[$sessionvar]=NULL;

    session_destroy();

    unset($_SESSION[$sessionvar]);

    session_write_close();

}

请问该如何解决?预先感谢大家。

0 个答案:

没有答案