ob_start, включая эхо файла 1

#php #html #css #ob-start

#php #HTML #css #ob-start

Вопрос:

функция класса (расположена php/php_includes/easyCMSv2.php )

     public function get_file($file){
     ob_start();
     include('php/'.$file);
     $file = ob_end_clean();
     return $file;
   }
  

stylesheet_config.php (находится на php / css)

 <?php
  $blue = "#4C66A4";
  $red = "#A44C4C";
?>
  

stylesheet.php (находится на php / css)

 <?php
  ob_start ("ob_gzhandler");
  if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
     $if_modified_since = preg_replace('/;.*$/', '',   $_SERVER['HTTP_IF_MODIFIED_SINCE']);
  } else {
     $if_modified_since = '';
  }
   $mtime = filemtime($_SERVER['SCRIPT_FILENAME']);
   $gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';

   if ($if_modified_since == $gmdate_mod) {
     header("HTTP/1.0 304 Not Modified");
     exit;
   }
   header("Last-Modified: $gmdate_mod");
   header('Content-type: text/css');
   header('Expires: ' . gmdate('D, d M Y H:i:s', time()   (60*60*24*45)) . ' GMT');
   include_once('../php_includes/easyCMSv2.php');
   require('stylesheet_config.php');
   $cms = new Template($connect);
     if(isset($_GET['v'])){
       $cms->get_file('css/'.$_GET["v"].'.php');
     }
   ?>
  

$_GET['v'] = 1-23-1

1-23-1.php (находится на php / css)

 div{
  color:<?=$blue?>;
  background:<?=$red?>;
}
  

Хотя каждый раз, когда я перехожу к URL-адресу (либо по тегу ссылки, либо по прямому URL-адресу), он возвращает 1 , может ли кто-нибудь объяснить мне, почему он продолжает возвращать 1?

Ответ №1:

ob_end_clean() возвращает true или false (в вашем случае true или 1). Он не возвращает фактический вывод буфера.

Вам нужно использовать другой метод для извлечения выходных данных буфера: ob_get_contents()

 public function get_file($file){
 ob_start();
 include('php/'.$file);
 $file = ob_get_contents(); /* *** */
 ob_end_clean();
 return $file;
  

}

Комментарии:

1. ВАУ, я слишком много смотрел на это! Я просмотрел его примерно 3000 раз, какая любительская ошибка.

2. Иногда просто нужен другой взгляд на вещи, когда вы подходите слишком близко 😉

3. Да, это очень, очень верно. Это отстой, потому что я ненавижу приходить сюда, задавая какие-то вопросы, потому что они в конечном итоге оказываются глупыми и простыми!