2016-05-12 52 views
-2

我試圖根據用戶權限顯示不同的導航欄。唯一的問題是,當我登錄到系統時,它會顯示第一個,如果,無論用戶的權限。爲了確保問題出現在循環中,我嘗試切換其他ifs,並且發生了同樣的情況。該代碼是在一個外部的PHP文件,我打電話在每個頁面的頂部的功能。有什麼建議麼 ?如果陳述僅工作到1st else if

function checkAuth() { 
    session_start(); 

    if(!isset($_SESSION['role'])) { 
    require_once('menu.php'); 
    } else if ($_SESSION['role'] = "registered") { 
    require_once('regnav.php'); 
    } else if ($_SESSION['role'] = "admin") { 
    echo "FDGFGFD"; 
    require_once('adminnav.php'); 
    } 

} 
+3

必須使用雙'='標誌的任何條件檢查。 –

+0

我已經嘗試過使用double ==,但是當我這樣做時,沒有導航欄出現 – Chanter

回答

3

您的問題在於此零件:$_SESSION['role'] = "registered"。單個=表示您將值「註冊」分配給變量$_SESSION['role']

如果您正在評估檢查的東西,你需要使用==$_SESSION['role'] == "registered"

你有同樣的問題與第二elseif

3

您需要使用雙=簽收任何條件檢查。對於任何條件檢查ifelse if,您必須在變量的中間使用==

如果您僅使用=這意味着它將分配$_SESSION['role']中的值。您也可以使用===來檢查值以及變量的類型。

有效的功能是:

function checkAuth() 
{ 
session_start(); 


if(!isset($_SESSION['role'])) 
{ 
    require_once('menu.php'); 
} 

else if ($_SESSION['role'] == "registered"){ 
    require_once('regnav.php'); 
} 

else if ($_SESSION['role'] == "admin"){ 
    echo "FDGFGFD"; 
    require_once('adminnav.php'); 
} 

} 
?> 
+1

或者使用'==='檢查類型。如果$ _SESSION ['role']'爲0,那麼可以防止意外的結果。 – Arjan

+0

也是如此。 –