注销时,PHP索引页面会发出会话未知错误

时间:2017-04-13 09:05:56

标签: php session

我的索引页面有登录和注销会话。

因此,它使用用户的电子邮件作为会话,当用户登录时,它会使用存储在会话中的电子邮件从fb获取详细信息。

但是当用户注销时,它会显示错误

  

注意:未定义的索引:D:\ xampp \ htdocs \ site \ index.php中的电子邮件

我的代码如下:

<?php 
    //15 2 2015
    session_start();
?>
<?php 
    $email = $_SESSION['email'];
    $sql = "SELECT * FROM landlords WHERE email = '$email' ";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {                                
    while($row = $result->fetch_assoc()) {                                   
?>
<?php 
        echo '<li class="dropdown submenu">';
        echo '<a href="#" class="dropdown-toggle">'; echo ($row["name"]); echo '</a>';
        echo '<ul class="dropdown-menu">';
        echo '<li><a href="myaccount.php">My Account</a></li>';
        echo '<li><a href="logout.php">Log Out</a></li>';
      echo '</ul>';
        echo '</li>';
?>
<?php    }
             } else {
        echo '<li>  <a href="signin.php"><span class="icon-user"></span>Sign In</a></li>';
        }
?>

忽略多个php开头。

因此,当用户登录时,它可以正常工作,但是当用户注销时,会出现错误

  

注意:未定义的索引:D:\ xampp \ htdocs \ site \ index.php中的电子邮件

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题是您没有保护未设置电子邮件会话var的情况,因为会话未设置(注销)之后。试试这个:

$email = @$_SESSION['email'];
if (!empty($email)) {
    $sql = "SELECT * FROM landlords WHERE email = '$email' ";
    $result = $conn->query($sql);
}
if (isset($result) && $result->num_rows > 0) {

...