问题 标题如何在PHP中与输出缓冲一起使用?


标题是不言自明的。

我对PHP有很多经验,但我不确定如何 header 功能之间的作用 ob_start() 和 ob_end_clean()

考虑一下:

ob_start();

echo "Some content";
header('X-Example-Header: foo');
echo "Some more content";

$output = ob_get_contents();
ob_end_clean();

echo $output;

是吗? header 函数忽略输出缓冲,因此所有标题都在内容之前发送,因为它是 echo之后的 header 呼叫?

还是以其他方式工作?


9245
2018-06-24 15:01


起源

(参考)  ob_start  - 此功能将打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本发送输出 (除标题外)而是输出存储在内部缓冲区中。 - Gordon
哦,嘿,我错过了。这应该教我读得更近一点。谢谢,戈登。 - Austin Hyde


答案:


header() 确实忽略了输出缓冲。使用输出缓冲的部分原因是,因为响应被缓冲,所以您可以“乱序”发送HTTP标头。一旦发送任何类型的输出,您就无法发送HTTP标头(除非该输出被缓冲)。


15
2018-06-24 15:03