2016-06-11 10 views
1

私はフォームから値を取り出し、それらに電子メールで送信しようとしています。現在、$ toと$件の値だけを電子メールで送信していますが、ヘッダーまたは本文のコンポーネントは送信しません。どんな助けもありがとう。 フォームコード:私の知る限りのためにphpでフォームから値を引き出す

<body> 
    <div class="form-style-6" > 
    <h1> <img src="../assets/img/navBar_logo.png" style = " padding-        top: 20px; padding-right:30px; padding-left: 20px;"> Contact Manager</h1>  
    <form action="contactform_email.php" method="get" name="f1"> 
    <input type="text" name="name" placeholder="Name" /> 
    <input type="text" name="email" placeholder="Email" /> 
    <textarea name="message" placeholder=""></textarea> 
    <input type="submit" value="Send" /> 
    </form> 
    </div> 
</body> 

    and the PHP to pull the values 

    <?php 

    $to = "[email protected]"; 
    $subject = "Contact Manager"; 
    $headers = "Reply-To: ".$_GET['email']; 
    $body = "Name : ". $_GET['name']."\n". 
    "Email : ". $_GET['email']."\n". 
    "Message : ". $_GET['message']."\n". 

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

    ?> 

    <b>Thank you for applying online! The apartment manager will get back to you shortly.</b> 
+0

getの代わりにpostを使用してください。 – C2486

答えて

0

、あなたはテキストエリアの内容を取得するためにPOSTリクエストを使用する必要があります。あなたの要求が指しているURLに直接置かれているので、GET要求は、スペース区切りと改行された文に対しては機能しません。 POSTリクエストはHTTPリクエストにコンテンツが追加されるようにするので、実際に必要なすべての情報を引き出すことができます。

このコードは安全ではないため、クロスサイトスクリプティングが発生する可能性があります。それを処理する前に、常にユーザー入力を検証してください。

+0

私はPHPに新しいです。コードを安全にするためにはどのような手順をとるべきですか。入力のThxも。コードが正常に動作しました – Rich

+0

問題ありません。このウェブサイトをご覧ください:http://www.w3schools.com/php/php_form_validation.aspまた、あなたのコードを修正するのに役立つ答えをチェックしてください。他の人もそれから学ぶことができます! – Loek

0

は、あなたはメールが、それはそれを使用しない体変数への接触があるので

$body = "Name : ". $_GET['name']."\n". 
"Email : ". $_GET['email']."\n". 
"Message : ". $_GET['message']."\n". 

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

をしたいので、このようにコードを変更しない正しい構文を持っていますが、何かを行います。

$body = "Name : ". $_GET['name']."\n". 
"Email : ". $_GET['email']."\n". 
"Message : ". $_GET['message']."\n"; // notice I replaced the dot 

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

これを引き起こしたメッセージの末尾にはドットがあります。電子メールを送信することは非常に複雑であるので 方が良いphpmailerまたはswiftmailer

0

利用POST

<form action="contactform_email.php" method="POST" name="f1"> 

とPHPで

<?php 
if(isset($_POST)){ 
$to = "[email protected]"; 
$subject = "Contact Manager"; 
$headers = "Reply-To: ".$_POST['email']; 
$body = "Name : ". $_POST['name']."\n". 
"Email : ". $_POST['email']."\n". 
"Message : ". $_POST['message']."\n". 

    mail($to, $subject, $body, $headers); 
    } 
    ?> 
のようなライブラリを使用して、代わりにGETの

をPOSTを使用することができます

0

私は、POSTとコーダーの不安定さを使用することについての以前の回答に同意しますが、あなたが最後のフォームフィールドの後にドットを持つことになります。これは問題であり、次の要素を連結しようとします。この場合はメール関数であり、$ body要素の終了セミコロンはありません。:

ドットを、連結した$ bodyステートメントの最後の部分のセミコロンに置き換えます。 - これは正しい道にあなたを設定する必要があり<?php print_r($_POST); ?>

"Message : ". $_GET['message']."\n"; 
0

は、このラインを持っている、ちょうどテストするために、=「ポスト」フォームに属性、およびPHPでメソッドを追加...これを行います。

関連する問題