2014-02-15 37 views
0

我不知道爲什麼這段代碼扔了一個頭已經發送。我看了: How to fix "Headers already sent" error in PHPPHP錯誤頭已發送沒有空白或以前的回聲,打印

我仍然收到錯誤。它用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> 
+0

[如何解決]可能重複的頭已發送「錯誤在PHP中](http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php) –

回答

2

您究竟認爲以下是什麼?

<!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... 
+0

啊,我明白了。我是PHP的新手,並沒有意識到我可以將標籤放在主標籤之前。這是有道理的。謝謝。 – user1357015

+0

輸出是** ANYTHING **,它來自該腳本,無論是PHP的echo/print還是一些原始文本。如果您在腳本的頂部放置'',無關緊要。 html STILL被視爲輸出。 –

+0

對,所以我通過將中的所有內容移動到最頂端來實現它。然後我有<!Doctype html>等。再次感謝您的幫助。 – user1357015

1

所有的HTML,甚至標題將要把你的錯誤。取出標籤和所有HTML,然後重試。

1

標題之前沒有輸出發送意味着它真的!

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>Form Testing</title> 
    <meta charset="utf-8"/> 
    </head> 
    <body> 

在報頭前輸出。