如果声明只工作到第一个,如果

时间:2016-05-12 15:49:18

标签: php

我试图根据用户权限显示不同的导航栏。唯一的问题是当我登录系统时,无论用户的权限如何,它都会显示第一个。为了确保问题在循环中,我尝试切换其他ifs,同样的事情发生了。代码在外部php文件中,我在每个页面的顶部调用该函数。有什么建议吗?

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');
  }

}

2 个答案:

答案 0 :(得分:3)

您的问题在于此部分:$_SESSION['role'] = "registered"。单=表示您将值“已注册”分配给变量$_SESSION['role']

如果您要评估某些内容,则需要使用==,即$_SESSION['role'] == "registered"

第二个elseif

会遇到同样的问题

答案 1 :(得分: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');
}

}
?>