【问题标题】:LDAP_search PHPLDAP_搜索 PHP
【发布时间】:2012-08-01 18:56:36
【问题描述】:

我需要用LDAP研究AD-PHP,但每次都没有成功。

我正在按 sAMAccountName 进行过滤。当我使用名称简单的用户(Ex: 打印机)时,一切正常,但当名称不简单(Ex: paulo.neves)时,它就不起作用了。

有什么想法吗?

$usuario = "保罗.内维斯"; $base_dn = "ou=Administradores, dc=tiisa, dc=com, dc=br"; $filter = "(&(objectClass=user)(objectCategory=person)(cn=*)(samaccountname=$usuario))"; if (!($search=@ldap_search($connect, $base_dn, $filter))) { die("无法搜索 ldap 服务器"); }

【问题讨论】:

  • 您有任何错误吗?如果有,是哪个?
  • 有没有可能.$filter 的保留字符,需要转义?
  • 另外,你如何定义“不简单”?对您或程序来说简单吗? (正如@Matt 提到的,如果用户名中有一个像. 这样的字符,你/程序认为它不简单吗?)
  • 必须用这个“.”这是 500 多个登录的默认设置。我无法改变
  • 归为一字登录。另一个是组成的。

标签: php ldap


【解决方案1】:

属性值在RFC4511 中定义。属性值中使用的八位字节由相关属性类型的语法定义。如果samAccountName 的语法允许点 (.) 字符而不要求对所述字符进行转义,则它们不需要转义。

母语总是可能需要转义字符。

  • 使用ldapsearch命令行工具验证cn值中带点的条目是否可以从目录中检索到

  • 只是为了笑,使用“\2e”而不是“.”来转义属性值中的点,看看会发生什么。

  • 可能与你的问题无关,但如果每个条目都有cn属性,则无需在搜索过滤器中使用当前过滤器组件cn=*

另见

【讨论】:

  • 谢谢!我做到了!最后缺少的帮助是什么!
【解决方案2】:

我愿意打赌. 必须被转义。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2019-03-15
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多