我有一个'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的新手。请询问是否需要更多信息。
干杯!
答案 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()