表单提交我必须在所有字段都不为空时按两次提交

时间:2012-05-20 19:37:56

标签: php html forms

我有这个代码,我确认每个字段都不为空,问题是当每个字段都填满时我必须按两次提交才能提交表单。

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

1 个答案:

答案 0 :(得分:3)

看起来你&#39;再期待PHP来检查页面上的字段是否填充在&#39; S PHP不是如何工作的。它首次呈现页面时评估一次,然后再次加载页面之前再也不做任何操作。 PHP的$_POST数组不引用页面上的输入字段;它指的是页面在加载时从表单接收的值。所以发生了什么;

  1. 页面首次加载,$_POST为空,因为未提交任何表单。
  2. PHP看到了这一点,并设置ACTION将您发送回同一页面。
  3. 您填写表格并点击提交。
  4. 页面重新加载,但这次$_POST中包含值,因为您刚刚提交了表单。
  5. PHP查看$_POST中的值并设置ACTION以将您发送到下一页。
  6. 您再次填写表单,点击提交,然后发送到下一页。
  7. 如果要在提交表单之前检查表单是否填写了字段,则无法使用PHP。您需要使用一些JavaScript。 Here's a quick tutorial,其中第一个示例说明了您正在寻找的内容。