0

各フィールドが空でないことを検証するこのコードがあります。問題は、すべてのフィールドが入力されたときに、フォームを送信するために送信を 2 回押す必要があることです。

<table>
    <form method ="post" <?php 
    if(!empty($_POST['Firstname']) &&
       !empty($_POST['Lastname']) &&
       !empty($_POST['Email']) &&
       !empty($_POST['Comments'])){
       echo 'action="messagesent.php"';}
     else if(isset($_POST['Firstname']) ||
       isset($_POST['Lastname']) ||
       isset($_POST['Email']) ||
       isset($_POST['Comments'])) {
       echo 'action="contact.php"';}?> >
        <tr>
        <td><label>Firstname:</td><td><input name ="Firstname" type ="text" size ="30" <?php if(!empty($_POST['Firstname'])){$Firstname=$_POST['Firstname'];echo "value=$Firstname";} ?> /></td><td><?php if(empty($_POST['Firstname'])){echo "<font color='blue'>*</font>";}?></td>
        </tr>

        <tr>
        <td><label>Lastname:</td><td><input name="Lastname" type ="text" size ="30" <?php if(!empty($_POST['Lastname'])){$Lastname = $_POST['Lastname'];echo "value=$Lastname";}?> /></td><td><?php if(empty($_POST['Lastname'])){echo "<font color='blue'>*</font>";}?></td>
        </tr>

        <tr>
        <td><label>E-mail:</td><td><input name="Email" type ="text" size ="30" <?php if(!empty($_POST['Email'])){$Email = $_POST['Email'];echo "value=$Email";}?> /></td><td><?php if(empty($_POST['Email'])){echo "<font color='blue'>*</font>";}?> </td>
        </tr>

        <tr>
        <th colspan="2"><label>Your Message</th>
        </tr>
        <tr>
        <td colspan="2"><textarea name= "Comments" rows="10" cols="34"><?php $Comments=$_POST['Comments'];if(!empty($_POST['Comments'])){echo "$Comments";} ?> </textarea></td><td><?php if(empty($_POST['Comments'])){echo "<font color='blue'>*</font>";}?> </td>
        </tr>
        <tr>
        <td><input type="submit" value = "SUBMIT"/> </td>
        </tr>

    </form>
</table>
4

1 に答える 1

3

PHPがページのフィールドに入力されているかどうかをチェックすることを期待しているようです。これは、PHPの動作方法ではありません。ページが最初にレンダリングされたときに1回評価され、ページが再度読み込まれるまで何も実行されません。PHPの$_POST配列は、ページの入力フィールドを参照していません。これは、ページがロードされたときにフォームから受け取った値を指します。つまり、何が起こっているのかということです。

  1. ページが初めて読み込まれ、$_POSTフォームが送信されなかったため空になります。
  2. PHPはこれを確認ACTIONし、同じページに戻るように設定します。
  3. フォームに入力して[送信]をクリックします。
  4. $_POSTページはリロードされますが、フォームを送信したばかりなので、今回は値が含まれています。
  5. PHPはの値を確認し、次のページに移動するように$_POST設定ACTIONします。
  6. フォームにもう一度入力し、[送信]をクリックすると、次のページに移動します。

フォームを送信する前にフィールドが入力されているかどうかをフォームで確認する場合は、PHPを使用できません。javascriptを使用する必要があります。これが簡単なチュートリアルです。最初の例では、探しているものを取り上げています。

于 2012-05-20T19:43:27.057 に答える