Signatur
Beschreibung
ldap_count_entries() zählt die Anzahl der Datensätze, die bei einer zuvor durchgeführten LDAP-Suche (z. B. mit ldap_search(), ldap_list() oder ldap_read()) gefunden wurden. Die Funktion arbeitet auf dem Ergebnis-Handle, das von diesen Suchfunktionen zurückgegeben wird.
Die Funktion ist besonders nützlich, um vor der eigentlichen Iteration über die Ergebnisse zu prüfen, ob überhaupt Einträge vorhanden sind, oder um Paginierungs- und Statistik-Logiken zu implementieren. Sie vermeidet das aufwändige Traversieren aller Einträge nur zum Zweck des Zählens.
Gibt false zurück, wenn ein Fehler aufgetreten ist, beispielsweise wenn das übergebene Result-Handle ungültig ist. Im Erfolgsfall liefert sie einen int-Wert ≥ 0 — auch wenn die Suche keine Ergebnisse lieferte (0).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ldap Pflicht | LDAP\Connection | Eine gültige LDAP-Verbindungsressource, die zuvor mit ldap_connect() erstellt und mit ldap_bind() authentifiziert wurde. |
|
| $result Pflicht | LDAP\Result | Ein LDAP-Ergebnis-Handle, wie es von ldap_search(), ldap_list() oder ldap_read() zurückgegeben wird. |
Rückgabewert
false zurück, wenn ein Fehler aufgetreten ist (z. B. ungültiges Result-Handle).Beispiele
Prüfen ob LDAP-Benutzer gefunden wurden
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
if (!ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheim')) {
die('LDAP-Bind fehlgeschlagen.');
}
$baseDn = 'ou=users,dc=example,dc=com';
$filter = '(objectClass=inetOrgPerson)';
$result = ldap_search($ldap, $baseDn, $filter);
$count = ldap_count_entries($ldap, $result);
if ($count === false) {
echo 'Fehler beim Zählen der Einträge.' . PHP_EOL;
} elseif ($count === 0) {
echo 'Keine Benutzer gefunden.' . PHP_EOL;
} else {
echo "Gefundene Benutzer: $count" . PHP_EOL;
}
ldap_unbind($ldap);
Zählen von Einträgen mit eingeschränktem Scope (ldap_list)
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=readonly,dc=example,dc=com', 'readonly-pass');
// Nur eine Ebene tief suchen (nicht rekursiv)
$result = ldap_list($ldap, 'ou=groups,dc=example,dc=com', '(objectClass=groupOfNames)');
$anzahl = ldap_count_entries($ldap, $result);
echo "Anzahl der Gruppen auf oberster Ebene: $anzahl" . PHP_EOL;
// Nur bei tatsächlichen Ergebnissen iterieren
if ($anzahl > 0) {
$entry = ldap_first_entry($ldap, $result);
do {
$attrs = ldap_get_attributes($ldap, $entry);
echo 'Gruppe: ' . $attrs['cn'][0] . PHP_EOL;
} while ($entry = ldap_next_entry($ldap, $entry));
}
ldap_unbind($ldap);
// Wichtig · Fallstricke
Versionsinformation: Ab PHP 8.1 sind die Parameter und Rückgabewerte auf LDAP\Connection und LDAP\Result typisiert (statt zuvor untypisierter Ressourcen). Code, der ältere Ressource-Typen erwartet, muss ggf. angepasst werden.
Fehlerbehandlung: Der Rückgabewert false sollte explizit mit === false geprüft werden, da 0 (keine Ergebnisse) ansonsten fälschlicherweise als Fehler interpretiert werden könnte.
Performance: Die Funktion ist deutlich effizienter als das manuelle Iterieren über alle Einträge mit ldap_next_entry() nur zum Zweck des Zählens, da sie intern auf die bereits vom LDAP-Server gelieferte Treffermenge zugreift.