我出现了进行php测试,他们被问到一个我无法找到答案的问题。
问题是这样的。
echo "MESSI is injured!!";
header("Location:somepage.php");
采访者希望将标题和回显写在同一页面上。
我想知道它是怎么可能的。它应该给出一些像
这样的错误 已经发送的标题(输出从.....开始
是否真的可以将echo和header写入同一页面!!!
答案 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!!";
?>
应该做的伎俩