0

我有这段代码,我在其中验证每个字段不为空,问题是当每个字段都被填写时,我必须按两次提交才能提交表单。

<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 的工作方式。它在第一次渲染页面时评估一次,然后在页面再次加载之前不再执行任何操作。PHP 的$_POST数组不引用页面上的输入字段;它指的是页面在加载时从表单接收到的值。所以正在发生的事情是;

  1. 页面第一次加载,$_POST因为没有提交表单,所以是空的。
  2. PHP 看到这一点并设置ACTION将您送回同一页面。
  3. 您填写表格并点击提交。
  4. 页面重新加载,但这次$_POST有值,因为您刚刚提交了表单。
  5. PHP 看到其中的值$_POST并设置ACTION为将您发送到下一页。
  6. 您再次填写表格,点击提交,然后被发送到下一页。

如果要在提交表单之前检查表单是否填写了字段,则不能使用 PHP。你需要使用一些javascript。这是一个快速教程,其中第一个示例解决了您要查找的内容。

于 2012-05-20T19:43:27.057 回答