2011-12-30 10 views
-1

私はあなたのすべては、このエラーを知っていると確信しています:は、メール()とのob_startとヘッダ()PHP()でヘッダー情報を変更することはできません

Warning: Cannot modify header information - headers already sent by (output started at /homepages/4/d374499247/htdocs/wp-content/themes/tyler/mail.php:1) in /homepages/4/d374499247/htdocs/wp-content/themes/tyler/mail.php on line 34

をそして、これはコードです:

if (strpos($email,'@') !== false) { 
    ob_start(); 
    mail($to,$subject,$message,$headers); 
    header("Location: thankyou.html"); 
    ob_end_flush(); } 

誰も助けをここに提供できますか?

<?php 
$to = '[email protected]'; 
$subject = 'בקשת הצטרפות לרשימת תפוצה'; 
$message = 
'בקשת הצטרפות לרשימת תפוצה' . "\n\n" . 
'שם: ' . $_REQUEST['name'] . "\n\n" . 
'דואר אלקטרוני: ' . $_REQUEST['email']; 
$email = $_REQUEST['email']; 
$headers = 'From: ' . $email . "\r\n" . 
      'Reply-To: ' . $email . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
$headers .= "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type: text/plain; charset=ISO-8859-1"; 
// server-validation 
if (strpos($email,'@') !== false){ 
    mail($to,$subject,$message,$headers); 
    header("Location: thankyou.html"); 
} else { 
    echo "<p class='error'>כתובת הדוא'ל שגויה.</p>"; 
} 
?> 
+0

質問は重複しているようですが、すべての解決策を活用しました。最終的な解決策は、コード化されたフォーマットを変更することでした。 – Amit

答えて

5

ページのエンコードを確認してください。おそらくUTF-8 +(UTF-8 signature

もしそうでなければ、空白をチェックする必要があります。

+0

UTF-8です。すべての空白をチェックしました... – Amit

+1

BOMを使用しないでUTF-8にエンコードして変換しました。 !@ $ 2 $$ 2 – Amit

1

それはある種の空白があります最も可能性がありますあなたのPHPタグの前に...ここで全体のコード:私はちょうどそれは)(情報を郵送して、場所のページ

EDITに行きたいです(非常に最初の行の出力staratsとして)。

header()の前には、空白や改行さえない出力はありません。

2

このエラーは、あなたが(最初に送信する必要があり)ヘッダーを送信しようとしている瞬間に、クライアントにデータをすでに送信していることに起因しています。

ほとんどの場合、というファイルの先頭にある空白は、です。あなたの現在のコード例に基づいて、正確にはが原因で問題が発生しているとは言い難いですが、ファイル内の行1にあるというエラーに基づいて、空白と言います。

関連する問題