【问题标题】:Validating entered user data验证输入的用户数据
【发布时间】:2010-05-28 12:01:23
【问题描述】:

这是一个普遍的问题,但我做的是桌面应用程序。

我应该检查例如超过 50 个字符的名字还是这是个人喜好问题?

或者我应该检查 > 50 个字符,因为用户可能会用 10000000 个字符淹没我的数据库?

编辑:

看来我搞砸了...我应该说,我的桌面应用程序中的名字/姓氏来自老师输入的学生...

所以输入“Michael”和“Kramer”的 50 个字符绰绰有余,你不觉得吗? ;-)

【问题讨论】:

  • 没关系,你需要更多:P

标签: validation user-input


【解决方案1】:

您应该始终验证您的输入数据。如果不出意外,我假设您的数据库字段是一个设置字段,因此您应该阻止用户输入更长的字符串,因为您无法存储它们,因此太长的名称可能会在数据库插入失败时引发某种错误。

【讨论】:

  • @Cyclon Cat - 通常是的,但可能取决于数据库,我对使用一些刚刚截断数据的数据库(或至少某种数据存储)有一些模糊的记忆。
【解决方案2】:

世界的方式多种多样,虽然 50 个字符对于 WASP 的名字来说似乎已经足够了,但我不会冒险宣布任何地方的人都没有一个更长的名字.相反,我会确保我的应用程序在任何地方都不会使用固定长度的缓冲区,因此如果有人输入了 10,000,000 个字符长的名字,那么所发生的情况就是它会使用比平时多几个字节。

【讨论】:

  • 如果您必须将其保存在数据库中怎么办? TEXT 名称字段? 50 绝对是一个名字太短,但 10,000,000 可能有点太长了。
  • 在数据库中没有固定宽度的文本字段将是一个好的开始。
【解决方案3】:

另外请记住,虽然大多数人没有任何一个名字超过 50 个字符,但他们可能有非常许多个名字。例如,考虑一下 Adolph Blaine Charles David Earl Frederick Gerald Hubert Irvin John Kenneth Lloyd Martin Nero Oliver Paul Quincy Randolph Sherman Thomas Uncas Victor William Xerxes Yancy Zeus Wolfeschlegelsteinhausenbergerdorft Senior 先生。不让用户输入他们的全名几乎是一件非常糟糕的事情。

【讨论】:

  • 更不用说前缀和后缀了。如果你不允许这些,你可能有像“Smith, Jr”这样的姓氏。或“史密斯三世”。
【解决方案4】:

多级验证策略通常是合适的。在用户级别,不要允许任何会在以后导致错误的事情。但是,如果您依赖 JavaScript 验证,请注意它很容易被绕过。您的业​​务和/或数据层也应该在存储到数据库之前进行验证。如果您将数据发送到服务,情况也是如此。

可用性的客户端验证。服务器端验证可靠性和完整性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2017-09-11
    相关资源
    最近更新 更多