2017-01-10 8 views
0

私は何が間違っているのか分かりません。私は私の連絡先フォームを作るためにPHPを使用しようとしています。ここでは、コードは次のようになります。PHPを使ってフォームデータを送信しても、送信しない

<?php 
if($_POST["submit"]) { 
    $recipient="[email protected]"; 
    $subject="Form to email message"; 
    $Name=$_POST["Name"]; 
    $Email=$_POST["Email"]; 
    $Reason=$_POST["Reason"]; 
    $Message=$_POST["Message"]; 

    $mailBody="Name: $Name\nEmail: $Email\n\n$Reason $Message"; 
    mail($recipient, $subject, $mailBody, "From: $Name <$Email>"); 
    $thankYou="<p>Thank you! Your message has been sent.</p>"; 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="QDPicks.css"> 
     <title> QDPicks</title> 
    </head> 
    <body> 
     <header> 
      <a class="btn btn-primary btn-lg" href="QDPicks.html" role="button">Home</a> 
      <a class="btn btn-sample btn-lg active pull-right" href="QDPicksContactUs.html" role="button">Contact Us</a> 
      <a class="btn btn-sample btn-lg pull-right" href="QDPicksCompany.html" role="button">Company</a> 
      <a class="btn btn-sample btn-lg pull-right" href="QDPicksProducts.html" role="button">Products</a> 
     </header> 
     <header><p1>Contact Us</p1></header> 
     <form method="post" action="QDPicksContactUs.php > 
      <div class="form-group"> 
       <label for="InputReason1"></label> 
       <input type="text" class="form-control" id="InputReason1" name="Name"> 

       <label for="exampleInputEmail1"></label> 
       <input type="email" class="form-control" id="exampleInputEmail1" name="Email"> 

       <label for="InputReason1"></label> 
       <input type="text" class="form-control" id="InputReason1" name="Reason"> 
      </div> 
      <div class="form-group"> 
       <textarea type="text" class="form-control" rows="3" name="Message">  </textarea> 
       <p3 class="help-block">Explain on the reason for contact.</p3> 
      </div> 
      <div class="checkbox"> 
      </div> 
      <button type="submit" class="btn btn-default">Submit</button> 
     </form> 
     <script src="https://code.jquery.com/jquery-1.12.0.min.js"></script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"> </script> 
    </body> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 

    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 

    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 

</html> 

私は自分の情報を入れて、それが電子メールを送信したが、何のメールが入って来ていないようにデータが消える提出打つときも申し訳ありません - コードの一部を切断してしまったいくつかの理由。それは重要な部分ではありません。

+0

localhostで作業していますか?エラーは何ですか? –

+0

送信ボタンをクリックしたときにポストパレメータを取得していることを確認しましたか? – Sona

+0

コードにメモ帳を使用しないでください。 PHPStormのようなIDEを考えてみましょう – CodeGodie

答えて

0

あなたはあなたのコードは、この変更後に働くかもしれませQDPicksContactUs.php

このライン

<form method="post" action="QDPicksContactUs.php" > 

であなたのタグを置き換え "= アクションの後" を置くことを忘れ

0

まず第一に二重引用符がありません

<form method="post" action="QDPicksContactUs.php > 

また、同じページに投稿する場合は、アクションにページ名を付ける必要はありません。

のようなタグに名前を追加します。?最後にif(isset($_POST["submit"]))

if($_POST["submit"])を置き換えるまた、あなたがローカルホスト上でコードを実行している

<button name="submit" type="submit" class="btn btn-default">Submit</button> 

+0

私のコードはgodaddyでホストされており、それはcpanelを使用します –

+0

Youre fix worked!ありがとうございました! –

+0

それはいいです。それを解決済みとしてマークしてください。 –

0

電子メールを送信するコードに注目しましょう。私のコメントを読んでください。

if($_POST["submit"]) { 

    // you probably shouldn't post a real email here on SO 
    $recipient="[email protected]"; 
    $subject="Form to email message"; 

    // you should validate this field if you are sticking it in your mail headers as you do below. 
    $Name=$_POST["Name"]; 

    // you should DEFINITELY validate this before trying to send mail 
    $Email=$_POST["Email"]; 
    $Reason=$_POST["Reason"]; 
    $Message=$_POST["Message"]; 

    $mailBody="Name: $Name\nEmail: $Email\n\n$Reason $Message"; 

    // first, you don't even bother checking to see if this returns TRUE 
    // secondly, because you don't validate $Name or $Email, this command is vulnerable to Mail Header Injection 
    mail($recipient, $subject, $mailBody, "From: $Name <$Email>"); 

    $thankYou="<p>Thank you! Your message has been sent.</p>"; 
} 

だからあなたのフォームは、あなたが何かを検証しませんので、あなたが実際に成功した結果を返さmailコマンドのを確認していない悪いです、そしてそれはMail Header Injectionに対して脆弱です。

まず、$名を検証:

$Name=$_POST["Name"]; 
    if (!preg_match('/^[a-zA-Z_\-]+$/', $Name)) { 
     die("sorry! Name is not valid"); 
    } 

第二に、$メール

$Email = $_POST["Email"]; 
    if (!filter_var($Email, FILTER_VALIDATE_EMAIL)) { 
     die("Sorry, email is not valid"); 
    } 

第三の検証、お使いのメール機能の結果を確認してください。 FALSEを返したり、空の値を返すと、何かが間違っていました。しかし、メール管理者にメールログを見るように依頼することはできません。

戻り、メールが正常に配信のために受け入れられた場合TRUEFALSEそうでない場合:

if (!mail($recipient, $subject, $mailBody, "From: $Name <$Email>")) { 
     die("OH NO. The mail function did not work."); 
    } 

は、メール機能にmanualを読んで考えてみましょう。

メールが配信されたという理由だけで、メールが実際に目的の場所に届くわけではありません。

関連する問題