2017-02-27 8 views
2

送信者が自分のフォームのコメントボックスに「 」と入力して送信者の名前を確認できたら、メッセージを受け取ることができます。しかし、電子メールアドレスが空白のため、 というメールに返信することはできません。メールフォームに送信者のメールアドレスが含まれていません

次のようにPHPは次のとおりです。mail()機能の

<?php 

$name=$_POST['name']; 
$telephone=$_POST['telephone']; 
$email=$_POST['email']; 
$date=$_POST['date']; 
$location=$_POST['location']; 
$comments=$_POST['comments']; 
$to="[email protected]"; 
$subject="new mesage"; 

mail($to,$subject,$comments,"From:".$name); 
echo "Your message has been sent. Thank you for your enquiry"; 

?> 
+0

[php docs](http://php.net/manual/en/function.mail.php)の警告に注意してください。「additional_headersにはメールヘッダインジェクション保護がありません。指定されたヘッダは安全で、ヘッダのみを含んでいます。つまり、複数の改行を入れてメール本文を起動しないでください。これについての詳細は、この[question/answer](http://stackoverflow.com/questions/11952473/proper-prevention-of-mail-injection-in-php?answertab=votes#tab-top)を参照してください。 – Theo

答えて

1

今は、送信者のメールアドレス($email)を入力するフィールドに$nameという変数を入力しています。両方を使うことはできますが、残念ながら、PHPのメール機能はあなたのためにやっていないので、一緒にハックする必要があります。あなたは、このように両方を追加することができます

mail($to, $subject, $comments, 'From: "' . $name . '" <' . $email . '>') 

注意を、あなたは少しdiceyを得ることができますが、あなたがより複雑にする必要を避けるために'を使用することができ、文字列、内部の二重引用符を含める必要が。

$nameが「Bob」で、$emailが「bob[email protected]」の場合、これらはすべて'From: "Bob" <[email protected]>'のようになります。関連項目:this question on how to format email headers

1

第四引数には、追加のヘッダーを受け入れました。たとえば、

$headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email . "\r\n"; 

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

ヘッダーが必要です。Reply-Toヘッダーが必要です。

関連する問題