2016-05-09 65 views
0

請問我一直在努力解決這個問題,但並沒有爲我工作。我有一個會話已開始,但在使用unset($_SESSION['variable']註銷後,由於會話未設置,我無法重新登錄。如何解決未設置變量後會話不會啓動

請幫我一把。注意:我無法在取消設置變量後登錄。

//this is login.php 
<?php 
    session_start(); 
    ob_start(); 
    $msg = ""; 
    if (isset($_POST['login'])){ 
     include "dbconnect.php"; 
     if($_SESSION['emaill'] !== NULL){ 
      $emaill= $_SESSION['emaill']; 
      $passWord = $_POST['passWord']; 
      if (empty($emaill && $passWord) == false){ 
       $sql = "SELECT * FROM `sono` WHERE `eMail`='$emaill' && `passWord`='$passWord'"; 
       $check = mysqli_query($dbconnect, $sql) or die (mysqli_error($dbconnect)); 
       $result = mysqli_num_rows($check); 
       if ($result > 0){ 
        $emaill= $_SESSION['emaill']; 
        header ('location: home.php'); 
        exit(); 
       } else 
        $msg = "<p style='color: red; padding-left: 10px'>Invalid password or email address</p>"; 
      } else 
       $msg = "<p style='color: red; padding-left: 10px'>Please enter your email and password to login</p>"; 
     } else 
      $msg = "<p style='color: red; padding-left: 10px'>My scripts not working yet</p>"; 
    } 
?> 

// this is for logout 
<?php 
    session_start(); 
    if (isset($_SESSION['emaill'])){ 
     unset($_SESSION['emaill']); 
     header('location: login.php'); 
    } 
?> 
+3

[PHP:「通知:未定義變量」和「通知:未定義指數」]的可能的複製(http://stackoverflow.com/questions/4261133/php- notice-undefined-variable-and-notice-undefined-index) –

+2

在註銷時,你銷燬'$ _SESSION ['emaill']'但是當你再次嘗試登錄時,你不檢查第8行中是否存在'email' 'if($ _ SESSION ['emaill']!== NULL){'在嘗試使用它之前 – RiggsFolly

回答

3

使用$ _SESSION之前[ 'emaill'],用isset()函數像檢查:

if(isset($_SESSION['emaill']) && $_SESSION['emaill'] !== NULL){ 
---- 
--- 
} 
+1

謝謝Rahjith。我已經測試過電子郵件,現在已經不存在了。它不再給我未定義的索引,但登錄查詢不起作用。顯示我在腳本中籤名的最後一個錯誤。 $ msg =「

我的腳本還沒有工作

」; –

+0

echo你的sql,並嘗試在mysql中直接運行它,並檢查它顯示的錯誤 –

+0

回聲SQL後,它顯示注意:未定義的變量:SQL在C:\ xampp \ htdocs \ buth_net \ nursingSchool \ login.php在第22行和當我從MySQL運行它時,它返回emptry結果。我認爲現在的專業是,會議註銷後不開始。 –

0

添加這裏isset檢查

if(isset($_SESSION['emaill']) && $_SESSION['emaill'] !== NULL){ 
0

您可以使用空函數在SESSION之前檢查值是否存在。由於變量在註銷時未被設置或銷燬,所以在登錄時無法識別SESSION。你可以嘗試檢查這樣如下: -

if(!empty($_SESSION['emaill'])) 
{ 

// Your code here 

}