2017-05-04 9 views
0

Ich bin nicht in der Lage, das Formular mit PHP zu validieren und Formular wird eingereicht, obwohl es nicht validiert. Ich benutze Xampp Server. Bitte lassen Sie mich die Lösung wissen.Formularvalidierung mit PHP funktioniert nicht in XAMPP

<?php 
    $error = ""; 

    if($_POST) { 
     if(!$_POST["email"]) { 
      $error .= "Email address is required<br>"; 
     } 

     if(!$_POST["subject"]) { 
      $error .= "Subject is required<br>"; 
     } 

     if(!$_POST["exampleTextarea"]) { 
      $error .= "Text Area address is required<br>"; 
     } 

     if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) { 
      $error .= "Email address is invalid<br>"; 
     } 


     if($error != ""){ 
      $error = '<div class="alert alert-danger" role="alert"><p><strong>Oh snap! There were error(s) in your form:</strong></p>'. $error . '</div>'; 
     } 
    } 
?> 

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <!-- Required meta tags --> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
    <!-- Bootstrap CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> 
    </head> 
    <body> 
    <div class="container"id="containerID"> 
     <h1>Get in touch!!!</h1> 
     <div id="error"><? echo $error; ?></div> 
     <form method="post"> 
     <div class="form-group"> 
      <label for="email">Email address</label> 
      <input type="email" class="form-control" id="email" aria-describedby="emailHelp" placeholder="Enter email" name="email"> 
      <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> 
     </div> 
     <div class="form-group"> 
      <label for="subject">Subject</label> 
      <input type="text" class="form-control" id="subject" name="subject"> 
     </div> 

     <div class="form-group"> 
      <label for="exampleTextarea">What would you like to ask us??</label> 
      <textarea class="form-control" id="exampleTextarea" rows="5" name="exampleTextarea"></textarea> 
     </div> 

     <button type="submit" class="btn btn-primary" id="submit">Submit</button> 
     </form> 
     </div> 
     <!-- jQuery first, then Tether, then Bootstrap JS. --> 
     <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script> 
     <script type="text/javascript"> 
     </script>  
    </body> 
    </html> 

Antwort

0

Versuchen Sie, Ihren <button> einen Namen zu geben, wie <button name="submitbtn"> und an der Spitze der if-Anweisung, versuchen if(isset($_POST['submitbtn'])

Ich weiß nicht, wird diese Arbeit in Ihrem Code, aber das ist, was ich normalerweise tun .

1

Problem mit Ihrem Code Form Post nicht richtig Umgang mit Ihrem zwingenden dem Wert für die Variable $error wo Sie if ($error != "") { $error = '<div class="alert alert-danger" role="alert"><p><strong>Oh snap! There were error(s) in your form:</strong></p>'. $error . '</div>'; } werden überprüfen dies die vorherige Fehlerzuordnung zu vernachlässigen alle führen Sie über diesem Stück Code gemacht haben. Plus auf der Seite neu laden die $error initialisiert mit "", so wird die ganze harte Arbeit in Validierungsfehler und die $error Variable wird unbrauchbar. Daher habe ich Sitzung in meiner Antwort verwendet.

<?php 
$error = ""; 
$errors = ""; 
session_start(); 
if(isset($_POST['submit'])) { 
    if(empty($_POST["email"])) { 
     $error .= "Email address is required<br>"; 
    } else if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) { 
     $error .= "Email address is invalid<br>"; 
    } 
    if(empty($_POST["subject"])) { 
     $error .= "Subject is required<br>"; 
    } 

    if(empty($_POST["exampleTextarea"])) { 
     $error .= "Text Area address is required<br>"; 
    } 

    if($error != ""){ 
     $errors = '<div class="alert alert-danger" role="alert"><p><strong>Oh snap! There were error(s) in your form:</strong></p>'. $error . '</div>'; 
     $_SESSION['errors'] = $errors; 
    } 

} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <!-- Required meta tags --> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
    <!-- Bootstrap CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> 
</head> 
<body> 
<div class="container"id="containerID"> 
    <h1>Get in touch!!!</h1> 
    <?php 
     if (isset($_SESSION['errors'])) { 
      echo $_SESSION['errors']; 
      unset($_SESSION['errors']); 
     } 
    ?> 
    <form method="post"> 
     <div class="form-group"> 
      <label for="email">Email address</label> 
      <input type="email" class="form-control" id="email" aria-describedby="emailHelp" placeholder="Enter email" name="email"> 
      <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> 
     </div> 
     <div class="form-group"> 
      <label for="subject">Subject</label> 
      <input type="text" class="form-control" id="subject" name="subject"> 
     </div> 

     <div class="form-group"> 
      <label for="exampleTextarea">What would you like to ask us??</label> 
      <textarea class="form-control" id="exampleTextarea" rows="5" name="exampleTextarea"></textarea> 
     </div> 

     <button type="submit" name="submit" class="btn btn-primary" id="submit">Submit</button> 
    </form> 
</div> 
<!-- jQuery first, then Tether, then Bootstrap JS. --> 
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script> 
<script type="text/javascript"> 
</script> 
</body> 
</html> 
0

Statt

<div id="error"><? echo $error; ?></div> 

versuchen, diese

<div id="error"> 

<?php 

echo $error; 

?> 

</div> 
+0

Was würde diese Änderung? –

+0

Das wird keinen Unterschied machen. Siehe meine Antwort oben –

Verwandte Themen