2017-07-15 25 views
0

我想在登錄表單上存儲會話變量,以便我可以在更多頁面上引用它們。 $ row [level]的回聲成功,但沒有SESSION變量。從mysqli加載的PHP中存儲會話變量

session_start(); 
    if (isset($_POST['username']) and isset($_POST['password'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $query = "SELECT firstname, level, username FROM `roster` WHERE username ='$username' and password ='$password'"; 
    $result = mysqli_query($link, $query) or die(mysqli_error($link)); 
    if ($result->num_rows > 0) { 
    //while($row = $result->fetch_assoc()) { 
    //echo $row[level]; 
    //header('location:begin.php');} 
    while ($row = $result->fetch()) { 
     $_SESSION['level'] = $row[level]; 
     $_SESSION['firstname'] = $row[firstname];} 
}} 

我也試過這個,它成功地將用戶名存儲爲會話變量而不是級別變量。

session_start(); 
    if (isset($_POST['username']) and isset($_POST['password'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $query = "SELECT firstname, level, username FROM `roster` WHERE username ='$username' and password ='$password'"; 
    $result = mysqli_query($link, $query) or die(mysqli_error($link)); 
    $count = mysqli_num_rows($result); 
    if ($count == 1){ 
     $_SESSION['username'] = $username; 
     }else{$fmsg = "Invalid Login Credentials."; 
    } 
}if (isset($_SESSION['username'])){ 
$username = $_SESSION['username']; 
$level = $_SESSION['level']; 
header ('location: begin.php'); 

感謝您的幫助!

+0

您在上面顯示的代碼將在運行時發出警告。你爲什麼不聽他們/看他們? – symcbean

回答

0

使用引號這裏

$_SESSION['level'] = $row["level"]; 
    $_SESSION['firstname'] = $row["firstname"]; 

確保有關循環和覆蓋變量的值,否則使用數組。

+0

正確 - 但假設這些沒有被定義爲常量,php將默認將它們視爲帶引號的字符串,這意味着這不太可能成爲報告問題的原因。 – symcbean

+0

@symcbean正確。這些不是常數。 –