1

私のフォームは、PHP によって行われている検証で正常に動作しています。名前、メール、メッセージの 3 つのフィールドがあります。フォームと PHP コードは同じ pgae 内にあり、ユーザーがフォームを送信すると、検証のために同じページが呼び出されます。

ユーザーがフォームを送信すると、同じページが呼び出され、フォームが送信されたかどうかがチェックされます。フォームが送信されると、空白のエントリの検証が行われ、フィールドの下にエラー メッセージがスローされて、フィールドが空白のままになっていることがユーザーに通知されます。また、フィールドの横にエラー アイコンが表示されます。

ここまでは、問題なく動作しています。

ただし、問題は、ユーザーが名前フィールドなどのフィールドに入力し、他の 2 つのフィールド (電子メールとメッセージ) を空白のままにした場合、送信時に空のフィールドに対してエラー メッセージがスローされますが、名前フィールドに対しては問題ありません。ユーザーによって入力されたもので、コンテンツが空になり、空白の名前フィールドが表示され、エラーは表示されません(以前のユーザーが入力したため)。

私の唯一の懸念は、送信後にフォームを再ロードするときに、送信前にユーザーが入力したそれぞれのフィールドの以前の値も再ロードする必要があることです。

以下は、PHP 検証コードです。

<?php
error_reporting(E_ALL & ~E_NOTICE);

    if(isset($_POST['nameField_Name']) AND isset($_POST['nameField_EMail']) AND isset($_POST['nameField_Message']) AND isset($_POST['nameSubmit'])){  
        // Form Submited  
        if ($_POST['nameField_Name']) {
    $phpVarNameField = mysql_escape_string($_POST['nameField_Name']);
} else {
    $errormsgNameField = "Name field is required, Please enter your Name.";

}

if ($_POST['nameField_EMail']) {
    $phpVarEMailField = mysql_escape_string($_POST['nameField_EMail']);
} else {
    $errormsgEMailField = "E-Mail field is required, Please enter your E-Mail ID.";
}

if ($_POST['nameField_Message']) {
    $phpVarMessageField = mysql_escape_string($_POST['nameField_Message']);
} else {
    $errormsgMessageField = "Message field is required, Please enter your Message.";
}
    }  
?>

以下はフォームコードです。

                <form name="myform" action="contactus.php" method="post"">
                <div id="r1">
                    <div id="r1c1">
                        <input type="text" name="nameField_Name" id="idField_Name" placeholder="Enter your name here"/>
                    </div>
                    <div id="r1c2">
                 <?php  
                      if(isset($errormsgNameField)){  // Check if $msg is not empty  
                  echo '<img src="error.png" width="45" height="45" style="margin: 5px 0px" alt="">';
                      }  
                    ?> 
                    </div>
                </div>
                <div id="afterr1">
               <?php  
                      if(isset($errormsgNameField)){  // Check if $msg is not empty  
                  echo '<div class="statusmsg" id="idErrorMsgNameField">'.$errormsgNameField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".  
                      }  
                    ?>  

                </div>
                <div id="r2">
                    <div id="r2c1">
                        <input name="nameField_EMail" type="text" id="idField_EMail" placeholder="Enter your E-Mail address here" />
                    </div>
                    <div id="r2c2">
                <?php  
                      if(isset($errormsgEMailField)){  // Check if $msg is not empty  
                  echo '<img src="error.png" width="45" height="45" style="margin: 5px 0px" alt="">';
                      }  
                    ?> 
                    </div>
                </div>
                <div id="afterr2">
                <?php  
                      if(isset($errormsgEMailField)){  // Check if $msg is not empty  
                  echo '<div class="statusmsg" id="idErrorMsgEMailField">'.$errormsgEMailField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".  
                      }  
                    ?>  
                </div>
                <div id="r3">
                    <div id="r3c1">
                        <textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us here"></textarea>
                    </div>
                    <div id="r3c2">
                <?php  
                      if(isset($errormsgMessageField)){  // Check if $msg is not empty  
                  echo '<img src="error.png" width="45" height="45" style="margin: 115px 0px" alt="">';
                      }  
                    ?> 

                    </div>
                </div>
                <div id="afterr3">
                <?php  
                      if(isset($errormsgMessageField)){  // Check if $msg is not empty  
                  echo '<div class="statusmsg" id="idErrorMsgMessageField">'.$errormsgMessageField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".  
                      }  
                    ?>  
                </div>

                <div id="r4">
                    <div id="r4c">
                        <input type="Submit" name="nameSubmit" id="idButton_Submit" value="Submit"  alt="Submit Button"/>
                    </div>
                </div>
                </form>

これについては、どんな助けも素晴らしいでしょう。

ありがとうございました。

4

3 に答える 3

4

要素valueに属性を追加する必要があります。<input>

<input type="text"
       name="whatever"
       value="<?php echo htmlspecialchars($_POST['whatever']); ?>"
>

PHPがフィールドを出力すると、読みやすくなる場合があります。

<?php
printf('<input type="text" name="%s" value="%s">',
       'whatever',
       htmlspecialchars($_POST['whatever']));
?>

これは関数でラップすることもできるので、フォームフィールドごとに再入力する必要はありません。

htmlspecialcharsの呼び出しに注意してください。<and>とquotesがHTMLドキュメントを破壊しないようにするために必要です。

于 2012-06-28T06:17:07.853 に答える
1

まあ、jQuery 検証プラグインを使用して検証を行うことができます - 簡単で良いです。jQuery プラグイン

または、配列に POST データを格納する PHP を使用して、テキストを入力するための値として空に設定されていないフィールドとエラーをチェックします。

if (isset($_POST)) {
    $data = $_POST;
}
foreach ($data as $row) {
    if ($row == "")
        $error = true; // do what ever you want
}

and then in form
<input type="text" name="name" value="<?php ($data['name'] != "")? $data['name'] : '' ?>" />

このようなもの。

于 2012-06-28T06:19:35.113 に答える
1

次のようにタグを変更してみてください。

<input type="text" 
  name="nameField_Name" 
  id="idField_Name" 
  placeholder="Enter your name here" 
  value ="<?php 
             if (isset($phpVarNameField)) 
              echo $phpVarNameField; 
         ?>"
/>
.......
<input 
   name="nameField_EMail" 
   type="text" 
   id="idField_EMail" 
   placeholder="Enter your E-Mail address here" 
   value ="<?php if (isset($phpVarEMailField)) echo $phpVarEMailField; ?>" 
 />
.......
<textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us     
here" value ="<?php if (isset($phpVarMessageField)) echo $phpVarMessageField; ?>" ></textarea>

幸運を !

于 2012-06-28T06:37:02.197 に答える