PHP_LDAP: 测试组织单位是否存在?

PHP_LDAP: Test that Organizational Unit exist?

我想知道是否有人知道通过使用 PHP 的 LDAP 扩展提供 OU 的 DN 来确定特定 OU 是否存在的好方法?

在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;
}

我知道的晚了,但也许它可以帮助将来的人 我创建 dn_exists 就像 file_exists (return true 或 false )它在参数中带一个 OU 例如 OU=Utilisateus,DC=company,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'));
    return $read;

}