面试问题:我们可以在标题前有回音吗?

时间:2010-09-22 04:36:53

标签: php header echo

我出现了进行php测试,他们被问到一个我无法找到答案的问题。

问题是这样的。

echo "MESSI is injured!!";
header("Location:somepage.php");

采访者希望将标题回显写在同一页面上。

我想知道它是怎么可能的。它应该给出一些像

这样的错误 已经发送的

标题(输出从.....开始

是否真的可以将echo和header写入同一页面!!!

2 个答案:

答案 0 :(得分:34)

您可以使用Output Buffering作为

ob_start();
echo "MESSI is injured!!";
header("Location:somepage.php");
ob_end_flush();

问题是我们在开始发送输出后无法发送标头。为了解决这个问题,我们缓冲输出。函数ob_start打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本(标头除外)发送输出,而是将输出存储在内部缓冲区中。因此echo输出将被缓冲。接下来我们发送标题没有任何问题,因为我们还没有吐出任何输出。最后,我们调用ob_end_flush来刷新内部缓冲区内容并停止输出缓冲。

答案 1 :(得分:3)

只要所有标头调用都在发送任何非标头输出之前就可以执行(这包括新行/空白等烦人的事情)。所以

<?php
header("Location:somepage.php");
echo "MESSI is injured!!";
?>

应该做的伎俩