我的一个PHP表单验证脚本有问题。
基本上,我有一个表单,当用户提交信息时,它会(通过PHP)进行验证检查,并通过回波语句输出结果(成功、错误1、错误2等)
然而,在用户提交表单后(操作=相同页面,即它自己发布),验证消息会出现在表单的顶部或旁边。我希望回显消息出现在表单下面。
这就是现在页面上发生的事情:
Error: Your password is incorrect
Username:
Email:
Password:
Submit Button
这就是我想要的样子:
Username:
Email:
Password:
Submit Button
Error: Your password is incorrect
有人知道怎么补救吗?
这是代码:
<form id="username_check" name="username_check" method="post">
<tr>
<td><b>Username:</b></td>
<td><input name="Username" type="text" class="textfield" id="Username"
value="<?php echo($_POST['Username']); ?>"
/>
</td>
</tr>
<tr>
<td><b>Email Address:</b></td>
<td><input name="email_address" type="text" class="textfield" id="email_address"
value="<?php echo($_POST['email_address']); ?>"
/>
</td>
</tr>
<tr>
<td><b>Password:</b></td>
<td><input name="PASSWORD" type="password" class="textfield" id="PASSWORD" />
</td>
</tr>
<td><input type="submit" name="submit" value="Submit" /></td>
</form>
<?php
//If form was submitted
if (array_key_exists('submit',$_POST)){
//Do something
echo "Form validation here.....";
}
?>
这取决于代码的执行顺序。如果您使用的是IDE,请在验证前设置一个断点并逐步完成。否则,我确信我们需要查看一些代码才能了解为什么会发生这种情况。
尝试:
<form id="username_check" name="username_check" method="post">
<table>
<tr>
<td><b>Username:</b></td>
<td><input name="Username" type="text" class="textfield" id="Username"
value="<?php echo($_POST['Username']); ?>"
/>
</td>
</tr>
<tr>
<td><b>Email Address:</b></td>
<td><input name="email_address" type="text" class="textfield" id="email_address"
value="<?php echo($_POST['email_address']); ?>"
/>
</td>
</tr>
<tr>
<td><b>Password:</b></td>
<td><input name="PASSWORD" type="password" class="textfield" id="PASSWORD" />
</td>
</tr>
<td><input type="submit" name="submit" value="Submit" /></td>
</table>
</form>
<?php
//If form was submitted
if (array_key_exists('submit',$_POST)){
//Do something
echo "Form validation here.....";
}
?>
如果您正在调用
echo $error_message;
在显示表单之前,消息会显示在表单之前。
如果您希望在表单后显示错误消息,只需在打印出表单后移动echo命令即可。
听起来像是在回显错误消息,然后回显表单。
反过来做。
不要回显错误,将其保存到变量中,并在表单打印后打印。
这样,您还可以每次检查表单验证期间是否发生错误,只需检查错误变量是否为emtpy/false