2016-06-25 22 views
-1

で開始し、私はこのメッセージを得たPHP - ヘッダー情報を変更することはできません - すでに(出力によって送られたヘッダは、私はPHPで働いています

ヘッダー情報を変更することはできません

- すでにによって送られたヘッダを(出力 が

で開始この回答 from Stackoverflowに基づいて

<?php 
    if (condition) { 

     if (condition) { 
      //Statement 
     } 

     $to = $_POST['email']; 
     $subject = "Registration Confirmation"; 

     $message = ' 
       <html> 
        <head> 
         <title>'.$subject.'</title> 
        </head> 
       </html> 
      '; 

     // Always set content-type when sending HTML email 
     $headers = "MIME-Version: 1.0" . "\r\n"; 
     $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

     // More headers 
     $headers .= 'From: <[email protected]>' . "\r\n"; 

     mail($to,$subject,$message,$headers); 

     header('Location: reset.php?username='.$username); 
     exit(); 

    }else { 
     //statement 
    } 

、私は思う:

このようなコードを実行した後変数$messageのHTMLコードからエラーが発生しています。エラーを回避するために、変数の内容をどのように変更できるかはわかりません。

この問題を解決するのに役立ちます。

+0

'場合(メール($ $対象に、$メッセージ、$ヘッダ)){ ヘッダー( '場所:reset.php?username ='。$ username); exit(); } ' –

+0

このスクリプトは別の場所から呼び出していますか?ヘッダーを変更しようとする前に、htmlを書くか、PHPで何かをエコーすると、このエラーが発生します。 – iedoc

+0

@Anant、2番目の 'if condition'の後ろにヘッダーを置き、' exit() 'を関数 'mail()'? – Prince

答えて

1

:任意の実際の出力は、通常のHTMLタグ、ファイル内の空白行によって、またはPHPのいずれかから、送信される前に

は(そのヘッダーを忘れないでください)が呼び出されなければなりません。

したがって、header('Location: reset.php?username='.$username);を他の種類の出力より先に移動してください。ところで

は、この質問にはすでに答えた:

+0

応答のおかげで、2番目の 'if condition'の後ろにヘッダーを置き、' mail() 'の後に' exit() 'を置くことが可能ですか? – Prince

+0

'header()'が何かを出力する前に* nothing *であることを確認してください。だからHTMLもエラーメッセージもなく、 'header()'の前に何も印字する必要はありません。ページの完全なコードを投稿したものはありますか?何か問題があれば、完全なコードを投稿してください。 – Sylter

+0

ありがとうございました。 – Prince

1

ob_start();

htmlでも出力されているので、これが起こっているので、ob_start();を使用してください。コードの上に、これがあなたの問題を解決することを願ってください。 php documentationから

関連する問題