![](/img/trans.png)
[英]Unusual 'Headers already sent' error. No whitespace nor changing of the header
[英]PHP error Header Already Sent with no whitespace or previous echo, print
我不確定為什么此代碼會引發已發送的標頭。 我看過: 如何解決PHP中的“標頭已發送”錯誤
並仍然出現錯誤。 它是用ANSI編碼的,我已經在notepad ++中輸入了它,似乎沒有空格...任何幫助將不勝感激。 錯誤來自第8行。
代碼如下:
<!DOCTYPE html>
<html>
<head>
<title>Form Testing</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
if($_POST['formSubmit'] == "Submit") {
$errorMessage = "";
$varName = htmlspecialchars($_POST['formName'], ENT_QUOTES, 'UTF-8');
$varMovie = htmlspecialchars($_POST['formMovie'], ENT_QUOTES, 'UTF-8');
if(empty($varName)){
$errorMessage .= "<li>You forgot to enter a name!</li>";
}
if(empty($varMovie)){
$errorMessage .= "<li> You forgot to enter a movie!</li>";
}
if(!empty($errorMessage)){
echo("<p> There was an error with your form: </p> \n");
echo("<ul>".$errorMessage. "</ul> \n");
}else{
$fs = fopen("mydata.csv","a");
fwrite($fs,$varName . ", " . $varMovie . "\n");
fclose($fs);
header("Location: ThankYou.html");
echo "Hello ".$varName.". Your favorite movie is: ".$varMovie."!";
exit;
}
}else{
echo "Welcome! Please enter your name and movie preference";
}
?>
<form action="index.php" method="post">
Which is your favorite movie?
<input type="text" name="formMovie" maxlength="50" value="<?=$varMovie;?>">
What is your name?
<input type="text" name="formName" maxlength="50" value="<?php echo $varName;?>">
<input type="submit" name="formSubmit" value="Submit">
</form>
</body>
</html>
您究竟認為以下內容是什么?
<!DOCTYPE html> <---output
<html> <---output
<head> <---output
<title>Form Testing</title> <---output
<meta charset="utf-8"/> <---output
</head> <---output
<body> <---output
<?php
...
header(...); // oops... output already performed...
所有的html,甚至標題也會引發您的錯誤。 取出標記和所有HTML,然后重試。
在標頭之前沒有輸出發送確實如此!
<!DOCTYPE html>
<html>
<head>
<title>Form Testing</title>
<meta charset="utf-8"/>
</head>
<body>
輸出在標頭之前發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.