2016-05-12 16 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

也是如此。 –