我想知道是否有人知道通过使用PHP的LDAP扩展提供OU的DN来确定特定OU是否存在的好方法?
答案 0 :(得分:1)
在搞乱ldap_search函数一段时间后,我发现了一种相当可靠的方法。这适用于Active Directory,我不确定这是否适用于OpenLDAP。
/**
* @param $ldap
* @param $search_base
* @param $dn
* @return bool
*/
public function test_ou($ldap, $search_base, $dn)
{
$filter = '(&(objectClass=top)(|(objectClass=organizationalUnit)(objectClass=container))(distinguishedName=' . $dn . '))';
$results = ldap_get_entries($ldap, ldap_search($ldap, $search_base, $filter, array('objectGUID')));
return ($results['count'] > 0) ? true : false;
}
答案 1 :(得分:0)
我知道的很晚但也许它可以帮助将来的某个人 我创建像file_exists这样的dn_exists(返回true或false)它在参数中取一个OU来表示例如OU = Utilisateus,DC =公司,DC = dz,祝你好运:)
public function dn_exists($dn){
$filter="(&(ObjectClass=person))";
//$this->ldap_resource_link connection to LDAP
$read = @ldap_search($this->ldap_resource_link, $dn, $filter,array('ou'));
if(!$read){
return false;
}else{
return true;
}
}