PHP Conference Nagoya 2025

ldap_get_values

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_get_valuesLiefert alle Werte eines Eintrags aus einem Ergebnis

Beschreibung

ldap_get_values(LDAP\Connection $ldap, LDAP\ResultEntry $entry, string $attribute): array|false

Liest alle Werte eines Merkmals im Ergebniseintrag.

Da diese Funktion eine Ergebniseintragskennung (entry) benötigt, muss ein Aufruf einer der LDAP-Suchfunktionen und einer der Funktionen, die einen einzelnen Eintrag liefern, vorausgehen.

Die Anwendung ist entweder hart kodiert, um bestimmte Merkmale (z. B. "Nachname" oder "E-Mail") zu suchen, oder die Funktion ldap_get_attributes() muss verwendet werden, um herauszufinden, welche Merkmale für einen gegebenen Eintrag vorhanden sind.

Parameter-Liste

ldap

Eine LDAP\ConnectionInstanz, die von ldap_connect() zurückgegeben wurde.

entry

Eine LDAP\ResultEntry-Instanz

attribute

Rückgabewerte

Gibt im Erfolgsfall ein Array mit den Werten des Merkmals zurück und false im Fehlerfall. Die Anzahl der zurückgegebenen Werte steht im Index "count" des zurückgegebenen Arrays zur Verfügung. Der Zugriff auf einzelne Werte erfolgt durch einen numerischen Index im Array. Der erste Indexwert ist 0.

LDAP erlaubt mehr als einen Eintrag für ein Merkmal, so dass es z. B. sein kann, dass der Verzeichnis-Eintrag einer Person mehrere E-Mail-Adressen enthält, die alle mit dem Merkmal "mail" bezeichnet sind.

    return_value["count"] = Anzahl der Werte eines Merkmals
    return_value[0]       = der erste Wert des Merkmals
    return_value[i]       = der i-te Wert des Merkmals
    

Changelog

Version Beschreibung
8.1.0 Der Parameter ldap erwartet nun eine LDAP\Connection-Instanz; vorher wurde eine gültige ldap link-Ressource erwartet.
8.1.0 Der Parameter entry erwartet nun eine LDAP\ResultEntry-Instanz; vorher wurde eine gültige ldap result entry-Ressource erwartet.

Beispiele

Beispiel #1 Liste alle Werte des Merkmals "mail" für einen Verzeichnis-Eintrag auf

<?php
// $ds ist eine gültige LDAP\Connection-Instanz für einen Verzeichnis-Server

// $sr ist ein gültiges Suchergebnis eines früheren Aufrufs einer der
// LDAP-Verzeichnis-Suchfunktionen

// $entry ist eine gültige Eintragskennung eines früheren Aufrufs einer
// der Funktionen, die einen Verzeichnis-Eintrag zurückgeben

$values = ldap_get_values($ds, $entry, "mail");

echo
$values["count"] . " E-Mail-Adressen für diesen Eintrag.<br />";

for (
$i=0; $i < $values["count"]; $i++) {
echo
$values[$i] . "<br />";
}
?>

Siehe auch

add a note

User Contributed Notes 2 notes

up
2
software at inebria dot com
23 years ago
It wasn't immediately obvious to me that the ldap_get_values function does not work with binary data - only strings. If you fetch binary data with ldap_get_values you don't get a warning - just some trash. For binary data you have to use ldap_get_values_len.
up
1
viper_sb at IGETTOMUCHSPAMhotmail dot com
21 years ago
Well this took me a while to find the problem, so I'm posting in case someone else runs in to this.

$sr = ldap_search($ds, "cn=me", "(objectclass=*)");
$entry = ldap_first_entry($ds, $sr);
do {
// do other stuff
$sr = "something else now";
$values = ldap_get_values($ds, $entry, "attirib1");
// do other stuff
} while ($entry = ldap_next_entry($ds, $entry));

If you change the search resource $sr to something else even though it's not used again it will kill the page it'll be a blank page and if you view the code you'll get different things depending on something no idea what.

This kepted happening I had forgotten I had used $sr so I was using it again and it would just not show the page whenever I used ldap_get_values, if this is a feature it would be nice to know. I haven't seen it happen with other functions.
To Top