代码之家  ›  专栏  ›  技术社区  ›  Wazy

采访问题:我们能在标题前有回音吗?

  •  12
  • Wazy  · 技术社区  · 16 年前

    我参加了PHP测试,他们问了一个我找不到答案的问题。

    问题是这样的。

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

    面试官想要两个 页眉 和 回声 写在同一页上。

    我想知道怎么可能,它会给一些错误,比如

    邮件头已由发送(输出开始于…..

    是否真的可以将echo和header写到同一页上?!!!

    2 回复  |  直到 10 年前
        1
  •  34
  •   codaddict    16 年前

    你可以用 Output Buffering 作为

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

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

        2
  •  3
  •   gmarcotte    16 年前

    只要所有的头调用都在发送任何非头输出之前就可以这样做(这包括诸如换行符/空白之类的麻烦事)。所以

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

    应该做这个把戏

    推荐文章