为什么我的表单验证不起作用?

时间:2012-11-13 07:50:23

标签: php forms validation header preg-match

我在验证表格方面遇到了麻烦。如何使用PHP验证表单?我尝试了很多不同的方法,没有任何工作。我可以获得要显示的输入(虽然复选框并不总是显示)但它只是不会验证。

我还希望将用户的输入(经过验证后)显示在另一个页面上,我该怎么做?

这是我的代码;

表格:

<form action="<?php $_SERVER['PHP_SELF'];?>" method="post">
<label for="name">Your Name:</label>
<input type="text" name="name" id="name" value="" required>
<br><br>
<label for="email">Your Email:</label>
<input type="text" name="email" id="email" value="" required>

<br>
<br>
<label for="subject">Subject:</label>
<input type="text" name="subject" id="subject" value="" required>
<br>
<br>
Recipient:
<div>
 <label for="admin">
  <input type="checkbox" name="recipient[]" id="admin"  value="Administrator">
  Administrator</label>
 <br>
 <label for="editor">
  <input type="checkbox" name="recipient[]" id="editor"  value="Content Editor">
  Content Editor</label>
  <br>
 </div>
<br>
<label for="message">Message:</label>
<br>

<textarea name="message" id="message" cols="45" rows="5" required></textarea>
<input type="hidden" name="submitted" value="1">
<br>
<input type="submit" name="button" id="button" value="Send">
<br>
</form>

PHP:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];



 if ($_POST['submitted']==1) {  

        if ($_POST['name']){  
            $name = $_POST['name'];

        }  
        else{  
             echo "<p>Please enter a name.</p>" ;  
        }  

        if (preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email))
          $email = $_POST['email'];

        }  
        else{  
            echo "<p>Please enter a valid email.</p>";  
        } 
        if ($_POST['subject']){  
            $subject = $_POST['subject'];

        }  
        else{  
             echo "<p>Please enter a subject.</p>"; 


      if(empty($_POST['recipient'])){
        echo "<p>Please select a recipient</p>"; 
       }else{
              for ($i=0; $i < count($_POST['recipient']);$i++) {
                  echo $_POST['recipient'][$i] . " ";
              }
      } 


        }   
        if ($_POST['message']){  
            $message = $_POST['message'];

        }  


/* go to form.php
display results
echo "<strong>Your Name:</strong> ".$name. "<br />";
echo "<strong>Your Email:</strong> ".$email. "<br />";
echo "<strong>Subject:</strong> ".$subject. "<br />";
echo "<strong>Recipient:</strong> "; 
echo "<br />"; 
echo "<strong>Message:</strong> <br /> " .$message;  
*/
 ?>

1 个答案:

答案 0 :(得分:1)

if(preg_match(“/ ^ [_ a-z0-9 - ] +(。[_ a-z0-9 - ] +) @ [a-z0-9 - ] +(。[a-z0 -9 - ] +)(。[az] {2,3})$ / i“,$ email)

您无法在此条件下使用电子邮件,因为$ email为空!