php - 处理很多字段

标签 php mysql

基本上我有几个大表单(提交的很多字段)需要处理,它们非常相似但可能有一个或两个字段不同。首先,所有字段都被转义并分配给其原始名称的变量(因此 $_POST['f_name'] 将是 $f_name)。 然后我需要验证数据,比如某些必填字段必须存在,某些字段非常匹配(确认密码/电子邮件),某些字段必须通过正则表达式检查。我通过一个很长的 if/else 语句来做到这一点,其中每个失败都有它自己的错误消息。 现在我当然想避免这种笨拙代码的重复,而代之以一些循环功能,这将更容易编辑和维护。

然而,这会带来一些问题,尤其是执行检查和分配个别错误消息时。

我很想听听有关您将如何开发此类验证/错误报告功能的建议。

下面是代码的简短版本:

$name = mysqli_real_escape_string($mysqli, $_POST['name']);
$password = mysqli_real_escape_string($mysqli, $_POST['password']);
$password_re = mysqli_real_escape_string($mysqli, $_POST['password_re']);

if ($name == '') :
$data = "Please enter name";
elseif ($password != $password_re) :
$data = "Passwords don't match";
endif;

最佳答案

首先我会创建一个函数来清理你的帖子数组。

$clean_post = sanitize($_POST);

function sanitize($input) {
    if (is_array($input)) {
        foreach($input as $var=>$val) {
            $output[$var] = sanitize($val);
        }
    }
    else {
        if (get_magic_quotes_gpc()) {
            $input = stripslashes($input);
        }
        $input  = cleanInput($input);
        $output = mysql_real_escape_string($input);
    }
    return $output;
}

接下来,我将添加与字段同名的 div,并在 $data 数组中设置错误变量,并删除它们之间的 ifs,就我个人而言,我讨厌用勺子喂我的表单错误。

if ($name == '')
$data['name'] = "Please enter name";

if ($password != $password_re)
$data['password] = "Passwords don't match";

最后,我会将 div 的内容设置为 $data 数组值。

<div><?=$data[name];?></div>
<input type="text" name="name" value="<?=$clean_post[name];?>">

<div><?=$data[password];?></div>
<input type="password" name="password" value="<?=$clean_post[password];?>">
<input type="password" name="password_re" value="<?=$clean_post[password_re];?>">

希望对你有帮助

关于php - 处理很多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372692/

相关文章:

php - MySQL中如何处理动态列计数

php - 从 MySQL 数据库内部调用 PHP 变量

php - 在 php 中注释局部变量

php - 告诉 Ctags 不要解析评论中的内容

php - 如何为以下内容指定 mysql 级联规则

php - mysql数据库中没有记录时间

php - 注册页面不再插入我的数据库

mysql - 我的mysql用户定义函数有什么错误?

mysql - 无法通过 XAMPP 和 phpMyAdmin 访问 MySQL

php - 魔法函数 __sleep 不能返回私有(private)属性