2017-05-04 163 views
0

我無法使用php驗證表單,並且表單即使未驗證也正在提交。我正在使用Xpppp服務器。請讓我知道解決方案。使用php的表單驗證在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> 

回答

0

嘗試給您<button>一個名稱,如<button name="submitbtn">和if語句的頂部,儘量if(isset($_POST['submitbtn'])

我不知道將這項工作在你的代碼,但是這是我通常做。

1

問題與您的代碼不正確處理表單後,您的變量$error重寫值,其中要檢查 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>'; }這將導致忽略所有你這段代碼上面所做的以前的錯誤分配。加上頁面重新加載$error初始化爲"",所以在驗證錯誤和填充變量$error變得毫無用處。因此,我在回答中使用了會話。

<?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

而不是

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

試試這個

<div id="error"> 

<?php 

echo $error; 

?> 

</div> 
+0

會是什麼這種變化? –

+0

這不會有所作爲。看到我上面的答案 –