Results from ActiveDirectory may be ordered by objectSid.
We can get all users for each page size by modify filter.
<?php
$lastsid='';
while (1) {
$filter = '(objectClass=user)';
if (strlen($lastsid)) {
list($v)=array_values(unpack('V',substr($lastsid,24))); $s = substr($lastsid,0,24).pack('V',1+$v); $s = preg_replace('/../','\\\\$0',bin2hex($s)); $filter = '(&'.$filter.'(objectSid>='.$s.'))'; }
$res = ldap_search($ldap,$basedn,$filter,array('objectSid','cn'));
if (!ldap_count_entries($ldap,$res)) {
break;
}
for ($ent=ldap_first_entry($ldap,$res); $ent; $ent=ldap_next_entry($ldap,$ent)) {
list($lastsid) = ldap_get_values_len($ldap,$ent,'objectSid');
}
}
?>