2015-09-28 4 views
0

следующая проблема: у меня есть controller.php, который улавливает два $ _GET-значения из введенного URL.Оператор PHP in if

  • $ посмотреть = $ _GET [ 'вид']
  • $ имя_сайта = $ _GET [ 'сайт']

Теперь я хочу, чтобы проверить, если $ имя_сайта является "leichtathletik" или " LandingPage»или "Galerie" или "anlaesse" или "Mitglieder"

и

если $ точка зрения "посетитель" или "администратор" или "член"

ЕСЛИ ложные

ждут 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 
    } 
} 

С помощью этого кода я могу вставить неправильно $ просмотреть или $ имя_сайта и это не вперед на странице 404

оригинальная URL, как: www.domain.tld вид = ххх & имя_сайта = ххх

Переписанный URL-адрес: www.domain.tld/view/sitename.php . Где ошибка?

+0

Почему бы не разбить его на логические блоки, вместо того, чтобы пытаться струнной все вместе в один гигантский если? Это облегчит вам определение проблемы. –

+0

Вы ** должны ** просмотреть свое заявление. Если он слишком длинный и сложный, всегда есть лучший, более простой способ. Если ваши ключевые слова предназначены для оценки очень точно так, как вы представили, подумайте о том, чтобы написать функцию, которая выполняет итерацию множества возможностей или даже переключатель для каждого ключевого слова. –

+0

Отметьте этот вопрос: http://stackoverflow.com/questions/5534268/headerhttp-1-0-404-not-found-not-doing-anything – amklose

ответ

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

}

Смежные вопросы