表格验证

时间:2010-03-28 23:18:00

标签: php javascript mysql xhtml validation

我需要创建一个包含许多相同字段的表单,必须将其插入到数据库中,但我遇到的问题是,如果用户只填写一行或两行,表单仍然会提交空字段的空白数据以及用户填写的一个或两个字段。

如何检查尚未填写的行并将其从查询中删除? 或检查已填写的内容并将其添加到查询中。 。

thank_you.php文件将捕获$ _POST变量并将它们添加到数据库中。

<form method="post" action="thank_you.php">
         Name: <input type="text" size="28" name="name1" />
            E-mail: <input type="text" size="28" name="email1" />
            <br />
         Name: <input type="text" size="28" name="name2" />
            E-mail: <input type="text" size="28" name="email2" />
            <br />
         Name: <input type="text" size="28" name="name3" />
            E-mail: <input type="text" size="28" name="email3" />
            <br />
         Name: <input type="text" size="28" name="name4" />
            E-mail: <input type="text" size="28" name="email4" />

            <input type="image" src="images/btn_s.jpg" />
</form>

我假设我可以使用javascript或jQuery来完成此操作,我将如何进行此操作?

Thanx提前帮忙。

4 个答案:

答案 0 :(得分:2)

使用javascript进行表单验证很好,但你不应该依赖它。要做的第一件事就是检查PHP中$ _POST中的值,并确保它们看起来是有效的(或者至少检查它们是不是“”)。

要使用javascript检查,您可以在表单标记中放置一个onSubmit =“...”,如果表单数据无效(意味着“不提交表单”),则返回false。你也可能想要一个警报,或者你可以以某种方式修改页面以指出问题。我不会为你写出一个表单验证脚本。

答案 1 :(得分:2)

正如其他人所说,依靠javascript作为唯一的验证形式是不好的做法。将javascript视为一种帮助您的用户提交有效数据的方法 - 但您应该始终在服务器端进行验证。考虑到这一点,这是我的建议:

<form method="post" action="thank_you.php">
         Name: <input type="text" size="28" name="name1" />
            E-mail: <input type="text" size="28" name="email1" />
            <br />
         Name: <input type="text" size="28" name="name2" />
            E-mail: <input type="text" size="28" name="email2" />
            <br />
         Name: <input type="text" size="28" name="name3" />
            E-mail: <input type="text" size="28" name="email3" />
            <br />
         Name: <input type="text" size="28" name="name4" />
            E-mail: <input type="text" size="28" name="email4" />

            <input type="image" src="images/btn_s.jpg" />
</form>

<?php

$num = 4; //Number of times the field is repeated

for($i = 1; $i <= $num; $i++){
   if($_POST['name'.$i] != '' && $_POST['email'.$i] !=''){ //Only process if name and email are not blank
      $thisname = $_POST['name'.$i];
      $thisemail = $_POST['email'.$i];
      //Your code here
   }
}

?>

答案 2 :(得分:0)

您可以使用提交按钮调用JavaScript函数而不是提交表单来执行JavaScript验证。如果数据通过了验证标准,则JavaScript函数可以提交数据。但是,您不应完全依赖JavaScript验证。如果用户禁用了JavaScript,则不会验证其数据,因此您的PHP应用程序必须足够强大以处理空白数据。但是,您需要关注的不仅仅是空白数据。在将数据用于数据库之前,您需要验证垃圾的用户输入并清理数据。

答案 3 :(得分:0)

我不知道确切的PHP语法,但我会编写一些应该做的技巧的伪代码。基本的想法是,当您检索$ _POST值时,您将需要创建一个具有可接受值的新哈希,然后您可以将该哈希传递给构建查询或其他任何需要的方法。我这样做的方法是从哈希中完全删除无效值,所以看起来它们从来就不存在。显然,您可以采用不同的方式(将它们标记为无效等)。

$cleaned_args = array();

foreach ($_POST as $key => $value) {
    if ($_POST[$key] != "" && is_valid_email($_POST[$key])) {
        $cleaned_args[$key] = $_POST[$key];
    }

make_db_call_or_whatever($cleaned_args);

其中is_valid_email是PHP可能或您必须编写的方法。如果需要,您甚至可以将if子句概括为is_valid($_POST[arg])方法,但这取决于情况的复杂程度。

希望这有助于您了解如何执行此操作。我认为这比在表单提交之前使用JavaScript动态删除输入更容易,并且如上所述,比仅在客户端执行它更安全。