2011-05-09 217 views
2

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

域名为openDesk.local,用户和默认的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"]; 


?> 
+1

的问题是,用户是CN和过滤器应在过(objectClass的= *) – 2011-05-09 23:38:29

回答

1

尽管这并不直接回答你的问题,我在另一生做LDAP的工作,我发现有一个LDAP浏览器绝对是无价的,当它来查询语法。我用Softerra's LDAP Browser。一旦你可以看到的路径,语法不再是一个问题。

+0

感谢您的信息我带alook – 2011-05-09 23:19:35

+1

您可能也有对Apache Directory Studio感兴趣(基于Eclipse,免费):http://directory.apache.org/studio/ – 2011-05-09 23:31:14

+0

感谢看到路径让语法变得非常简单! – 2011-05-09 23:38:59

1

LDAP查询应括在括号内。您可能还想在不使用通配符的情况下搜索属性。像“(objectClass = user)”就像一个过滤器。

你可以阅读更多有关广告搜索语法在这里:http://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx

+0

感谢您的信息! – 2011-05-09 23:40:21