警告:无法修改标题信息 - 标题已发送(输出开始于 C:\xampp\htdocs\project\advancebrowsing.php:132)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15894677/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\project\advancebrowsing.php:132)
提问by user2127632
I'm doing a project for my school and I wrote this page but for some reason I get 2 warnings in the end about header info already sent on line 132 but on line 132 all I have is the php tag
我正在为我的学校做一个项目,我写了这个页面,但由于某种原因,我最后收到 2 个警告,关于标题信息已经在第 132 行发送,但在第 132 行,我只有 php 标签
I would really appreciate it if I can get some help, I wrote this code in 1 hour but trying to solve this problem for the past 2 hours ... Finally got tired and decided to ask it
如果我能得到一些帮助,我真的很感激,我在 1 小时内写了这段代码,但在过去的 2 小时内试图解决这个问题......终于累了,决定问它
here is my code
这是我的代码
<html>
<body>
<form method="POST">
Browse By Author's name starting with :<select name="author">
<option value="">--Select--</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="H">H</option>
<option value="I">I</option>
<option value="J">J</option>
<option value="K">K</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="O">O</option>
<option value="P">P</option>
<option value="Q">Q</option>
<option value="R">R</option>
<option value="S">S</option>
<option value="T">T</option>
<option value="U">U</option>
<option value="V">V</option>
<option value="W">W</option>
<option value="X">X</option>
<option value="Y">Y</option>
<option value="Z">Z</option>
</select><br><br>
Browse by Title start with :<select name="title">
<option value="">--Select--</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="H">H</option>
<option value="I">I</option>
<option value="J">J</option>
<option value="K">K</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="O">O</option>
<option value="P">P</option>
<option value="Q">Q</option>
<option value="R">R</option>
<option value="S">S</option>
<option value="T">T</option>
<option value="U">U</option>
<option value="V">V</option>
<option value="W">W</option>
<option value="X">X</option>
<option value="Y">Y</option>
<option value="Z">Z</option>
</select><br><br>
Browse by Publisher start with :<select name="publisher">
<option value="">--Select--</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="H">H</option>
<option value="I">I</option>
<option value="J">J</option>
<option value="K">K</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="O">O</option>
<option value="P">P</option>
<option value="Q">Q</option>
<option value="R">R</option>
<option value="S">S</option>
<option value="T">T</option>
<option value="U">U</option>
<option value="V">V</option>
<option value="W">W</option>
<option value="X">X</option>
<option value="Y">Y</option>
<option value="Z">Z</option>
</select><br><br>
Browse by Genre:<select name="genre">
<option value="">--Select--</option>
<option value="fiction">Fiction</option>
<option value="non-fiction">non-fiction</option>
<option value="sciencefiction">science fiction</option>
</select><br><br>
Book Award: <select name="bookaward">
<option value="">--Select--</option>
<option value="1">Arthur Ellis Award</option>
<option value="2">Booker Prize</option>
<option value="3">Canadian Jewish Book Awards</option>
<option value="4">Commonwealth Writers Prize</option>
<option value="5">Dayne Ogilvie Prize</option>
<option value="6">Edna Staebler Award</option>
<option value="7">Geoffrey Bilson Award</option>
<option value="8">Gerald Lampert Award</option>
<option value="9">Griffin Poetry Prize</option>
<option value="10">Governor General's Award</option>
<option value="11">Commonwealth Writers Prize</option>
<option value="12">Journey Prize</option>
<option value="13">Lorne Pierce Medal</option>
<option value="14">Wright Awards</option>
<option value="15">Milton Acorn People's Poetry Award</option>
<option value="16">Matt Cohen Award: In Celebration of a Writing Life</option>
<option value="17">Norma Fleck Award</option>
<option value="18">RBC Bronwen Wallace Award for Emerging Writers</option>
<option value="19">Pat Lowther Award</option>
<option value="20">Rogers Writers' Trust Fiction Prize</option>
<option value="21"> Wright Awards</option>
<option value="22">Writers' Trust Distinguished Contribution Award</option>
<option value="23">Writers' Trust Engel/Findley Award</option>
<option value="24">Winterset Award</option>
<option value="25">Hilary Weston Writers' Trust Prize for Nonfiction</option>
<option value="26">Geoffrey Bilson Award</option>
</select><br><br>
<input type="submit" name="submit" value="Browse">
</form>
<?php
error_reporting(E_ERROR|E_WARNING);
$con = mysql_connect("localhost", "root", "");
if (!$con) {
die('Connection Failed: ' . mysql_error());
}
if (mysql_select_db("elibrary",$con)){
if ($_POST['submit']){
$author = $_POST['author'];
$title = $_POST['title'];
$genre = $_POST['genre'];
$publisher= $_POST['publisher'];
$award= $_POST['bookaward'];
if ($author != "") {
$author1 = "author";
$like1 = "like";
$and1 = "and";
}
if ($title != "") {
$title1= "title";
$like2 = "like";
$and2 = "and";
}
if ($genre != "") {
$genre1="genre";
$like3 = "like";
$and3 = "and";
}
if ($publisher != "") {
$publisher1= "publisher";
$like4 = "like";
$and4 = "and";
}
if ($award != "") {
$award1= "bookawards.id";
$like5 = "=";
$and5 = "and";
}
$browse = ("select * from books,bookawards,bookrelations where books.id = bookrelations.bookid and bookawards.id = bookrelations.bookawardsid '".$and1."' '".$author1."' '".$like1."' '".$author."%' '".$and2."' '".$title1."' '".$like2."' '".$title."%' '".$and3."' '".$genre1."' '".$like3."' '".$genre."%' '".$and4."' '".$publisher1."' '".$like4."' '".$publisher."' '".$and5."' '".$award1."''".$like5."''".$award."'");
setcookie("browse",$browse);
header("Location: shop.php");
exit();
}
}
mysql_close();
?>
</body>
</html>
回答by kwelsan
You need to move your PHP code to top of the page (before HTML).
您需要将 PHP 代码移动到页面顶部(在 HTML 之前)。
For more detailed answer:
更详细的回答:
回答by Hanky Panky
header()
will not work after you have already output so much HTML. It has to be called before any output is sent to browser
header()
在您已经输出了这么多 HTML 之后将无法工作。必须在任何输出发送到浏览器之前调用它
According to PHP Manual
根据PHP 手册
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通的 HTML 标记、文件中的空行还是来自 PHP。使用 include 或 require 函数或其他文件访问函数读取代码,并且在调用 header() 之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时存在同样的问题。
回答by epicdev
When you write to the output with echo
or any function, PHP has already sent the response body.
Which means that you cannot send headers after.
当您使用echo
或 任何函数写入输出时,PHP 已经发送了响应正文。这意味着您不能在之后发送标头。
The same apply for html, the html will be displayed and the output has already started so you cannot call header()
after.
同样适用于html,html会显示出来,并且输出已经开始,不能调用header()
了。
The same also apply to closing tags ?>
. If you have any single space after the closing tag, it will be ignored by the parser (because outside of the closing tag) and the output will start.
这同样适用于结束标签?>
。如果结束标记后有任何单个空格,解析器将忽略它(因为在结束标记之外)并且输出将开始。
So the best solution is to ommit the closing tags, because the parser doesn't need them.
所以最好的解决方案是省略结束标记,因为解析器不需要它们。
It's like if you were sending an email and add the address after.
就像您发送电子邮件并在之后添加地址一样。