2012-04-04 101 views
1

我試圖根據數據庫中某個人的「角色」創建會話和條目。我以爲我確定了邏輯並創建了代碼。有效。問題是,它適用於所有人。我希望得到一些幫助,指出爲什麼我的代碼在邏輯上不正確,因爲我認爲它很重要。任何幫助將不勝感激。這是我的代碼。這似乎在任何人誰的作用,讓沒有「管理員」,我可以針點原因:爲特定用戶創建特定會話

function auth($email, $pass){ 
     global $result; 

     while ($row = mysql_fetch_array($result)) { 
      if($email == $row["email"] && $pass == $row["password"]) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

    function test($email, $pass){ 
     $test1 = auth($email, $pass); <--above 
     if ($test1) { 
      get_role($email); <-- below (This is the one where I'm puzzled) 
     $_SESSION['email'] = true; 
      header('location:menupage.php'); 
      exit;  
     } 
     else{ 
      echo "Please enter correct username and password or <a href='register.php'>Register</a>";} 
    } 

    function get_role($email){ 
    global $connection; 
    $sql="SELECT * FROM exam WHERE email= '$email'"; 
    $result = mysql_query($sql, $connection); 
    confirm_query($result); 
    while ($row = mysql_fetch_array($result)) { 
     if ($row["role"] == 'Admin'){ 
       $_SESSION['role'] = true; 
      } 
      else 
      $_SESSION['role'] = false; 
    } 


    } 

,這是具有會話

<?php 
session_start(); 
if(!isset($_SESSION['role'])) 
{ $_SESSION['msg'] = 'you are not logggedd in'; 
    header('location: menupage.php'); 
    exit; 
} 
?> 

回答

1

$_SESSION['role'] = false仍然是行政頁面頁眉一個變量被設置。所以!isset($_SESSION['role'])不會按照您的預期進行評估。使用類似:

管理頁面:

if($_SESSION['role'] === false){ ... 
+0

感謝布雷克。那麼你是說會議仍然設置 - 它只是設置爲false?我懂了。我只是一起消除了虛假陳述,它像一個魅力。感謝您的邏輯!我很感激。 – Addy75 2012-04-04 22:02:20

+0

非常好。如果給出答案,不要忘記標記答案爲答案。乾杯。 – Blake 2012-04-04 22:03:59