我有一个测试环境,包括两台Windows 2003服务器,一台运行IIS6.0和php 5.2,另一台是域 Controller 。我正在尝试获取一个 php 脚本来使用 LDAP 来查找服务器上的所有用户。
域是 openDesk.local,用户是默认 OU 用户。
到目前为止,我能够连接并绑定(bind)到域 Controller ,但我只是无法搜索它,我有大约 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"];
?>
最佳答案
LDAP 查询应括在括号内。您可能还想在不使用通配符的情况下搜索属性。像“(objectClass=user)”之类的东西可以用作过滤器。
您可以在此处阅读有关 AD 搜索语法的更多信息:http://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx
关于PHP LDAP 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5943491/