【问题标题】:Is it a good practice to validate the same input field multiple times?多次验证同一个输入字段是一个好习惯吗?
【发布时间】:2017-04-11 01:48:19
【问题描述】:

我参与了一个使用一些现有 PHP 框架的 Web 开发项目。 Web 应用程序涉及从 Web 表单中获取一些用户输入数据,然后将数据连同一些内部生成的数据一起保存到数据库中的各种表中。当我调试现有代码时(当然,代码不是我设计的),我发现现有代码正在多次验证同一个输入字段。 Web 表单本身有大约 10 个输入字段。但是跟踪结果显示,仅 StringValidator 就有大约 250 次命中。我还没有统计其他验证器(如 IntegerValidators 等)的命中。

我在这里谈论的所有验证都在后端,并且验证规则对于同一个输入字段是相同的——也就是说,代码现在只是在同一个输入上多次使用相同的验证规则场地。例如,有一个 ID 为“first_name”的字段,代码正在验证该字段是否为字符串 5 次或 6 次。我不是在谈论用几个不同的验证器验证同一个输入字段(例如,必需、字符串、不包含外来字符等)

那么,您如何看待这种编码实践:好、好、坏?还是这种浪费PHP执行时间可以吗?

非常感谢您的意见!

【问题讨论】:

  • 代码执行肯定需要优化。考虑缓存经过验证的输入以供将来参考。

标签: php forms validation


【解决方案1】:

如果您正在查看的内容在两次检查之间没有变化,那么一遍又一遍地重新验证同一件事是没有意义的。检查一次并继续。否则是不好的做法,只会浪费时间,因为如果你检查的东西没有改变,你的结果也不会改变。

我希望这会有所帮助!

【讨论】:

    【解决方案2】:

    在我看来,就验证而言,可以多次验证同一个输入。会有一些情况,例如:

    • 该字段必须包含特定数量的字符
    • 该字段不得包含特殊字符(或仅包含 ascii 字符)
    • 该字段必须存在于某个数据库记录中
    • 该字段的记录(已找到)必须具有某些权限才能执行某些操作。

    但是使用 250 个验证来计算 10 个字段,我认为这太多了。你必须分解代码并找出它在做什么。如果它运行相同的验证规则超过两次,那就不好了。

    为什么我说两次可以?当我们在前端验证输入时,然后使用规则 A 进行 ajax 验证。然后在提交过程中,我们再次检查以在服务器中再次使用规则 A 进行验证。

    【讨论】:

    • 非常感谢您的评论!我所说的所有验证都在后端,验证规则是一样的。例如,有一个字段名称“first_name”,代码验证该字段是字符串 5 次还是 6 次。
    • 如果是这样,就没有必要使用相同的规则进行多次验证。
    猜你喜欢
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2014-12-22
    • 2020-08-25
    • 2015-05-08
    相关资源
    最近更新 更多