0

この質問が何度も寄せられていることは知っていますが、主にワードプレスを扱っているため、私の状況に関連する解決策が見つからないようです。

ここに私のメールフォームがあります:

 <?php 
 $to = "email@gmail.com" ; 
 $from = $_REQUEST['email'] ; 
 $name = $_REQUEST['name'] ; 
 $headers = "From: $from"; 
 $subject = "Contact Submission From domain.com"; 

 $fields = array(); 
 $fields{"name"} = "name"; 
 $fields{"title"} = "title"; 
 $fields{"email"} = "email"; 
 $fields{"phone"} = "phone"; 
 $fields{"prefer_phone"} = "pref_phone"; 
 $fields{"prefer_email"} = "pref_email";
 $fields{"message"} = "message";
 $fields{"referral"} = "referral"; 

 $body = "Here is their submitted message:\n\n"; foreach($fields as $a => $b){  $body .= sprintf("%20s: %s\n\n",$b,$_REQUEST[$a]); } 

 if($from == '') {print "You have not entered an email, please hit back and resubmit";} 
 else { 
 $send = mail($to, $subject, $body, $headers);

 if($send) 
 {header( "Location: http://www.domain.com/sent.html" );} 
 else 
 {print "We encountered an error sending your mail, please notify support@domain.com";} 
 }
 ?>

メールは問題なく送信されますが、リダイレクトのタイトル エラーが表示されます。

警告: ヘッダー情報を変更できません - 23 行目の /home/wills5/public_html/send_email.php の (/home/wills5/public_html/send_henry.php:1 で開始された出力) によって既に送信されたヘッダー

編集:どうやら1行目の前に空白がありました、ありがとう。

エラーが行 1 にあるとメッセージに示されている場合は、通常、先頭の空白、テキスト、または HTML が冒頭の前にあります。

4

1 に答える 1

5

タグの横または上に空白がある可能性があります<?php。または、HTML またはその他のタイプの「出力」があります。たぶんバイトオーダーマーク

<?php

echo "Correct";
// or vvv, but not with echo
// header("Location: http://www.example.com/");

?>

(space)
(space) <?php

echo "Incorrect";
header("Location: http://www.example.com/");

?>

<div align="center">Text</div>
<?php

echo "Incorrect";
header("Location: http://www.example.com/");

?>

脚注: Gavin の提案によると、私は次のように引用します: 「この理由により、クラス ファイルの終了 php タグを省略するのは良い形式です。これにより、インクルード ファイルの後に不用意に空白が含まれるのを防ぐことができます。」


于 2013-08-08T22:38:20.090 に答える