是否可以防止标题再次发送?

时间:2013-03-20 11:00:23

标签: php iframe header include

想象一下:

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

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

3 个答案:

答案 0 :(得分:2)

您使用术语“标题”让所有人感到困惑。标头是Web服务器发送的信息,用于告诉浏览器如何处理有效负载。你在谈论HEAD,我怀疑HTML和BODY标签。

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

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

答案 1 :(得分:1)

<强> include_once

  

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

<强> Official Document

答案 2 :(得分:1)

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

如果包含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