Start · Sprachen · PHP · Referenz · ldap_first_entry

ldap_first_entry

Funktion

Gibt die Kennung (Handle) des ersten Eintrags aus einem LDAP-Suchergebnis zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

ldap_first_entry(LDAP\Connection $ldap, LDAP\Result $result): LDAP\ResultEntry|false

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

Typ
LDAP\ResultEntry|false
Beschreibung
Gibt ein 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);
Erster Eintrag DN: cn=Max Mustermann,dc=example,dc=com

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);
Name: Max Mustermann Name: Erika Musterfrau

// 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.