Start · Sprachen · PHP · Referenz · ldap_next_attribute

ldap_next_attribute

Funktion

Gibt das nächste Attribut (Merkmal) eines LDAP-Ergebniseintrags zurück und wird zusammen mit <code>ldap_first_attribute()</code> zum Iterieren über alle Attribute eines Eintrags verwendet.

seit PHP 4.0.0 Kategorie: misc

Signatur

ldap_next_attribute(LDAP\Connection $ldap, LDAP\ResultEntry $entry, array &$ber_identifier): string|false

Beschreibung

ldap_next_attribute() wird verwendet, um durch die Liste der Attribute eines LDAP-Ergebniseintrags zu iterieren. Nachdem ldap_first_attribute() das erste Attribut zurückgegeben hat, liefert ldap_next_attribute() bei jedem weiteren Aufruf das nächste Attribut, bis alle Attribute durchlaufen wurden und false zurückgegeben wird.

Die Funktion benötigt neben der LDAP-Verbindung und dem Ergebniseintrag auch den internen BER-Zeiger ($ber_identifier), der von ldap_first_attribute() gesetzt und bei jedem Aufruf von ldap_next_attribute() automatisch weitergeführt wird. Ab PHP 8.0 ist dieser Parameter optional und wird intern verwaltet.

Typischerweise wird das Muster ldap_first_attribute() / ldap_next_attribute() in einer for- oder while-Schleife verwendet, um alle Attribute eines LDAP-Eintrags dynamisch auszulesen, wenn deren Namen nicht im Voraus bekannt sind. In vielen modernen Anwendungsfällen kann stattdessen auch ldap_get_attributes() verwendet werden, das alle Attribute auf einmal als Array zurückgibt.

Parameter

Name Typ Default Beschreibung
$ldap Pflicht LDAP\Connection Eine gültige LDAP-Verbindungsressource, die zuvor mit ldap_connect() erzeugt wurde.
$entry Pflicht LDAP\ResultEntry Ein LDAP-Ergebniseintrag, der durch ldap_first_entry() oder ldap_next_entry() ermittelt wurde.
$ber_identifier array Der interne BER-Zeiger, der die aktuelle Position beim Iterieren über die Attribute speichert. Wird von ldap_first_attribute() initialisiert und von ldap_next_attribute() automatisch weitergesetzt. Ab PHP 8.0 wird dieser Parameter nicht mehr verwendet und sollte weggelassen werden.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Namen des nächsten Attributs als Zeichenkette zurück. Sind keine weiteren Attribute vorhanden, wird false zurückgegeben.

Beispiele

Alle Attribute eines LDAP-Eintrags iterieren

<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheimesPasswort');

$result = ldap_search($ldap, 'dc=example,dc=com', '(uid=jdoe)');
$entry = ldap_first_entry($ldap, $result);

if ($entry !== false) {
    // Erstes Attribut holen
    $attribute = ldap_first_attribute($ldap, $entry);

    while ($attribute !== false) {
        $values = ldap_get_values($ldap, $entry, $attribute);
        echo $attribute . ': ' . implode(', ', array_slice($values, 0, $values['count'])) . PHP_EOL;

        // Nächstes Attribut holen
        $attribute = ldap_next_attribute($ldap, $entry);
    }
}

ldap_unbind($ldap);
uid: jdoe cn: John Doe mail: jdoe@example.com sn: Doe

Vergleich mit ldap_get_attributes (kompaktere Alternative)

<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap);

$result = ldap_search($ldap, 'dc=example,dc=com', '(uid=jdoe)');
$entry = ldap_first_entry($ldap, $result);

if ($entry !== false) {
    // Alle Attribute auf einmal als Array laden
    $attributes = ldap_get_attributes($ldap, $entry);

    for ($i = 0; $i < $attributes['count']; $i++) {
        $attrName = $attributes[$i];
        echo $attrName . PHP_EOL;
    }
}

ldap_unbind($ldap);
uid cn mail sn

// Wichtig · Fallstricke

Hinweis zur PHP-Version: Ab PHP 8.0.0 erwartet die Funktion Objekte vom Typ LDAP\Connection und LDAP\ResultEntry anstelle der früheren Ressourcen-Typen. Der Parameter $ber_identifier wurde ebenfalls als veraltet markiert und in PHP 8.0 entfernt.

Alternative: Wenn alle Attribute eines Eintrags auf einmal benötigt werden, ist ldap_get_attributes() die einfachere und bevorzugte Methode, da sie alle Daten als strukturiertes Array zurückgibt, ohne manuell iterieren zu müssen.

Fehlerbehandlung: Achte darauf, Rückgabewerte zu prüfen. Falls der übergebene Eintrag ungültig ist oder keine Attribute enthält, gibt die Funktion sofort false zurück.