我应该在注册页面上检查姓名的长度吗?


Should I check length of Name on Registration page?

我有更多的一般性问题,不完全是关于我的代码。我正在为我的网站的注册码添加验证(检查长度并删除非法字符)。但我想知道我是否先问人的名字和姓氏。我应该检查名称字段上的字符长度吗?

如果是这样,名称的最小和最大长度会很好。我在想 3-20 个字符。但是,如果某人的名字确实超过20个字符,我真的不想限制名称。任何反馈都很棒,谢谢:)

我发现名字和姓氏真实姓名字段VARCHAR(32)就足够了,我唯一建议对它们做的是在插入之前浏览htmlspecialchars(),因为有些人合法地在他们的名字中有"奇怪"的重音或非ASCII字符,大多数人不会通过像preg_match('/[a-z]+/i', $name);这样的检查来考虑, 参数化查询[你正在使用的,对]和htmlspecialchars()的组合应该可以保护你免受一阶和二阶注入攻击。

您可以使用iconv()将他们的名字音译/篡改为 ASCII,但这是命中注定的,再加上屁股上的痛苦,加上有些人可能会对此感到生气。

另一方面,如果您担心字段长度的空间效率,您应该知道VARCHAR中的VAR表示"可变长度",而包含"Ted"的VARCHAR(32)字段将仅占用 4 字节的存储空间。