Marco: Probleme mit LDAP Abfrage (mehr als 1000)

Beitrag lesen

Hallo zusammen

Ich habe ein kleines Problem und zwar muss ich mit PHP eine LDAP Abfrage machen welches mein AD ausliest. Leider sind es mehr als 1000 Benutzern. Das Problem ist, dass das AD standardmässig nur 1000 Objekte zum abfragen zuläst und ich diese Policy auf dem Windows Server nicht ändern kann / darf!

Wie kann ich es mit PHP lösen, damit ich es "Schrittweise" auslesen kann um dann trotzdem alle Benutzer zu erhalten.

Mein Script sieht Momentan so aus:

<?php  
  
	  
	$ldap_server = 'server';  
	$ldap_user = 'benutzer';  
	$ldap_password = 'paswort';  
	$ldap_basedn = 'dc=xxx,dc=zzz';  
	$ldap_port = "3268";  
	  
	  
	// Nach was soll gesucht werden?  
	$filter = "(&(objectClass=user) (samaccountname=*))";  
	// Verbinde mit Ldap Server  
	$ds = ldap_connect($ldap_server, $ldap_port) or die (ldap_error($ds));  
	  
	// Angeblich nötig für den Zugriff auf ein Win2003 AD  
		ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);  
		ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);  
		ldap_set_option($ds, LDAP_OPT_SIZELIMIT, 400);  
  
  
	// Wenn Verbindung erfolgreich:  
		if($ds){  
			$ldapbind = @ldap_bind($ds,$ldap_user,$ldap_password) or die (ldap_error($ds));  
			$search = ldap_search($ds,$ldap_basedn,$filter) or die (ldap_error($ds));  
			$data = ldap_get_entries($ds,$search);  
			$anzahl = ldap_count_entries($ds,$search);  
			echo "Es gibt ".$anzahl." Einträge im AD";  
			  
			for ($i=0; $i<$anzahl;$i++) {  
				$ergebnis[$i]["sn"] = utf8_decode($data[$i]["sn"][0]);  
				$ergebnis[$i]["givenname"] = utf8_decode($data[$i]["givenname"][0]);  
				$ergebnis[$i]["telephoneNumber"] = utf8_decode($data[$i]["telephonenumber"][0]);  
				$ergebnis[$i]["physicalDeliveryOfficeName"] = utf8_decode($data[$i]["physicaldeliveryofficename"][0]);  
			}  
			  
		}else{  
			echo "Fehler!";  
		}  
		  
		  
echo "<html>";  
echo "<table border=0>";  
for ($i=0; $i<$anzahl; $i++) {  
    echo "<tr>";  
   echo "<td width=100>" . $i . "</td>";  
	echo "<td width=200>" . $ergebnis[$i]["sn"] . ", ".$ergebnis[$i]["givenname"]. "</td>";  
	echo "<td width=200>" . $ergebnis[$i]["cn"] . ", ".$ergebnis[$i]["givenname"]. "</td>";  
    echo "<td width=200>" . $ergebnis[$i]["telephoneNumber"] . "</td>";  
    echo "<td width=150>" . $ergebnis[$i]["physicalDeliveryOfficeName"] . "</td>";  
}  
echo "</table>";  
  
echo "</body></html>";  
		  
	  
?>  

Es werden jedoch nur diese 400 angezeigt und es kommt eine Meldung:
ldap_search() [function.ldap-search]: Partial search results returned: Sizelimit exceeded

Wie schaffe ich es, dass es mir alle anzeigt in den 400 Schritten. Ich bin euch für eure Hilfe sehr dankbar!

Marco