使用LDAP搜索和*似乎可以正常使用单词,但使用数字它似乎不起作用:
我的类(自制程序)的调试输出:
Query: Peter is string
Search for cn=Peter
Search for cn=Peter*
Found: 439
Query: 7565 is number
Search for PersonID=7565
Search for PersonID=7565*
Found: 0
Query: 7565025 is number
Search for
Found: 1
很难显示代码,因为它是类的集合,但执行搜索的部分是在for:
之后使用字符串E.g(这是伪造的)
ldap_search($connection, $base, "cn=Peter*", array("dn"));
ldap_search($connection, $base, "PersonID=7565", array("dn"));
ldap_search($connection, $base, "PersonID=7565025", array("dn"));
你知道为什么7565*
上的第二个查询没有返回结果,但是完整数字的最后一个会返回结果吗?
谢谢,
答案 0 :(得分:0)
您可能知道在LDAP目录中,您有一个SCHEMA。众所周知,SCHEMA提供类(类型)和属性。但事实上,在大多数目录中,SCHEMA为以下属性提供了两个其他功能:
示例:
attributeType ( 2.5.4.41 NAME 'name'
DESC 'name(s) associated with the object'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
在示例中,匹配规则是EQUALITY和SUBSTR,大部分时间都与Directory String
语法相关联(1.3.6.1.4.1.1466.115.121.1.15)。
您可以遇到以下匹配规则:
EQUALITY
ORDERING
SUBSTR
匹配规则SUBSTR
是您编写(cn=Peter*)
过滤器时常用的一个
所以我的建议是:查看您的SCHEMA中的属性“PersonID”,“语法/匹配规则”将为您提供可以应用的过滤器类型