if语句给出了比预期更多的结果

时间:2017-05-10 14:32:34

标签: php if-statement

我需要这个PHP的帮助,这是一个if语句。根据usertype将显示不同的导航栏。我得到的所有global/i-super_nav.php

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

2 个答案:

答案 0 :(得分: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,它就会起作用。使用这样的字符串不是最佳的,这就是为什么我们经常使用数字,但这样你就使它变得更加愚蠢了:))

答案 1 :(得分:0)

你的if语句看起来很好。

但请仔细查看设置$_SESSION["Member_type"]变量的代码。您的代码可能始终将其设置为值"S"