ldap_search排除电子邮件

时间:2015-08-07 17:23:59

标签: php active-directory ldap

请考虑以下事项。

$ad=ldap_connect("ldap.domain.local"); 
$dn_Accounting = 'OU=Accounting,OU=Users,OU=MyBusiness,DC=domain,DC=local';
$attributes = array("mail", "cn");
$filter = "(mail=*)";
$ldap_username = 'DOMAIN\\internalweb_ldap';
$ldap_password = 'password';
$bd=ldap_bind($ad, $ldap_username, $ldap_password); 
$result_Accounting = ldap_search($ad, $dn_Accounting, $filter, $attributes);
$entries_Accounting = ldap_get_entries($ad, $result_Accounting);
    for ($i=0; $i<$entries_Accounting["count"]; $i++){
        echo $entries_Accounting[$i]["cn"][0]." (".$entries_Accounting[$i]["mail"][0]."),<br />";
    }

如何过滤以排除$filter中的特定电子邮件? 例如,如果我想要排除justin@domain.comjohn@domain.com,我如何才能将过滤条件设置为不包含这些电子邮件。

2 个答案:

答案 0 :(得分:0)

$ filter ='(&amp;(mail = *)(!(|(mail = justin@domain.com)(mail =john@domain.com))))'

(我不确定目前的右括号)。

过滤器的邮件值 必须包含justin@domain.com john@domain.com之一。

逻辑组合在括号中,然后是“&amp;”之一(AND)'|' (或)或'!' (不)。

答案 1 :(得分:0)

$filter = "(&(mail=*)(!(mail=justin@domain.com))(!(mail=john@domain.com)))";