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

时间:2012-07-06 08:54:32

标签: php validation zend-framework ldap

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

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

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

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

我使用单独的字段用于用户名,其中包含“text.text”,文本为A-Za-z字符。

我不会发布代码,因为我只是需要一些指导,并不确定最新的做法是什么。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

虽然存在实际限制,但LDAP客户端不应假设服务器能够强制执行属性值的非零长度。某些属性语法的长度定义为非零(例如DirectoryString),但没有定义上限,因此,客户端不应假设服务器强制执行上限。 / p>

另见