2017-12-01 12 views
0

私はPHPを初めて使用しており、私のお問い合わせフォームに問題があります。私のフォームで "Submit"を押すと、他のサイトへのスキップ(どこかどこで起こったのかわからない)があり、条件はPHPコードでチェックされません。さらに、「人間認識」に間違った答えを入力しても、それは送信され、電子メールになります。 私はsom悪い宣言や間違った構文を探していたが、すべてが良いようです。私はcontact.phpが電子メールを送信した場合(ただし条件を確認することなく)正しく応答すると仮定します。 私はそれが接続されているかどうかわかりませんが、私のモーダルウィンドウも閉じたくありません(他のフォームにwithoud "action = contact.php"フィールドがある場合は、他のサイトで同じコードがうまくいきます)。PHPのお問い合わせフォームが正しく応答しない

私の主なhead.php:

<!--HEAD--> 
<head> 
    <title>X</title> 

<!--META--> 
    <meta http-equiv="Content-Type" content="text/html"; charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="author" content="SitePoint"> 

<!--CSS--> 
    <link id="theme" rel="stylesheet" href="css/light.css"> 
    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 


<!-- Font Awesome --> 
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> 

</head> 
<!--END OF HEAD--> 
    <body> 
     <script src="https://code.jquery.com/jquery-3.2.1.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.min.js"></script> 
     <script src="js/dropdown.js"></script> 
     <script src="js/scrolling-nav.js"></script> 
     <script src="js/theme-switch.js"></script> 
     <script src="js/nav-position.js"></script> 

      <nav id="mainNav"> 
       <bar> 
        <i id="hamburger" class="fa fa-bars" aria-hidden="true"></i> 
       </bar> 
       <ul id="menu"> 
        <li><a href="#main">Main</a></li> 
        <li><a href="#generator">Generator</a></li> 
        <li><a href="#about">About</a></li> 
        <li><a href="#contact">Contact</a></li> 
       </ul> 
      </nav> 

     <section id = "main" > 
     <div class = "content"> 
     <h1>Hello!</h1> 
     <p>:)</p> 
     </div></section> 

     <section id = "generator"> 
     <div class = "content"> 
     <h1>Generator</h1> 
      <form id="generator-form" ="form-horizontal" role="form" method="post" action="generator.php"> 
       <div class="form-group"> 
        <label for="name" class="col-sm-2 control-label">Name</label> 
        <div class="col-sm-10"> 
         <input type="text" class="form-control" id="name" name="name" placeholder="First & Last Name" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
         <?php echo "<p class='text-danger'>$errName</p>";?> 
        </div> 
       </div> 
     <div class="form-group"> 
        <label for="idCardNumber" class="col-sm-2 control-label">Name</label> 
        <div class="col-sm-10"> 
         <input type="text" class="form-control" id="idCardNumber" name="idCardNumber" placeholder="Student ID Card Number" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
         <?php echo "<p class='text-danger'>$errName</p>";?> 
        </div> 
       </div> 
       <div class="form-group"> 
        <div class="col-sm-10 col-sm-offset-2"> 
         <input id="submit" name="submit" type="submit" value="Send" class="btn btn-primary"> 
        </div> 
       </div> 
       <div class="form-group"> 
        <div class="col-sm-10 col-sm-offset-2"> 
         <?php echo $result; ?> 
        </div> 
       </div> 
      </form> 
     </div></section> 

     <section id = "about"> 
     <div class = "content"> 
     <h1>About</h1> 
     <p></p> 
     </div></section> 

     <section id="contact"> 
      <div class="content"> 
       <h1>Contact</h1> 
       <p><a class="btn btn-default btn-lg" href="#contact-form">Contact Us</a></p> 
       <p><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d5122.204450340393!2d19.91387757798398!3d50.065647167696376!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47165ba756b59b21%3A0xb20c8dba21b317d1!2sAkademia+G%C3%B3rniczo-Hutnicza+im.+Stanis%C5%82awa+Staszica+w+Krakowie!5e0!3m2!1spl!2spl!4v1511628584066" width="500rem" height="500rem" frameborder="0" style="border:0" allowfullscreen></iframe></p> 
      </div> 
     </section> 

     <footer> 
      <label class="switch"> 
     <input type="checkbox" onchange=" switchTheme(this)"> 
     <span class="slider"></span> 
    </label> 
      <p>Copyright©2017 <a href=""></a> for <a href=""> </a></p> 
     </footer> 

    <!--SIGN UP--> 
     <div id="contact-form" class="modal-window"> 
      <div> 
       <a href="#modal-close" title="Close" class="modal-close">Close</a> 
       <form action="contact.php"> 
        <div class="form-group"> 
         <label for="name">Name</label> 
         <input type="text" class="form-control" id="name" name="name" placeholder="First & Last Name" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
         <p class="text-danger"><?php echo $errName; ?></p> 
        </div> 
        <div class="form-group"> 
         <label for="email">Email address</label> 
         <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]" value="<?php echo htmlspecialchars($_POST['email']); ?>"> 
         <p class="text-danger"><?php echo $errEmail; ?></p> 
        </div> 
        <div class="form-group"> 
         <label for="message">Message</label> 
         <textarea class="form-control" rows="4" name="message" value="<?php echo htmlspecialchars($_POST['message']);?>"></textarea> 
         <p class="text-danger"><?php echo $errMessage; ?></p> 
        </div> 
        <div class="form-group"> 
         <label for="human">1 + 1 = ?</label> 
         <input type="text" class="form-control" id="human" name="human" pattern=".{1,}" required title="At least 1 character required" placeholder="Your Answer"> 
         <p class="text-danger"><?php echo $errHuman; ?></p> 
        </div> 
        <input id="submit" name="submit" type="submit" value="Send" class="btn btn-primary btn-lg"></input> 
        <div class="form-group"> 
          <?php echo $result; ?> 
        </div> 
       </form> 
      </div> 
     </div> 
     <!--END SIGN UP--> 

     <!--CONTACT FORM--> 
     <div id="contact-form" class="modal-window"> 
       <a title="Close" class="modal-close">Close</a> 
       <form id="contactForm" role="form" method="post" action="contact.php"> 
        <div class="form-group"> 
         <label for="name">Name</label> 
         <input type="text" class="form-control" id="name" name="name" pattern=".{3,}" required title="At least 3 characters required" placeholder="First & Last Name" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 

        </div> 
        <div class="form-group"> 
         <label for="email">Email address</label> 
         <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]" pattern=".{3,}" required title="At least 3 characters required" value="<?php echo htmlspecialchars($_POST['email']); ?>"> 
         <?php echo "<p class='text-danger'>$errEmail</p>";?> 
        </div> 
        <div class="form-group"> 
         <label for="message">Message</label> 
         <textarea class="form-control" rows="4" pattern=".{3,}" required title="At least 3 characters required" name="message"> 
          <?php echo htmlspecialchars($_POST['message']);?> 
         </textarea> 
          <?php echo "<p class='text-danger'>$errMessage</p>";?> 
        </div> 
        <div class="form-group"> 
         <label for="human">1 + 1 = ?</label> 
         <input type="text" class="form-control" id="human" name="human" pattern=".{1,}" required title="At least 1 character required" placeholder="Your Answer"> 
         <p class='text-danger'>$errHuman</p> 
        </div> 
        <input name="submit" type="submit" value="Send" class="btn btn-primary btn-lg"> 
        <div class="form-group"> 
         <?php echo $result; ?> 
        </div> 
       </form> 
     </div> 
     <!--CONTACT FORM--> 

    </body> 
</html> 

マイcontact.phpコード:

<?php 
    if (isset($_POST["submit"])) { 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $message = $_POST['message']; 
     $human = intval($_POST['human']); 
     $from = 'Generator Contact'; 
     $to = '[email protected]'; 
     $subject = 'Message from AGH Generator Form'; 

     $body ="From: $name\n E-Mail: $email\n Message:\n $message"; 

     //CHECK NAME 
     if (!$name || empty($name)) { 
      $errName = 'Please enter your name'; 
     } 

     //CHECK EMAIL 
     if (!$email || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($email)) { 
      $errEmail = 'Please enter a valid email address'; 
     } 

     //CHECK MESSAGE 
     if (!$message || empty($message)) { 
      $errMessage = 'Please enter your message'; 
     } 

     //CHECK IF USER IS NOT A BOT 
     if ($human !== 2 || $human !=2) { 
      $errHuman = 'Please... proof that you are not a bot :>'; 
     } 

     //SEND THE EMAIL IF THERE ARE NO EXISTING ERRORS 
     if (!empty($errName) && !empty($errEmail) && !empty($errMessage) && !empty($errHuman)) { 
      if (mail ($to, $subject, $body, $from)) { 
       $result='<div class="alert alert-success">Thank You! We will be in touch</div>'; 
      } else { 
       $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>'; 
      } 
      header("Location: home.php"); 
     } 
    } 
?> 

編集:私は私のPHPコードの改善を行ってきた(ラインエラーで論理的な問題が がありましたフィールドは空です: - > if(!empty($ errName))しかし - > if(empty($ errName))。 しかし、私はまだ問題があります。連絡フォーム提出後も同じページに表示されますが、「送信」ボタンをクリックすると何も表示されません(エラーなしが表示された場合)、ページのみがリフレッシュされ、フォームが再び開きます。今何が問題なの? NEW CODE:

<!DOCTYPE HTML> 

<html lang="en"> 

<!--HEAD--> 
<head> 
    <title>AGH Application for entry with ECTS deficit generator</title> 

<!--META--> 
    <meta http-equiv="Content-Type" content="text/html"; charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="author" content="SitePoint"> 
    <meta name="Description" content="It is simple PDF generator for sing with lack of ECTS for another term" /> 
    <meta name="Keywords" content="ECTS, deficit, deficyt, Poland, Cracow, generator, application, form, pdf, AGH, UST, Akademia, Górniczko, Hutnicza, University, S cience, Technology, Polska, Kraków, " /> 

<!--CSS--> 
    <link id="theme" rel="stylesheet" href="css/dark.css"> 
    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 


<!-- Font Awesome --> 
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> 

</head> 
<!--END OF HEAD--> 
    <body> 
     <script src="https://code.jquery.com/jquery-3.2.1.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.min.js"></script> 
     <script src="js/dropdown.js"></script> 
     <script src="js/scrolling-nav.js"></script> 
     <script src="js/theme-switch.js"></script> 
     <script src="js/nav-position.js"></script> 

      <nav id="mainNav"> 
       <bar> 
        <i id="hamburger" class="fa fa-bars" aria-hidden="true"></i> 
       </bar> 
       <ul id="menu"> 
        <li><a href="#main" class="nav">Main</a></li> 
        <li><a href="#generator" class="nav">Generator</a></li> 
        <li><a href="#about" class="nav">About</a></li> 
        <li><a href="#contact" class="nav">Contact</a></li> 
       </ul> 
      </nav> 

     <section id = "main" > 
     <div class = "content"> 
     <h1>Hello!</h1> 
     <p>Welocome to The AGH Application for entry with ECTS deficit generator website. We hope that you use it just for fun :)</p> 
     </div></section> 

     <section id = "generator"> 
     <div class = "content"> 
     <h1>Generator</h1> 

     </div></section> 

     <section id = "about"> 
     <div class = "content"> 
     <h1>About</h1> 
     <p>This webapge was created as a project for the Web Technologies. The main reason why it exists is that very common among Students is that they want to apply for entry on another term with ECTS deficit. This site will help students and AGH employees by generating PDF application. We hope that everything at AGH will be fast and growing in the future. We want to make our students life BETTER! </p> 
     </div></section> 

     <section id="contact"> 
      <div class="content"> 
       <h1>Contact</h1> 
       <p><a class="btn btn-default btn-lg" href="#contact-form">Contact Us</a></p> 
       <?php echo $result; ?> 
       <p><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d5122.204450340393!2d19.91387757798398!3d50.065647167696376!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47165ba756b59b21%3A0xb20c8dba21b317d1!2sAkademia+G%C3%B3rniczo-Hutnicza+im.+Stanis%C5%82awa+Staszica+w+Krakowie!5e0!3m2!1spl!2spl!4v1511628584066" width="500rem" height="500rem" frameborder="0" style="border:0" allowfullscreen></iframe></p> 
      </div> 
     </section> 


     <footer> 
      <label class="switch"> 
     <input type="checkbox" onchange=" switchTheme(this)"> 
     <span class="slider"></span> 
    </label> 
      <p>Copyright©2017 <a href="http://fb.com/marcinkaminskix">Marcin Kamiński</a> for <a href="agh.edu.pl">AGH </a></p> 
     </footer> 

    <!--SIGN UP--> 
     <?php 
     if (isset($_POST["send"])) { 
      $name = $_POST['name']; //Getting variable from form 
      $email = $_POST['email']; //Getting variable from form 
      $message = $_POST['message']; //Getting variable from form 
      $human = intval($_POST['human']); //Getting variable from form 
      $from = 'Generator Contact'; //Set sender 
      $to = '[email protected]'; //Where to send an email 
      $subject = 'Message from AGH Generator Form'; //Set the subject of email 
      $errName = $errEmail = $errMessage = $errHuman = ''; //Values of errors 
      $body ="From: $name\n E-Mail: $email\n Message:\n $message"; //Body of email 

      //CHECK NAME 
      if (empty($name)) { 
       $errName = 'Please enter your name'; 
      } 

      //CHECK EMAIL 
      if (!filter_var($email, FILTER_VALIDATE_EMAIL) || empty($email)) { 
       $errEmail = 'Please enter a valid email address'; 
      } 

      //CHECK MESSAGE 
      if (empty($message)) { 
       $errMessage = 'Please enter your message'; 
      } 

      //CHECK IF USER IS NOT A BOT 
      if ($human !== 2 || $human !=2) { 
       $errHuman = 'Please... proof that you are not a bot :>'; 
      } 

      //SEND THE EMAIL IF THERE ARE NO EXISTING ERRORS 
      if (empty($errName) && empty($errEmail) && empty($errMessage) && empty($errHuman)) { 
       if (mail($to, $subject, $body, $from)) { 
        $result = '<div class="alert alert-success">Thank You! We will be in touch</div>'; 
       } 
       else { 
        $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>'; 
       } 
      } 
     } 
     ?> 

     <div id="contact-form" class="modal-window"> 
      <div> 
       <a href="#modal-close" title="Close" class="modal-close">Close</a> 
       <form id="contactForm" role="form" method="post"> 
        <div class="form-group"> 
         <label for="name">Name</label> 
         <input type="text" class="form-control" id="name" name="name" placeholder="First & Last Name" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
         <p class="text-danger"><?php echo $errName; ?></p> 
        </div> 
        <div class="form-group"> 
         <label for="email">Email address</label> 
         <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]" value="<?php echo htmlspecialchars($_POST['email']); ?>"> 
         <p class="text-danger"><?php echo $errEmail; ?></p> 
        </div> 
        <div class="form-group"> 
         <label for="message">Message</label> 
         <textarea class="form-control" rows="4" name="message" value="<?php echo htmlspecialchars($_POST['message']);?>"></textarea> 
         <p class="text-danger"><?php echo $errMessage; ?></p> 
        </div> 
        <div class="form-group"> 
         <label for="human">1 + 1 = ?</label> 
         <input type="text" class="form-control" id="human" name="human" placeholder="Your Answer"> 
         <p class="text-danger"><?php echo $errHuman; ?></p> 
        </div> 
        <button id="send" name="send" type="submit" value="Send" class="btn btn-default btn-lg">Send</button> 
       </form> 
      </div> 
     </div> 
     <!--END SIGN UP--> 

    </body> 
</html> 
+0

何「他のサイト」?あなたのコードは、それが相対的な 'contact.php'ページに行くことを示しています。ネットワークデバッガ(ChromeとFirefoxに組み込まれています)を使用してリクエストを表示できますか? – anthony

+0

私はこれを解決しました。この問題はjsスクリプトでの私の失敗でした。しかし、私はまだ私のPHPの連絡フォームに問題があります。私は更新をしました。 –

答えて

0

あなたの問題は、この線の論理である:

if (!empty($errName) && !empty($errEmail) && !empty($errMessage) && !empty($errHuman)) { 

は、基本的にこれはすべてが間違っている場合は、電子メールを送信言っています。 not emptyチェックは、エラーがあったことを意味し、変数にエラー文字列が保持されるようになりました。

代わりに、あなただけの空の文字列として変数を作成し、彼らはまだ空であるかどうかを確認する必要があります。

$errName = $errEmail = $errMessage = $errHuman = ''; 

// CHECK NAME... etc... all the checks 

if (empty($errName) && empty($errEmail) && empty($errMessage) && empty($errHuman)) { 

は、しかし、あなたがユーザーにエラーが表示されていませんし、あなたが終了しています緩やかな変数の束と一緒に。私はあなたがすぐにこの後、ヘッダ関数を呼び出す場合は、ユーザーがエラーを見ていないか、それを修正するチャンスを得るん

$body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    $errors = []; 

    //CHECK NAME 
    if (!$name || empty($name)) { 
     $errors['name'] = 'Please enter your name'; 
    } 

    //CHECK EMAIL 
    if (!$email || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($email)) { 
     $errors['email'] = 'Please enter a valid email address'; 
    } 

    //etc... 

    if (empty($errors)) { 
     //send email 
    } else { 
     $result = '<div class="alert alert-danger">Sorry there was an error sending your message:<br>'; 
     foreach ($errors as $key => $error) { 
      $result .= $error . '<br>'; 
     } 
     $result .= '</div>'; 
    } 

...エラーの配列を使用して、わずかに異なるアプローチをお勧めします。クエリ文字列を使用して、head.phpにエラーを戻して表示することができます。

(FYI、それ自体にフォームのアクションは、そのファイルへのすべてのPOSTデータを送信し、指定されたアクションが存在しない場合は、フォームのポスト。)

+0

論理的な問題を解決しました。ありがとうございます。しかし、私はまだ問題があります。私は投稿を更新しました。 –

関連する問題