首先,让我先说说我已经全部检查了一下,实际上还没有与我的问题完全相似的解决方案。 我试图制作一个在用户登录时显示某些用户数据的标题,并在用户未登录时显示登录链接或注册的标题。但是我得到的是,当用户登录但登录时,它可以很好地工作注销,它给了我一个未定义的索引。
<?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();
}
请问该如何解决?预先感谢大家。