批量验证PHP中的数据

时间:2010-12-04 17:02:09

标签: php mysql validation forms

我正在构建一个表单向导,需要一些关于如何以最有效的方式从多个表单中验证大量传入数据的建议。

我最初的方法是通过验证器函数运行传入数据,该函数将检查特定于该表单的值并确保存在所需字段,为某些表单提供正确的输入名称/值,电子邮件对于一些字段,其他人的整数等,但我的代码开始失控。我想知道我是否应该使用数据库来处理这类事情,因为我的应用程序中有大量用户数据。

基本上,用户可以选择三条不同的路径,每条路径至少有3步,最多6步,具体取决于选择的路径。

只要有意义,我就能以任何方式构建它。我对原生PHP解决方案或连接数据库持开放态度。

我非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

如果我理解正确的话您的问题源于大量的各种数据,你必须提供,并在每件输入的是得到处理什么检查?

一个办法是设定每个类型的验证您的验证功能(例如要求的文本,号码,电话,电子邮件等),并指定在HTML如何在每一个检查中的表单元素本身,解析上提交。你将不得不使用的name<input>,因为除了value这是一个表单提交的唯一的其他东西。

假设您有一个需要的phonenumber字段。你可以用HTML写出来:

<input type="text" name="officephone[required_phonenumber]" value="">

然后,你将不得不在提交脚本正确地解析它哪里会在$_POST['officephone']['required_phonenumber'],并根据你会知道什么验证器其价值运行。

如果您需要允许用户对输入进行自由格式命名,这种方式就足够了。表单向导只会根据用户需要在名称中添加适当的验证器标记。

关于表单提交的更通用的说明,与最终用户可以在POST上手动提交的任何内容一样,请注意输入名称可以被篡改以获得不同的验证或仅通过更改验证器标签来验证。

理想情况下,您将仅允许特定命名的输入(可能具有后缀的唯一ID),并且命名将在其中进行适当的验证。例如,表单向导可以将输入命名为:

<input type="text" name="phone_1" value="">

并且您的表单处理器将知道以“phone”开头的任何内容都应该被验证为电话号码,然后相应地使用。这样,您就不必显示如何验证HTML中的数据。

答案 1 :(得分:0)

我会发一个答案,希望这会有所帮助;

<?php

if(isset($_POST)) {
  foreach ($_POST as $key => $val) {
    if ($val == "") {
      echo "u no leave null main";
    } else if ($key == "name" && $val == "restricted_value") {
      echo "you are not permited";
    }
  }
}
?>

用它,你可以检查每个值,然后执行查询... dunno它有多大帮助