2017-08-17 16 views
1

私はHTMLフォームを作成しようとしています。PHP検証フォームがメールを送信しない

私のフロントエンドのコードはこれです: 個人用サイト:アクションが戻って私のsummuryと、以下のURLを持つ空白のページをリターンをトリガしたときにそう

<?php 

$nameErr = $emailErr = $commentErr = $subjectErr = ""; 
$name = $email = $comment = $subject = ""; 
$feedbackmsg = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (isset($_POST['submit'])) { 
     if (empty($_POST["name"])) { 
      $nameErr = "*Name is required"; 
     } else { 
      $name = validate($_POST["name"]); 
      if (!preg_match("/^[a-zA-Z ]*$/", $name)) { 
       $nameErr = "*Only letters and white space allowed"; 
      } 
     } 

     if (empty($_POST["subject"])) { 
      $subjectErr = "*Subject is required"; 
     } else { 
      $subject = validate($_POST["subject"]); 
      if (!preg_match("/^[a-zA-Z ]*$/", $subject)) { 
       $SubjectErr = "*Only letters and white space allowed"; 
      } 
     } 

     if (empty($_POST["email"])) { 
      $emailErr = "*Email is required"; 
     } else { 
      $email = validate($_POST["email"]); 
      if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { 
       $emailErr = "*Invalid email format"; 
      } 
     } 

     if (empty($_POST["comment"])) { 
      $commentErr = "*Write Me something"; 
     } else { 
      $comment = validate($_POST["comment"]); 
     } 

     if (empty($nameErr) && empty($emailErr) && empty($commentErr)) { 
      $to = "[email protected]"; 
      $subject = $name; 
      mail($to, $subject, $comment, $email); 
      $feedbackmsg = "Your message has sent,<br> thanks"; 
     } 
    } 
} 

<form action="/form_validation.php" target="_blank"> 
    <p><input class="w3-input w3-padding-16" type="text" placeholder="name" required name="name"></p> 
    <p><input class="w3-input w3-padding-16" type="text" placeholder="email" required name="email"></p> 
    <p><input class="w3-input w3-padding-16" type="text" placeholder="subject" required name="subject"></p> 
    <p><input class="w3-input w3-padding-16" type="text" placeholder="comment" required name="comment"></p> 
    <p> 
     <button class="w3-button w3-light-grey w3-padding-large" type="submit"> 
      <i class="fa fa-paper-plane"></i> SEND MESSAGE 
     </button> 
    </p> 
</form> 
<p><?php echo $feedbackmsg;?></p> 

とファイルform_validation.phpはこれを含んでいます.com/form_validation.php?name = anastasios & email = myemail%40hotmail.com &件名= mysubject &コメント= ena + dio + ena + dio

私はこのshoyldが正常だと思います。それは正常に動作する場合、なぜ私は電子メールを持っていないのですか? 考えていますか?おかげで、あなたのロジックのすべてがこの条件に包まれて

答えて

0

たくさん:あなたはGETを使用しているので(コードがそれらになった場合は、そこだけでなく、その後の状況)

if ($_SERVER["REQUEST_METHOD"] == "POST") 

そして、この条件はfalseですPOSTの代わりに

<form action="/form_validation.php" target="_blank" method="post"> 
+0

ああそうでも、私はurl mysite.com/form_validation.phpで新しい空白のページを取得し、まだメールを取得しません。 "action =" form_validation "の代わりに 私はaction =" <?php mail()?> "を試み、電子メールを取得していますが、要約はありません。もちろん、私はそのような方法で電子メールを受け取るのは妥当ではありませんが、私のフォームが確実に動作するように他の方法を試みるだけでした。 – fxp869

+0

@ fxp869:いくつかのデバッグを行います。何も出力しないので、ページは空白です。 (またはエラーがあり、エラー報告がオンになっていないため)PHPログをチェックし、ロジックをテストするために何らかの出力を追加します。あなたのコードは完全に動作するか、仕事。あなたはそれをデバッグすることができます。 (そして、 'action =" <?php mail()?> "'はあなたが期待しているようなものを遠隔操作しません。 – David

-1

ご希望の場合はPOSTメソッドをご指定ください。これに変更する

<p><input class="w3-input w3-padding-16" type="emiail" placeholder="email" required name="email"></p> 
関連する問題