验证 PHP 中的名字和姓氏以存储在 OpenLDAP 中


Validating first names and last names in PHP to store in OpenLDAP

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

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

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

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

我正在使用一个单独的用户名字段,该字段将由"text.text"组成,文本是 A-Za-z 字符。

我不是在发布代码,因为我只是需要一些指导,不确定这里的最佳实践是什么。

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

这对于 LDAP 来说是一个挑战,因为不能保证目录能够理解用户输入的字符集。不过,有一个简单的解决方案:在将值存储在LDAP中之前base64_encode()这些值,并在输出时base64_decode()它们。

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

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

参见

  • LDAP:语法和匹配规则