Bonjour a tous

j'ai ce code qui me permet de me connecter a un Active Directory (AD) et extraire des infos:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
//Settings
 error_reporting (E_ALL ^ E_NOTICE);   
 ini_set("memory_limit","500M");
 ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
 //ldap_set_option($ad, LDAP_OPT_SIZELIMIT, 500);
 ldap_set_option($ad, LDAP_OPT_REFERRALS, 0); 
 
$ad = ldap_connect("ldap://host") or die("Couldn't connect to AD!");
$bd = ldap_bind($ad,"user@host.com","password") or die("Couldn't bind to AD!");
 
//Auth
 
$dn = "OU=MAD,DC=host,DC=com";	
$filter = "(&(objectCategory=person)(objectClass=user)(physicaldeliveryofficename=A*)(employeeid=1*))";
 
//Auth
$result = ldap_search($ad, $dn, $filter);
$entries = ldap_get_entries($ad, $result);
$total= ldap_count_entries($ad,$result);
echo $total; 
//Bucle
 for ($i=0; $i<$entries["count"]; $i++)
   {
	echo $entries[$i]["employeeid"][0]." ".$entries[$i]["physicaldeliveryofficename"][0]." ".$entries[$i]["name"][0]." ".$entries[$i]["accountexpires"][0]."\n";
    }
ldap_unbind($ad);
?>

Le probleme c'est que avec AD il existe une limite de 1000 registres MAX par requete. Certaines requetes ont plus de 1000 lignes de resultats...donc pour palier a ce probleme j'avais pensé faire une boucle sur l'un des attributs du filtre, mais voula je sais pas comment faire:

$filter = "(&(objectCategory=person)(objectClass=user)(physicaldeliveryofficename=A*)(employeeid=1*))";

Voyez, le officename=A* si je laisse comme ca, et que je repete le script avec B, C D...etc ca marche bien.
Comment puis-je faire une boucle ici?

D'avance merci pour l'exemple.