php oop switch case不起作用

时间:2014-11-18 09:46:12

标签: php oop switch-statement case

我的开关案例将每个用户重定向到第一个案例,出了什么问题? 我希望'总统'将重定向到admin.php

<?php require "header.php"; ?>
<?php
if ( ! isset($_SESSION['email']) ) {
$msg = urlencode('U dient ingelogd te zijn om op deze pagina te kunnen komen.');
header('location: login.php?msg=' . $msg);
die();
}

$role = $_SESSION['jobTitle'];
switch($role) {
case 'Finance' AND 'VP Finance':
    header('location: finance.php');
    break;
case 'VP Sales' AND 'Sales Manager (NA)' AND 'Sales Rep':
    header('location: sales.php');
    break;
case 'President':
    header('location: admin.php');
    break;
default:
    session_destroy();
    header('location: login.php');
}
?>
</div>
</body>
</html>

这是我的数据库 http://i57.tinypic.com/2em21aw.png

2 个答案:

答案 0 :(得分:2)

AND语句不能在切换案例中使用...请尝试以下方法来实现相同的目的:

switch($role) {
    case 'Finance':
    case 'VP Finance':
        header('location: finance.php');
        break;
    case 'VP Sales':
    case 'Sales Manager (NA)':
    case 'Sales Rep':
        header('location: sales.php');
        break;
    case 'President':
        header('location: admin.php');
        break;
    default:
        session_destroy();
        header('location: login.php');
}

答案 1 :(得分:0)

  1. 我认为你的意思是OR而不是AND。
  2. 您正在尝试将AND的结果与$ role变量进行比较。 AND的结果始终为真。
  3. 你可以改写

    switch($role) {
        case 'Finance':
        case 'VP Finance':
            header('location: finance.php');
            break;
        case 'VP Sales':
        case 'Sales Manager (NA)':
        case 'Sales Rep':
            header('location: sales.php');
            break;
        case 'President':
            header('location: admin.php');
            break;
        default:
            session_destroy();
            header('location: login.php');
        }
    

    或者你可以写一些更复杂的表达式内容。

    switch(true) {
    case ($role == 'Finance' OR $role == 'VP Finance'):
        header('location: finance.php');
        break;
    case ($role =='VP Sales' OR $role =='Sales Manager (NA)' OR $role =='Sales Rep'):
        header('location: sales.php');
        break;
    case $role == 'President':
        header('location: admin.php');
        break;
    default:
        session_destroy();
        header('location: login.php');
    }