Как мне элегантно обрабатывать включение php-контента? - PullRequest
0 голосов
/ 21 октября 2011

У меня есть простой (учебный) веб-сайт, структура которого состоит из меню выбора контента и панели контента, где контент отображается, когда выбран один из элементов меню. В меню используются ссылки типа ?content_id=... для передачи информации.

Я хотел бы обработать 404 кода для несуществующих идентификаторов или отсутствующего содержимого, но для этого мне нужно вычислить содержимое панели содержимого перед загрузкой страницы, чтобы я мог вывести правильный заголовок раньше всего остального. Я закончил писать этот фрагмент кода в начале моего файла и печатать переменную $content, когда это необходимо. В любом случае, я чувствую себя немного неловко с таким подходом, так как мне приходится останавливать естественный поток, чтобы поймать вывод include.

<?php 
  // if no content is specified in the address, select the home page (0)
  $content_id = (isset($_GET['content_id'])) ? $_GET['content_id'] : 0;

  //check if selected content exists and put the content inside the $content variable (to be used later)
  if ($content_id < 0 OR $content_id > 2 OR !is_file('exContent/content'.$content_id.'.php')) {
    header("HTTP/1.0 404 Not Found");
    ob_start();
    include 'exContent/noContent.php';
  }
  else { 
    ob_start();
    include 'exContent/content'.$content_id.'.php';
  }

  $content = ob_get_contents(); ob_end_clean();
?>

Я не могу понять, как лучше это сделать, я был бы очень рад, если бы вы могли мне помочь!

1 Ответ

1 голос
/ 21 октября 2011

Может быть намного лучше, но это только начало:)

  $includeFile 'exContent/content'.$content_id.'.php';

  if ($content_id < 0 OR $content_id > 2 OR !is_file( $includeFile )) {
    header("HTTP/1.0 404 Not Found");
    $includeFile = 'exContent/noContent.php';
  }

  ob_start()
  include $includeFile;
  $content = ob_get_contents();
  ob_end_clean();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...