这是一个棘手的问题,所以我会尽我所能。我是一个菜鸟,对PHP知之甚少,所以要善良:D
我想验证作为表单处理程序的页面上的表单,例如我的第一页表单(取自w3schools):
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
所以'welcome.php'是我的'POST'表单处理程序页面。但是在这个页面上我还想要更多的表单,在这个页面上我想要验证它上面的表格。比如说一些形式如:
<form method="post" action='?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>'>
<input type ="text" name="newBalance"><span class="error">*<?php echo $balanceErr;?></span>
</form>
所以我会有一些PHP验证,如:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["newBalance"])) {
$balanceErr = "Balance is required";
} else {
$balance = test_input($_POST["newBlance"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$balanceErr = "Only letters and white space allowed";
}
}
......等等。
问题是,只要我进入此页面,它就会直接从上一页验证表单,并在页面上显示空字段的错误。 有没有办法避免这种情况,所以我需要一种新方法?
答案 0 :(得分:3)
据我了解您的问题,您需要先检查验证代码段中提交的表单。
以第二种形式插入新的隐藏字段,当您验证newBalance
字段时,请检查是否设置了action
。只有在提交form2时才会设置action
字段。
以下代码可以帮助您。
<强>的welcome.php 强>
// Form2
<form method="post">
<input type ="text" name="newBalance"><span class="error">*<?php echo $balanceErr;?></span>
<input type ="hidden" name="action" value="true" />
</form>
<强>验证强>
if ($_SERVER["REQUEST_METHOD"] == "POST" and isset($_POST['action'])) {
if (empty($_POST["newBalance"])) {
$balanceErr = "Balance is required";
} else {
$balance = test_input($_POST["newBlance"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$balanceErr = "Only letters and white space allowed";
}
}
上面的代码可以帮助你。