if语句中的PHP运算符

时间:2015-09-28 16:02:01

标签: php if-statement operator-keyword

以下问题:我有一个controller.php,可以从输入的网址中捕获两个$ _GET值。

  • $ view = $ _GET [' view']
  • $ sitename = $ _GET [' site']

现在我想检查$ sitename是否是" leichtathletik"或"登陆"或" galerie"或" anlaesse"或" mitglieder"

如果$ view是"访客"或" admin"或"会员"

如果错误

转发给404 Errorpage

如果是真的 运行以下代码

if (
    ($sitename != "landingpage" 
        && $sitename != "leichtathletik" 
        && $sitename != "mitglieder" 
        && $sitename != "anlaesse" 
        && $sitename != "galerie") 
    || ($view != "visitor" 
        && $view != "member" 
        && $view != "admin")
) {
    header("HTTP/1.0 404 Not Found"); //prüft ob der Sitename und der Viewname gültig sind. Wenn nicht -> Error
    exit();

} else {
    //run code
    }
}

使用此代码,我可以插入错误的$ view或$ sitename,但它不会转发到404 Page

原始网址如下:www.domain.tld?view = xxx& sitename = xxx

重写的网址如下:www.domain.tld / view / sitename.php 。错误在哪里?

2 个答案:

答案 0 :(得分:0)

这是一个简单的switch可以帮助清理它的区域。然后我们将它放入一个函数中,使其紧凑且易于理解

function redirect($site, $view) {
    switch($site) {
        case 'landingpage':
        case 'leichtathletik':
        // etc
        case 'galerie':
            return true; break;
        // no default since we don't want it to do something if no matches
    }
    // Now do the same for $view    
    return false; // Should only reach this if you don't match anything
}

答案 1 :(得分:0)

感谢您的投入。

我用这句话修正了它:

    if($sitename=="landingpage" || $sitename=="leichtathletik" || $sitename=="galerie" || $sitename=="anlaesse" || $sitename=="mitglieder"){

    //code

    }else{
       header("HTTP/1.0 404 Not Found");
     header('Location:http://www.xxx.ch/error/error404.html'); 
    }

}else{
     header("HTTP/1.0 404 Not Found");
     header('Location:http://www.xxx.ch/error/error404.html');
}

}