2009-08-12 23 views
1

私は単純な注文システムを構築しており、フォームが提出された後で電子メールを送信したいと考えています。私のPHPコードは次のようになります。「...送られたメッセージ」の前に、私は非常に先頭に$ ITEM1文字列の値を取得する電子メールの本文を除いて、正常に動作します電子メール本文の追加テキスト

$name=$_POST["orderName"]; 
$company=$_POST["orderCompany"]; 
$email=$_POST["orderEmail"]; 
$phone=$_POST["orderPhone"]; 
$headers = "From: $email\r\n" . 

$item1=$_POST["orderItem1"]; 
$qty1=$_POST["orderQty1"]; 

$item2=$_POST["orderItem2"]; 
$qty2=$_POST["orderQty2"]; 

$item3=$_POST["orderItem3"]; 
$qty3=$_POST["orderQty3"]; 

$date = date("l, F j Y, G:i") ; 

$message="Message sent: $date \n\n 

Name: $name\n 
Company: $company\n 
Email: $email\n 
Phone: $phone\n\n 

Order:\n 
$item1 \tx$qty1\n 
$item2 \tx$qty2\n 
$item3 \tx$qty3\n"; 

mail("[email protected]", "Order", $message, $headers); 

- ちょうど私が$メッセージに追加したように(これは私が見る限りではありません)。あなたはこれを持って

答えて

6

$headers = "From: $email\r\n" . 

あなたはこの代わりにしたい:

$headers = "From: $email\r\n"; 

をそうでない場合、あなたは($item1のための定義であることを起こる)次の行に来るものは何でも連結しています$headersの末尾に移動します。これは技術的には有効ではありませんが(コンテンツはメッセージのヘッダーの一部であり、本文ではありません)、ほとんどの電子メールクライアントは効果的に肩をすくめて表示します。

+0

+1私はそれだけです。 – karim79

+1

ありがとう、それは私の非常にダムだった。 –

1

POST変数にいくつかのサニタイズを加えてから、プロダクションでこれを実行してください。

さんがここで見てみましょう:"orderEmail"が含まれているところ

$email=$_POST["orderEmail"]; 
$headers = "From: $email\r\n"; 
mail("[email protected]", "Order", $message, $headers); 

私はPOSTリクエストを送信することができます:

"[email protected]\r\n 
From: [email protected]\r\n 
BCC: [email protected], [email protected]" 

などとあなたの無害なフォームは私が全世界にスパムを送信するための素晴らしい仕事です。 This siteあなたの所在地:

if (ereg("[\r\n]", $name) || ereg("[\r\n]", $email)) { 
    [... direct user to an error page and quit ...] 
} 
+0

私はそれをします、警告のおかげで! –

関連する問題