如何使用PHP进行表单验证?

时间:2014-01-30 14:30:43

标签: php html forms validation

好吧,我有以下问题:我的小测试网站即将完成,剩下的就是提交时的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个字段可以为空)

我很感激这方面的任何帮助,因为在完成我的网站之前就已经离开了!

提前致谢!

3 个答案:

答案 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 
}