заголовок включения против страницы включения - PullRequest
1 голос
/ 15 февраля 2011

В настоящее время я использую include 'header.php' и include 'footer.php' на каждой странице, и, насколько я знаю, так делают большинство людей. Однако я подумал о том, как мне лично будет лучше. Я думал о создании index.php, затем в индекс включить страницу. Это устранит необходимость в нижнем колонтитуле и устранит необходимость в include дважды на каждой странице. Однако я действительно новичок в php, поэтому не знаю, как бы я это сделал. Я пытался использовать методы POST и GET, но, похоже, это не сработало. Чего я хочу добиться - это включить страницы в заголовок, используя URL-адрес, такой как http://mysite.com/index.php?page=history, а затем загрузить history.php. Если мне нужно что-то уточнить, просто спросите. Извините, если я не приму ответ сразу, я действительно сонный. Я доберусь до этого, когда смогу.

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Если вы сделаете это через index.php, вы, несомненно, сделаете это неправильно.
Ничего плохого - каждый новичок делает это так.
Только потому, что вы думаете о , включает , тогда как вы должны думать о шаблонах .

Вы можете сделать это через index.php, без проблем.Но в этом индексе не должно быть ни одного HTML-тега!Как и на самой странице.

Независимо от того, делаете ли вы это на отдельных страницах или с помощью index.php, сценарий должен быть одинаковым:

  1. Получить все данныенеобходимо для отображения конкретной страницы.
  2. Вызовите шаблон.

Таким образом, ваша обычная страница будет выглядеть как

code
code
code

include 'template.php';

, а index.php будет выглядеть как

get page name
sanitize page name
include page
include 'template.php';

, теперь вы можете решить, что выбрать

1 голос
/ 15 февраля 2011

Это не проблема, если вы включаете в файл 2 страницы, такие как header.php и footer.php ... Просто писать 2 строки кода на каждой странице не имеет значения.

Вы можете решить, какие страницы вы хотите динамически включать в каждую страницу, используя оператор if вместо передачи имени страницы в URL.

0 голосов
/ 15 февраля 2011

Прежде всего, я согласен с Мигером ... Взгляните на рамки соема.Большинство из них будет использовать двухэтапное представление, которое, по сути, делает этот процесс более сложным и гибким.

При этом сказано, что это будет выглядеть примерно так:

<?php 
$page = isset($_GET['page']) ? $_GET['page'] : 'home'; // default to home if no page

if(file_exists($page.'.php')) {
  // buffer the output so we can redirect with header() if necessary
  ob_start();
  include($page.'.php');
  $content = ob_get_clean();

}
else
{
  // do something for error 404
}
?>
<html>
  <head></head>
  <body>
    <?php echo $content; ?>
  </body>
</html>

Вы можете получить более сложныйчем это.Единственное, что вы хотите сделать, - убедиться, что вы не слепо предполагаете, что страница в $_GET var безопасна ... убедитесь, что файл существует на вашем сервере или иным образом его очистите ...

...