使用模板中的标题(“Location”)包括文件/ Process include和save in variable

时间:2010-06-28 19:10:34

标签: php redirect variables include header

我正在试图找到一种方法:

我想要一个核心模板文件(structure.php):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php include_once(NAKIDROOT."includes/head.php"); ?>
</head>
<body>
<div id="all">
  <div id="page">
    <?php include_once("includes/header.php"); ?>
    <div id="main">
      <div id="left">
        <?php include_once("includes/left.php"); ?>
      </div>
      <div id="content">
      <?php include_once("includes/messages.php"); ?>
      <?php include_once("includes/page.php"); ?>
      </div>
      <?php include_once("includes/footer.php"); ?>
    </div>
  </div>
</div>
</body>
</html>

我希望包含能够在需要时运行标头(位置),所以看起来我需要以某种方式让php读取每个包含文件。

有没有办法让include首先检查标题和内容,并将其内容放在变量中,所以我的结构文件会是这样的?:

<div id="page">
    <?php echo($header); ?>
    <div id="main">
      <div id="left">
        <?php echo($left); ?>
      </div>
      <div id="content">
      <?php echo($messages); ?>
      <?php echo($page); ?>
      </div>
      <?php echo($footer); ?>
    </div>
  </div>

1 个答案:

答案 0 :(得分:4)

在您开始使用HTTP响应正文后,您无法发送标题(即在您输出内容之后,这包括<?php标记之外的内容)。快速解决方法是使用ob_start()和相关功能来使用输出缓冲。这只是一个创可贴;您应该尝试重构代码,以便在可能的情况下不必依赖输出缓冲。

要使用ob_start(),只需在顶部调用它,然后调用脚本底部的ob_end_flush()