-2

我有一个文件'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的新手。请询问是否需要更多信息。

干杯!

4

3 回答 3

0

header()如果已经将任何内容输出到浏览器,则无法调用。ob_start()您可以在代码的开头避免此问题,然后再将ob_flush()输出发送到哪里。这将缓冲所有输出到浏览器,直到ob_flush()被调用。

这也意味着 header() 重定向,或者只要它们发生在之前就可以进行其他更改ob_flush()

于 2013-04-18T18:56:38.213 回答
0

在发送 header() 之前,您不能向浏览器输出内容。只要看看http是如何工作的,你就会明白:)

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

于 2013-04-18T18:52:09.157 回答
0

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

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

于 2013-04-18T18:53:08.007 回答