Включить файлы с оператором switch $ _GET?

ребята! Я новичок. Я думаю об этом весь день, но все же не так много ..

У меня есть один файл index.php, один оператор switch:

$current_page = $_GET['page']; switch ($current_page) { case ('homepage'): include 'contents/homepage.php'; break; case ('about'): include 'contents/about.php'; break; case ('contacts'): include 'contents/contacts.php'; break; default: include 'contents/homepage.php'; } 

Я включаю файл, если атрибут get – это некоторые из имен. И, если URL-адрес, например: myproject / index.php? Page = about Правильный файл содержимого включен.

Но когда URL-адрес просто: myproject / index.php, файл не включен.

Я думал, чтобы добавить что-то вроде:

  if (!isset($_GET['page'])) { header('Location: index.php?page=homepage'); } 

Но это отчасти уродливо, я думаю, и URI не может быть nver просто index.php .. И что, если параметр не является «страницей» … Это снова проблема.

Вы имеете в виду какое-то простое понятное решение для этого. Как включить правильное содержимое в соответствии с разными страницами?

Большое спасибо!

Во-первых, при проверке того, установлен ли ключ массива, вместо этого используйте array_key_exists . Для парсера намного быстрее.

Во-вторых, вы не должны перенаправлять страницу. Вместо этого используйте значение по умолчанию, например:

 // Set default value $current_page = 'homepage'; // Change value if `page` is specified if(array_key_exists('page',$_GET) { $current_page = $_GET['page']; } // Check page switch ($current_page) { case 'about': include 'contents/about.php'; break; case 'contacts': include 'contents/contacts.php'; break; case 'homepage': default: include 'contents/homepage.php'; } 

Кроме того, как я уже говорил выше, вам не нужно указывать ссылку для главной страницы дважды. Без оператора break синтаксический анализатор перейдет к следующему аргументу. Если вы хотите рассматривать несколько значений одинаково, вы можете просто указать их впоследствии.

Надеюсь, это поможет!

 $current_page = isset($_GET['page'])?$_GET['page']:'homepage'; 

Это должно сделать это

 $current_page = isset($_GET['page']) ? $_GET['page'] : null; switch ($current_page) { case ('homepage'): include 'contents/homepage.php'; break; case ('about'): include 'contents/about.php'; break; case ('contacts'): include 'contents/contacts.php'; break; default: include 'contents/homepage.php'; }