2017-07-27 4 views
0

これは何度も尋ねられていますが、アマチュアであると確信しています。 。 基本的なPHPとブートストラップで提出するフォームを取得できませんでした。有効ではあるが転記はありません

この

電子メールが

<?php 
$nameErr = $emailErr = $phoneErr = $messageErr = ""; 
$name = $email = $phone = $message = ""; 

$to = "[email protected]"; 
$from = "[email protected]"; 

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

$subject = "New submission"; 
$body = "New Loan Request: \n $message"; 

mail(to,from,subject,headers,body) 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["name"])) { 
    $nameErr = "Name is required"; 
    } else { 
    $name = test_input($_POST["name"]); 
    } 

    if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
    } else { 
    $email = test_input($_POST["email"]); 
    } 

    if (empty($_POST["phone"])) { 
    $phoneErr = ""; 
    } else { 
    $phone = test_input($_POST["website"]); 
    } 

    if (empty($_POST["message"])) { 
    $messageErr = ""; 
    } else { 
    $message = test_input($_POST["message"]); 
    } 

} 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = test_input($_POST["name"]); 
    $email = test_input($_POST["email"]); 
    $website = test_input($_POST["phone"]); 
    $comment = test_input($_POST["message"]); 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 

、フォームのHTMLを削除して、私はHTMLページに含めていますPHPのフォームで...検証が働いているが、私はに何かを得ることができませんよ送信後に投稿するか、または私が使用している電子メールアドレスに提出してください。

    <form name="sentMessage" id="contactForm" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
         <div class="row"> 
          <div class="col-md-6"> 
           <div class="form-group"> 
            <input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name."> 
            <p class="help-block text-danger"></p> 
           </div> 
           <div class="form-group"> 
            <input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address."> 
            <p class="help-block text-danger"></p> 
           </div> 
           <div class="form-group"> 
            <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number."> 
            <p class="help-block text-danger"></p> 
           </div> 
          </div> 
          <div class="col-md-6"> 
           <div class="form-group"> 
            <textarea class="form-control" placeholder="Your Scenario *" id="message" required data-validation-required-message="Please enter a message."></textarea> 
            <p class="help-block text-danger"></p> 
           </div> 
          </div> 
          <div class="clearfix"></div> 
          <div class="col-lg-12 text-center"> 
           <div id="success"></div> 
           <button type="submit" class="btn btn-primary btn-xl" value="submit" name="submit" id="submit">Send Message</button> 
          </div> 
         </div> 
        </form> 

答えて

0

構文エラーがあるようです。

右ここ

mail(to,from,subject,headers,body) 

はセミコロンが欠落してい

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

であるべき。

私は、メール関数呼び出しの変数がどれも正しいとは無視します...ヒント...ヒント...彼らはすべて$が欠落しています....そうですね、それらはそれぞれ構文エラーです。

...ええと...

<?php 
    ini_set('display_errors', 1); 
    error_reporting(-1); 

をエラー報告をオンに有益なあなたも、それが電子メールの前に行うのならば検証が最適に動作していることがわかりますすることができます。 variables(私がこの用語をゆるやかに使うことができるのであれば)のほとんどは、その中に何かを持っています。

$name = $email = $phone = $message = ""; 

そして、これは少し私をweirdingれます。ここで

UPDATE 私はそれを行うような方法でいくつかのことをクリーンアップ。私は終わるPHPタグを使用することはありません

<?php 
    if(isset($_POST['submit'])){ 

     $errors = []; 
     $input = []; 

     foreach($_POST as $key => $value){ 
      $value = htmlspecialchars(stripslashes(trim($value))); 

      switch($key){ 
       case 'submit': 
        continue; //ignore 
       break; //break is not really needed here, but whatever ... 
       // case 'email': validate email etc. 
       // break; 
       default: 
        if(empty($value)){ 
         $errors[$key] = ucfirst($key).' is required.'; 
        }else{ 
         $input[$key] = $value; 
        } 
       break; //break is not really needed here, but whatever ... 
      } //end switch      
     }//end foreach 

     $to = "[email protected]"; 

     $headers = "From: {$input['email']} \r\n"; 
     $subject = "New submission"; 
     $body = "New Loan Request: \n {$message}"; //message is undefined 

     if(empty($erros)){ 
      mail($to,$input['from'],$subject,$headers,$body); 
     }else{ 
      //do something with $errors 
     } 

    } //end if submit 

    //?> 

ファイルが(私は決してしない)HTMLとPHPを持っていない限り、終了タグはとにかくオプションです。閉じたタグの後に改行を入れるなど、意図しない出力を引き起こす可能性があります。これは、ファイルのダウンロード時に実際に迷惑をかける可能性があります。

しかし、それは私だけで、私はどのようにそれを行うのですか?誰か他の人が違うことを教えてくれるかもしれません。

私はこの例を作成しましたが、これは配列を使ってどれだけうまくいくかを示しています。だから、後でアドレスフィールドに追加したいと思ったら考えてみてください。 streetのように、zipstatecountycountryまたは何を持っていますか?

これを自動化されていない方法で実行すると、各フィールドに多くを追加する必要があるため、コードが成長して成長します。データを使用する前に、コードごとに6行のコードを追加します。配列を使用する場合は、特別な要件がある場合はswitchステートメントに追加するだけです。

私はすべての時間にすべてのコードを追加することを怠惰にしています....

+0

あなたの助けになりました!私はそれを動作させるHTMLでインラインで実行するが、ページ上ではinclude_once関数ではないようだ。メッセージはメッセージや電子メールアドレスなしで表示されましたが、 – Jesse730

関連する問題