2017-05-10 98 views
-5

我需要PHP的這一點幫助,它是一個if語句。根據usertype將顯示不同的導航欄。所有我得到global/i-super_nav.phpif語句給出的結果比預期的要多

session_start(); 
if(isset($_SESSION["Member_type"]) && $_SESSION["Member_type"]== 'S'){ 
    include ('global/i-super_nav.php'); 
} 
elseif(isset($_SESSION["Member_type"]) && $_SESSION["Member_type"]== 'A'){ 
    include ('global/i-admin_nav.php'); 
} 
elseif(isset($_SESSION["Member_type"]) && $_SESSION["Member_type"]== 'U'){ 
    include ('global/i-member_nav.php'); 
} 
else 
{ 
    include ('global/i-nav.php'); 
} 
+0

描述您的問題,添加更多信息並告訴我們您想要執行的操作。 – Troyer

+0

做一個'echo $ _SESSION [「Member_type」]'來看看它在打印什麼 – CAllen

+0

做一個var_dump $ _SESSION ['member_type']這會告訴你內容 – FMashiro

回答

0

的if語句使用都非常簡單,唯一的可能性就是$_SESSION["Member_type"]始終是價值"S"。這意味着'問題'是另一回事。

您可以輕鬆地自行驗證。在你做if語句之前,你把print_r($_SESSION)。如果你這樣做,你會看到會話數組中的值。它可能是小寫的,也可能是簡單的設置錯誤。

這應該始終是您的第一次測試(檢查實際值,而不是您的想法)。


雖然我們在這,讓我們添加一些代碼審查的。對於你做什麼,是另一種方法,這是比較常見的實現,該switch()

switch(strtoupper($_SESSION["Member_type"])){ 
    case 'S': 
     include ('global/i-super_nav.php'); 
    break; 
    case 'A': 
     include ('global/i-admin_nav.php'); 
    break; 
    case 'U': 
     include ('global/i-member_nav.php'); 
    break; 
    default: 
     include ('global/i-nav.php'); 
    break; 
} 

我已經添加了strtoupper()。這樣,如果您的值是Ss,它會起作用。使用這樣的字符串不是最優的,這就是爲什麼我們經常使用數字,但這樣你使它更加愚蠢:)

+0

謝謝你幫助我 –

0

你的if語句看起來不錯。

但仔細查看您設置$_SESSION["Member_type"]變量的代碼。您的代碼可能會始終將其設置爲值"S"