好吧,我有以下问题:我的小测试网站即将完成,剩下的就是提交时的PHP验证。但确实存在我的问题。当用户点击提交时,我似乎无法让它验证。
我搜索了大量网站,但在所有这些网站上,他们将网页提交到同一页面,然后我将页面提交到新页面。我不知道这与第一种方法有多么不同,但我似乎无法让它发挥作用。
我的表单中有5个字段需要:
<table>
<tr>
<td align="right">Naam:</td>
<td align="left"><input type="text" name="naam" onkeydown="return names(event)"/></td>
</tr>
<tr>
<td align="right">Woonplaats:</td>
<td align="left"><input type="text" name="woonplaats" onkeydown="return names(event)"/></td>
</tr>
<tr>
<td align="right">Straatnaam:</td>
<td align="left"><input type="text" name="straatnaam" onkeydown="return names(event)"/></td>
</tr>
<tr>
<td align="right">Huisnummer:</td>
<td align="left"><input type="text" class="formnumbers" name="huisnummer"/></td>
</tr>
<tr>
<td align="right">Telefoonnummer:</td>
<td align="left"><input type="text" name="telefoonnummer" onkeydown="return phonenumber(event)"/></td>
</tr>
</table>
这就是全部。我的表格行动如下:
<form action="?page=pizza_bestelling" method="post" name="orderform">
我知道PHP验证应该非常简单(至少我听说过),但我似乎无法自己解决,所以这就是我决定在这里提出的问题。
现在它需要做的就是检查这5个字段中的一个是否为空,如果是,则不提交。否则提交。
(请记住,我的表单中有16个字段,它只针对这5个特定字段,其他11个字段可以为空)
我很感激这方面的任何帮助,因为在完成我的网站之前就已经离开了!
提前致谢!
答案 0 :(得分:1)
提交后,您将丢失链接的“?page = pizza_bestelling”,如果需要,可以使用该值将其设置为隐藏输入。
将方法设置为<= p>形式的method =“post”
在同一页面上你需要像
这样的东西function validate_form($data)
{
//rules that will end with return false; if they are not valid
// example
if (!isset($data["naam"]) || $data["naam"] == '') return false; // if the name is not set or it's empty
// return true if all validation checks are passed
return true;
}
if ($_SERVER["REQUEST_METHOD"] === "POST")
{
$form_data['naam'] = $_POST['naam'];
$form_data['woonplaats'] = $_POST['woonplaats'];
// and so forth for each variable
// run the validate_form function for the data you got through POST
validate_form($form_data);
}else
{
//form displayed here
}
答案 1 :(得分:0)
您想要设置一个errors
数组来存储任何错误,并允许您在必要时将其打印出来。
然后以下列方式检查每个变量:
$errors = array(); //initialise error array
if (empty($_POST['naam'])) {
$errors[] = 'You forgot to add a name';
} else {
$name = trim($_POST['naam']);
}
这将检查naam
是否输入并将消息写入errors数组(如果它为空),或者将值分配给$name
变量(如果不是)。
完成所有输入后,您可以检查错误数组:
if (empty($errors)) { // If everything's OK.
//do what you need to do
} else {
echo '<p>The following errors occurred:<br/>';
foreach ($errors as $msg) {
echo "$msg<br/>\n";
}
echo '<p>Please try again</p>';
}
这只会检查空字段当然 - 您应该对有效的电子邮件等进行更多验证。出于可用性目的,您应该真正查看带有粘性字段的单页解决方案。
答案 2 :(得分:0)
按如下方式为每个人做一个:
$allowed = array("naam","woonplaats","stratnaam","formnumbers","telefoonnummer");
foreach ($allowed as $key => $val){
if($_POST[$key] == "")
$errors = true;
}
if($errors){
// don't submit
}
else {
// submit
}