-1

フォームの検証に問題があります。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;  
*/
 ?>
4

1 に答える 1

1

if (preg_match("/^[_a-z0-9-]+(.[_a-z0-9-]+) @[a-z0-9-]+(.[a-z0-9-]+) (.[az]{2,3})$/i", $email)

$email が空であるため、この状態で電子メールを使用することはできません!

于 2012-11-13T09:26:15.297 に答える