2012-03-06 12 views
0

警告:ヘッダー情報を変更できません - ヘッダーは既に送信されています(出力は...行14を開始しました)。これは通常、header()メソッドの前のecho文が原因ですが、header()自体の前にエコーが呼び出されることはありません。出力がどこで発生しているのか、なぜ現在は困っているのか、さらにこれを修正できるのかどうか教えてください。高度でヘッダー情報を変更できません - バッフル

<p>Lorem ipsum...</p> 

おかげで、

最大:

ライン14は、コンテンツのdiv内の行です。

<html> 
<head> 
<title></title> 
<!-- CSS --> 
<link ... /> 
</head> 
<body class="index not-admin"> 
    <div id="wrapper"> 
    <div id="logo"></div> 
     <div id="headerInvoice"> 
     </div> 
<div id="content"> 
    <form name="signup" action="" method="GET"> 
     <input name="email" type="email" placeholder="Email Address" /> 
     <input type="submit" title="Submit!"/> 
    </form> 
    <?php 
    if($_SERVER['REQUEST_URI'] == '/betas/') { 
     header('Location:http://betas.maxk.me'); 
    } 
    if (isset($_GET['email'])) { 
     $email = $_GET['email']; 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      $error = 'Email Address is invalid.'; 
     } 
     else { 
      mysql_connect('localhost', '...', '...'); 
      mysql_select_db('...'); 
      $email = mysql_real_escape_string($email); 
      if (mysql_num_rows(mysql_query("SELECT * FROM testers WHERE `email_address` = '$email'")) < 1) { 
       mysql_query("INSERT INTO `testers` (`email_address`,`accepted`) VALUES ('$email','0')"); 
       $error = !mysql_error()? 'Success!' : "We came across an error, please try again! " . mysql_error(); 
      } 
      else { 
       $error = 'Sorry, but you have already signed up! Please try emailing me to see if I need any testers through my <a href="http://maxk.me">homepage</a>.'; 
      } 
     } 
     echo $error; 
    } 
?> 
<br /> 
<a href="#">Login</a> 
</div>  
<div id="footer"> 
</div> 
</div> 
</body> 
</html> 
+0

あなたは最初の '<?php'タグを閉じていないことは知っていますか? – steveoh

答えて

1

問題はここにある:

if($_SERVER['request_URI'] == '/betas/') { 
    header('Location:http://betas.maxk.me'); 
} 

ファイル内の任意のHTMLはエラーになります後headerを呼び出します。 The PHP documentationでは、これについて深く説明しています。

0

これは具体的にはechoにのみ適用されるものではありません。 <?phpタグ以外のものも放出され、この問題が発生します。

0

リダイレクションコードは、その時点でHTMLが出力されているため、内部に埋め込まれていないファイルの先頭に配置する必要があります。

など。

<?php 
    if($_SERVER['REQUEST_URI'] == '/betas/') { 
     header('Location:http://betas.maxk.me'); 
    } 
?> 
<html> 
... 
0

この行の前にすべてのもの:

<?php 
    if($_SERVER['REQUEST_URI'] == '/betas/') { 
    header('Location:http://betas.maxk.me'); 

    // .. etc 

カウント出力として。 header()に電話をかけた頃には、すでにたくさんのコンテンツが出力されています。おそらくob_*の機能でそれをキャプチャすることができますが、もっと良い解決策があるはずです。

0

オープンしているPHPタグの前にあるHTMLはすべて、送信されるデータとしてカウントされるため、HTMLコードの上であってもファイルの先頭にPHPヘッダー文が必要です。

0

<?php ?>タグに含まれていないものは、echoと同じ方法で処理され、スクリプトで発生したとおりにブラウザに直接送信されます。 header呼び出し(またはHTTPヘッダーを含むもの)はすべて、最初のPHPブロックからのものでなければなりません。ファイルの先頭の空白もこの問題を引き起こすことに注意してください。

関連する問題