0

想象一下:

<?php
include_once('galeria.php');
?>

galeria.php 文件是一个完整的 html/php 文件。是否可以包含文件并防止标题再次发送?我只是不想使用 iframe 或更改我的包含文件。

4

3 回答 3

2

您使用“标题”一词使每个人都感到困惑。标头是 Web 服务器发送的内容,用于告诉浏览器如何处理有效负载。你在谈论 HEAD,我怀疑 HTML 和 BODY 标签。

好吧,任何明智的人都会简单地将文件分成几部分,但是出于某种奇怪的原因(您没有告诉我们原因),您声明您不希望这样做。在这种情况下,您可以读取 galeria.php 文件并使用 PHP 的 DOM 类方法(首选)或一些 REGEX(不太好)从 galeria.php 文件中提取正文有效负载。

你能告诉我们为什么你不想明智地设计这个吗?

于 2013-03-20T11:29:48.833 回答
1

标头只发送一次——就在第一个字节发送到浏览器之前。字节可以通过 (例如) echo(), print(), 或通过节外的文字 text/html发送到浏览器<?php ?>

如果包含 的文件galeria.php不需要显式发送任何标题,那么您无需担心。

否则 - 如果您的文件galeria.php 需要明确发送标头,您可以缓冲galeria.php如下输出:

  • 首先,调用ob_start()(将所有输出重定向到临时缓冲区),
  • 然后包括galeria.php(输出被发送到缓冲区,而不是浏览器。标题尚未发送),
  • 然后根据需要通过发送标题header()
  • 调用ob_end_flush()以将缓冲区内容发送到浏览器(以及所有默认标头)。

http://www.php.net/manual/en/function.ob-start.phphttp://php.net/manual/en/book.outcontrol.php

于 2013-03-20T11:16:56.843 回答
1

包含一次

include_once语句在脚本执行期间包含并评估指定的文件。这是与语句类似的行为include,唯一的区别是如果文件中的代码已经被包含,它将不会再次被包含。顾名思义,它将仅包含一次。

Official Document

于 2013-03-20T11:04:24.873 回答