在php中使用include和header的麻烦。 “无法修改标题信息”

时间:2013-04-18 18:49:22

标签: php header include

我有一个'header.php'文件,里面有一个搜索文本框。另一个名为'myPage.php'的文件包含'header.php'。 在header.php中

 if (isset($_POST['Searchbutton'])){ // this will execute when the search button is clicked.
 $target = $_POST['searchtext'];
 header("Location: searchresult.php?text=" . $target); // line #8
 }

在myPage.php中

<?php
include("header.php");
?>

当我使用“myPage.php”并使用搜索选项时,我收到错误消息

Cannot modify header information - headers already sent by (output started at myPage.php:3) in header.php on line 8.

任何人都可以帮助我理解这个概念。我是php的新手。请询问是否需要更多信息。

干杯!

3 个答案:

答案 0 :(得分:0)

在发送标题()之前,您无法向浏览器输出内容。看看http如何工作,你会明白:)

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Client_request

答案 1 :(得分:0)

简而言之,你要做的事情没有意义。发送页面时,您还会发送HTTP标头。您正在尝试发送页面,然后发送一个标题,将客户端重定向到另一个页面。

这就是您收到标头已发送错误的原因。由于您只是尝试发布表单,因此没有理由尝试重定向...只需让表单的目标成为处理搜索条件的脚本。

答案 2 :(得分:0)

如果已经向浏览器输出任何内容,则无法调用

header()。您可以在代码开头使用ob_start(),然后在ob_flush()发送输出的地方避免此问题。这将缓冲所有输出到浏览器,直到调用ob_flush()

这也意味着header()重定向,或者只要它们出现在ob_flush()

之前就可以进行其他更改