我有这个代码,我确认每个字段都不为空,问题是当每个字段都填满时我必须按两次提交才能提交表单。
<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>
答案 0 :(得分:3)
看起来你&#39;再期待PHP来检查页面上的字段是否填充在&#39; S PHP不是如何工作的。它首次呈现页面时评估一次,然后再次加载页面之前再也不做任何操作。 PHP的$_POST
数组不引用页面上的输入字段;它指的是页面在加载时从表单接收的值。所以发生了什么;
$_POST
为空,因为未提交任何表单。 ACTION
将您发送回同一页面。$_POST
中包含值,因为您刚刚提交了表单。 $_POST
中的值并设置ACTION
以将您发送到下一页。 如果要在提交表单之前检查表单是否填写了字段,则无法使用PHP。您需要使用一些JavaScript。 Here's a quick tutorial,其中第一个示例说明了您正在寻找的内容。