【问题标题】:PHP LDAP searchPHP LDAP 搜索
【发布时间】:2011-08-22 01:23:32
【问题描述】:

我有一个测试环境,包括两台windows 2003 服务器,一台运行IIS6.0 和php 5.2,另一台是域控制器。我正在尝试获取一个 php 脚本来使用 LDAP 来查找服务器上的所有用户。

域是 openDesk.local 和 users 和默认 OU 中的用户。

到目前为止,我能够连接并绑定到域控制器我只是无法搜索它,我有大约 1 小时的 LDAP 经验,所以我相当确定它与搜索有关的简单语法错误,当我运行这段代码,我得到“搜索失败”。

<?php

$host = "192.168.1.98"; 
$user = "username"; 
$pswd = "password";

$ad = ldap_connect($host)
  or die( "Could not connect!" );

ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3)
 or die ("Could not set ldap protocol");

$bd = ldap_bind($ad, $user, $pswd)
  or die ("Could not bind");

$dn = "OU=users,DC=openDesk,DC=local";

$filter = "cn=*";


$search = ldap_search($ad, $dn, $filter)
    or die ("Search failed");

$entries = ldap_get_entries($ad, $search);

echo $entries["count"];


?>

【问题讨论】:

  • 问题是用户是 CN 过滤器应该是 (objectClass=*)

标签: php ldap windows-server-2003


【解决方案1】:

LDAP 查询应该用括号括起来。您可能还想在不使用通配符的情况下搜索属性。像“(objectClass=user)”这样的东西可以用作过滤器。

您可以在此处阅读有关 AD 搜索语法的更多信息:http://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx

【讨论】:

    【解决方案2】:

    虽然这并不能直接回答您的问题,但是当我在另一个生命周期中进行 LDAP 工作时,我发现拥有 LDAP 浏览器在查询语法方面绝对是无价的。我用Softerra's LDAP Browser。一旦您可以看到路径,语法就不再是问题了。

    【讨论】:

    • 感谢您提供的信息,请看一下
    • 您可能还对 Apache Directory Studio(基于 Eclipse,免费)感兴趣:directory.apache.org/studio
    • 感谢看到路径使语法变得异常简单!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    相关资源
    最近更新 更多