ребята! Я новичок. Я думаю об этом весь день, но все же не так много ..
У меня есть один файл 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'; }