2017-04-13 45 views
0

我有一個登錄和註銷會話用於我的索引頁。PHP索引頁在註銷時給出會話未知錯誤

因此,它使用用戶的電子郵件作爲會話,並且當用戶登錄時,它使用存儲在會話中的電子郵件從fb獲取詳細信息。

但是,當用戶註銷時,它顯示

通知的錯誤:未定義指數:電子郵件在d:\ XAMPP \ htdocs中\網站\的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中\網站\ index.php

任何幫助表示讚賞。

+1

測試,如果它存在:'''isset($ _ SESSION [ '電子郵件']''' –

+0

@SloanThrasher,而不是'$電子郵件= $ _SESSION ['電子郵件'];'? – harishk

+0

我正在討論你得到的通知,以及如何避免它。在你試圖將它分配給var之前,在測試中使用它。通過測試,我的意思是if語句。 –

回答

1

問題在於,您無法防止會話未設置(註銷)後電子郵件會話變量未設置的情況。試試這個:

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

...

+0

如果你不是錯誤抑制的粉絲,你可以這樣做:'$ email = isset($ _ SESSION ['email'])? $ _SESSION ['email']:null;' –