1

您好我正在尝试验证一些用户输入,但我不确定正确的方法是什么。

我想验证用户创建表单的名字和姓氏字段。我在 Zend 框架中使用 PHP,所以我将编写一个验证器。在做了一些研究之后,我认为我真的应该允许所有 UTF8 字符,开头或结尾没有空格。我不确定正则表达式,但我稍后会发现,我很可能会使用 php 的 preg_match。

我将这些详细信息存储在 OpenLDAP 中,使用 sn 字段作为姓氏,将 givenName 字段作为名字。我应该如何限制名称?OpenLDAP 中的长度是否有限制,我需要检查它接受的字符还是接受所有字符?

我是否应该验证名字和姓氏,还是应该让用户输入他们想要的内容?

我为用户名使用了一个单独的字段,该字段由“text.text”组成,文本是 A-Za-z 字符。

我没有发布代码,因为我只是需要一些指导,不太确定这里的最佳做法是什么。

4

2 回答 2

1

验证名称是一个坏主意。对于名称中允许的内容没有通用规则,尤其是当您还想允许非西方文本时。

这对 LDAP 提出了挑战,因为无法保证目录能够理解用户输入的字符集。不过,有一个简单的解决方案:base64_encode()在将它们存储到 LDAP 之前的值,以及base64_decode()它们在出路时的值。

于 2012-07-06T09:19:47.730 回答
1

无需验证名称。目录服务器模式指定所有属性的语法,包括givenNamesn。服务器将正确编码任何显示的名称。如果一个DirectoryString值以空格开头或结尾,服务器将对该值进行 base64 编码以进行存储。

尽管存在实际限制,但 LDAP 客户端不应假定服务器具有强制属性值的非零长度的能力。一些属性语法被定义为非零长度(例如DirectoryString),但没有定义上限,因此,客户端不应假定服务器强制执行上限。

也可以看看

于 2012-07-06T09:46:34.390 回答