2016-04-15 10 views
0

Das PHP-Kontaktformular modal auf meiner Website sendet E-Mail, aber es zeigt keine Fehlermeldungen, wenn Felder leer gelassen werden oder wenn die falsche Nummer wird eingefügt, wenn überprüft wird, ob jemand menschlich ist oder nicht. Nachdem Sie auf "Senden" geklickt haben, wird auch eine leere Seite angezeigt.PHP-Mailer nicht zeigt Text-Gefahr Warnungen, geht auch auf eine leere Seite bei der Einreichung

Hier ist meine HTML-Datei:

<!-- Modal --> 
 
<div id="contactModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="contactModalLabel" aria-hidden="true"> 
 
    <div class="modal-dialog modal-lg"> 
 
    <div class="modal-content"> 
 
     <div class="modal-header"> 
 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 
 
     <h4 class="modal-title">Fill everything out below!</h4> 
 
     </div> 
 
     <div class="modal-body"> 
 
     <div class="container-fluid"> 
 
      <div class="row"> 
 
      <div class="col-xs-12 col-sm-10 col-sm-offset-1"> 
 
       <form class="form-horizontal" role="form" method="post" action="mailer.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="email" class="col-sm-2 control-label">Email</label> 
 
        <div class="col-sm-10"> 
 
        <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]" value="<?php echo htmlspecialchars($_POST['email']); ?>"> 
 
        <?php echo "<p class='text-danger'>$errEmail</p>";?> 
 
        </div> 
 
       </div> 
 
       <div class="form-group"> 
 
        <label for="message" class="col-sm-2 control-label">Message</label> 
 
        <div class="col-sm-10"> 
 
        <textarea class="form-control" rows="4" name="message"> 
 
         <?php echo htmlspecialchars($_POST[ 'message']);?> 
 
        </textarea> 
 
        <?php echo "<p class='text-danger'>$errMessage</p>";?> 
 
        </div> 
 
       </div> 
 
       <div class="form-group"> 
 
        <label for="human" class="col-sm-2 control-label">2 + 3 = ?</label> 
 
        <div class="col-sm-10"> 
 
        <input type="text" class="form-control" id="human" name="human" placeholder="Your Answer"> 
 
        <?php echo "<p class='text-danger'>$errHuman</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> 
 
      </div> 
 

 
     </div> 
 

 
     </div> 
 
     <!-- End of Modal body --> 
 
    </div> 
 
    <!-- End of Modal content --> 
 
    </div> 
 
    <!-- End of Modal dialog --> 
 
</div> 
 
<!-- End of Modal -->

Und hier ist meine PHP-Datei:

<?php 
 
\t if (isset($_POST["submit"])) { 
 
\t \t $name = $_POST['name']; 
 
\t \t $email = $_POST['email']; 
 
\t \t $message = $_POST['message']; 
 
\t \t $human = intval($_POST['human']); 
 
\t \t $from = 'Contact Form'; 
 
\t \t $to = '[email protected]'; 
 
\t \t $subject = 'Message from porfolio site '; 
 
\t \t 
 
\t \t $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 
 
    
 
\t \t // Check if name has been entered 
 
\t \t if (!$_POST['name']) { 
 
\t \t \t $errName = 'Please enter your name'; 
 
\t \t } 
 
\t \t 
 
\t \t // Check if email has been entered and is valid 
 
\t \t if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
 
\t \t \t $errEmail = 'Please enter a valid email address'; 
 
\t \t } 
 
\t \t 
 
\t \t //Check if message has been entered 
 
\t \t if (!$_POST['message']) { 
 
\t \t \t $errMessage = 'Please enter your message'; 
 
\t \t } 
 
\t \t //Check if simple anti-bot test is correct 
 
\t \t if ($human !== 5) { 
 
\t \t \t $errHuman = 'Your anti-spam is incorrect'; 
 
\t \t } 
 
    
 
// If there are no errors, send the email 
 
if (!$errName && !$errEmail && !$errMessage && !$errHuman) { 
 
\t if (mail ($to, $subject, $body, $from)) { 
 
\t \t $result='<div class="alert alert-success">Thank You! I will be in touch</div>'; 
 
\t } else { 
 
\t \t $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>'; 
 
\t } 
 
} 
 
\t } 
 
?>

Do y'all wissen, was sein könnte hier los?

+0

Sie nicht diese über AJAX einreichen also im Grunde Sie alle Ihre Informationen zu Ihrer mailer.php Seite senden, die nicht ausgegeben nichts tut, könnte man 'echo $ result werfen; 'Am Ende dieser Datei, wenn Sie möchten. – cmorrissey

Antwort

0

Ihre Felder sind wahrscheinlich leere Zeichenfolgen, die den (!$_POST['field']) Test bestehen würden. Verwenden Sie stattdessen . Dadurch wird sichergestellt, dass das Feld existiert und nicht 0, null oder eine leere Zeichenfolge ist.

Zum Beispiel:

if (!empty($_POST['name'])) { 
    $errName = 'Please enter your name'; 
} 
+0

Hm, das hat tatsächlich dazu geführt, dass der Mailer nicht mehr funktioniert, also bin ich zur vorherigen Datei zurückgekehrt. –