Signatur
Beschreibung
ldap_first_entry() liefert das Handle des ersten Eintrags innerhalb eines LDAP-Ergebnisses, das zuvor durch Funktionen wie ldap_search(), ldap_list() oder ldap_read() erzeugt wurde. Das zurückgegebene LDAP\ResultEntry-Objekt kann anschließend genutzt werden, um die Attribute dieses Eintrags mit Funktionen wie ldap_get_attributes() oder ldap_get_dn() auszulesen.
Zusammen mit ldap_next_entry() bildet diese Funktion die Grundlage, um Ergebnismengen manuell zu iterieren. So kann man Eintrag für Eintrag durch das Ergebnis navigieren, ohne alle Einträge auf einmal in den Speicher zu laden.
In modernem Code wird häufig ldap_get_entries() als bequemere Alternative eingesetzt, da sie alle Einträge auf einmal als assoziatives Array liefert. Die manuelle Iteration mit ldap_first_entry() und ldap_next_entry() ist jedoch speichereffizienter bei sehr großen Ergebnismengen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ldap Pflicht | LDAP\Connection | Eine aktive LDAP-Verbindungsressource, die zuvor mit ldap_connect() und ldap_bind() erzeugt wurde. |
|
| $result Pflicht | LDAP\Result | Das Ergebnis-Handle einer LDAP-Suchanfrage, z. B. zurückgegeben von ldap_search(). |
Rückgabewert
LDAP\ResultEntry-Objekt zurück, das den ersten Eintrag im Ergebnis repräsentiert. Wenn das Ergebnis leer ist oder ein Fehler auftritt, wird false zurückgegeben.Beispiele
Ersten LDAP-Eintrag abrufen und DN ausgeben
<?php
$ldap = ldap_connect('ldap://localhost');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheim');
$result = ldap_search($ldap, 'dc=example,dc=com', '(objectClass=person)');
$entry = ldap_first_entry($ldap, $result);
if ($entry !== false) {
$dn = ldap_get_dn($ldap, $entry);
echo "Erster Eintrag DN: " . $dn . "\n";
} else {
echo "Keine Einträge gefunden.\n";
}
ldap_unbind($ldap);
Manuelle Iteration durch alle LDAP-Einträge
<?php
$ldap = ldap_connect('ldap://localhost');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheim');
$result = ldap_search($ldap, 'dc=example,dc=com', '(objectClass=person)');
$entry = ldap_first_entry($ldap, $result);
while ($entry !== false) {
$attrs = ldap_get_attributes($ldap, $entry);
$cn = $attrs['cn'][0] ?? '(unbekannt)';
echo "Name: " . $cn . "\n";
$entry = ldap_next_entry($ldap, $entry);
}
ldap_unbind($ldap);
// Wichtig · Fallstricke
Hinweis zur Versionierung: Ab PHP 8.1.0 akzeptiert die Funktion ein LDAP\Connection-Objekt statt einer Ressource, und gibt ein LDAP\ResultEntry-Objekt statt einer Ressource zurück. Älterer Code, der auf Ressourcen-Handles prüft, muss ggf. angepasst werden.
Sicherheit: LDAP-Verbindungen sollten nach Möglichkeit über LDAPS (ldaps://) oder mit StartTLS (ldap_start_tls()) abgesichert werden, um Anmeldedaten und Ergebnisse vor Abhören zu schützen. Benutzereingaben, die in LDAP-Filtern verwendet werden, müssen mit ldap_escape() escaped werden, um LDAP-Injection-Angriffe zu verhindern.