我在PHP中编写了一个ldap查询类来验证用户身份。 我需要查询ldap服务器到多个OU,这是一个例子:
DC=mydomain,DC=com
OU=MyBusiness
CN=MyGroup
DC=mydomain,DC=com
OU=Users
CN=Domain Users
在这个域中,我有两个OU,一个我的自定义OU和一个组。另一种是标准的Windows OU。 我想创建一个查询来获取两个组,一个在OU = Users内,另一个在OU = MyBusiness中......但似乎是不可能的。 我试过这个连接:
$r=ldap_connect($ldap_host,$ldap_port);
ldap_bind($r,$user,$passw);
$domain="OU=MyBusiness,DC=mydomain,DC=com";
$sr=ldap_search($r, $domain ,"(&(objectClass=user)(sAMAccountName=".$user."))");
但只有MyBusiness的小组,我也试过这些:
$domain="OU=Users,DC=mydomain,DC=com"; //gets only the other group
$domain="DC=mydomain,DC=com"; //error
$domain="OU=*,DC=mydomain,DC=com"; //error
但没有人工作。我该怎么办?
答案 0 :(得分:0)
在这里你去 - 这应该这样做。 (那些ldap_options是顶级" DC = mydomain,DC = com"搜索)
$r=ldap_connect($ldap_host,$ldap_port);
ldap_set_option($r, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($r, LDAP_OPT_REFERRALS, 0);
ldap_bind($r,$user,$passw);
$search = "(&(objectClass=user)(sAMAccountName=$user))";
$attributes = array("cn","displayName","dn");
$sr=ldap_search($r,$domain,$search,$attributes);
$results = ldap_get_entries($r,$sr);
foreach ($results as $result) {
echo $result['cn'];
}