(PHP 4, PHP 5, PHP 7)
ldap_search — Suche im LDAP Baum
$link_identifier
, string $base_dn
, string $filter
[, array $attributes
= array("*")
[, int $attrsonly
= 0
[, int $sizelimit
= -1
[, int $timelimit
= -1
[, int $deref
= LDAP_DEREF_NEVER
[, array $serverctrls
= array()
]]]]]] ) : resource
Führt eine Suche für einen gegebenen Filter im Verzeichnis mit der Reichweite
von LDAP_SCOPE_SUBTREE
durch. Das ist äquivalent zu
einer Suche im ganzen Verzeichnis.
Von 4.0.5 an ist es außerdem möglich parallele Suchen durchzuführen. Um
dies zu tun, wird ein Array von Verbindungskennungen statt einer einzelnen
Verbindungskennung als erstes Argument verwendet. Soll nicht der gleiche
Basis-DN und der gleichen Filter für alle Suchen verwenden werden, kann
ebenso ein Array von Basis-DNs und/oder ein Array von Filtern verwendet
werden. Diese Arrays müssen die gleiche Größe wie das Array der
Verbindungskennungen haben, da die ersten Einträge der Arrays für eine
Suche verwendet werden, die zweiten Einträge für eine andere Suche und so
weiter. Wenn parallel gesucht wird, wird ein Array von
Suchergebniskennungen zurückgegeben, außer im Fehlerfall; dann liefert der
Eintrag zur entsprechenden Suche FALSE
zurück. Das entspricht im Prinzip
dem Wert, der normalerweise zurückgeliefert wird, außer dass immer eine
Ergebniskennung geliefert wird, wenn eine Suche durchgeführt wurde. Es
treten einige seltene Fälle auf, wo eine normale Suche FALSE
zurückgibt,
während die parallele Suche eine Kennung zurückliefert.
link_identifier
Eine LDAP-Verbindungskennung, geliefert von ldap_connect().
base_dn
Der Basis-DN für das Verzeichnis.
filter
Der Suchfilter kann einfach oder fortgeschritten sein, und Boolesche Operatoren im Format, das in der LDAP-Dokumentation beschrieben wird, verwenden (siehe das » Netscape Directory SDK oder » RFC4515 für vollständige Informationen zu Filtern).
attributes
Ein Array von erforderlichen Merkmalen, z.B. array("mail", "sn", "cn"). Es ist zu beachten, dass der "dn" immer zurückgegeben wird, unabhängig davon, welche Merkmalstypen angefragt wurden.
Die Verwendung dieses Parameters ist effizienter als die Standardaktion (die alle Merkmale und deren assoziierte Werte zurückgibt). Die Verwendung dieses Parameter sollte daher als gute Praxis eingestuft werden.
attrsonly
Sollte auf 1 gesetzt werden, wenn nur Merkmalstypen erwünscht sind. Wird 0 übergeben, werden sowohl Merkmalstypen als auch Merkmalswerte abgerufen, was das Standardverhalten ist.
sizelimit
Ermöglich die Begrenzung der Anzahl der abgerufenen Einträge. Wird hier 0 übergeben, besteht keine Begrenzung.
Hinweis:
Dieser Parameter kann ein serverseitig voreingestelltes sizelimit nicht übersteuern. Es kann allerdings kleiner gewählt werden.
Verzeichnisserver können so konfiguriert werden, dass sie nicht mehr als eine voreingestellte Anzahl von Einträgen liefern. Wenn dies geschieht, dann wird der Server anzeigen, dass nur eine teilweise Ergebnismenge zurückgeliefert wurde. Das geschieht ebenfalls, wenn dieser Parameter verwendet wird, um die Zahl der abgerufenen Einträge zu begrenzen.
timelimit
Setzt die Anzahl von Sekunden, die auf die Suche verwendet wird. Die Übergabe von 0 bedeutet keine Begrenzung.
Hinweis:
Dieser Parameter kann ein serverseitig voreingestelltes timelimit nicht übersteuern. Es kann allerdings kleiner gewählt werden.
deref
Gibt an, wie Aliase während der Suche behandelt werden sollen. Es kann einen der folgenden Werte annehmen:
LDAP_DEREF_NEVER
- (standard) Aliase werden nie
dereferenziert.
LDAP_DEREF_SEARCHING
- Aliase sollen während der
Suche dereferenziert werden, aber nicht wenn das Basis-Objekt der
Suche lokalisiert wird.
LDAP_DEREF_FINDING
- Aliase sollen für die
Lokalisierung des Basis-Objekt dereferenziert werden, aber nicht
während der Suche.
LDAP_DEREF_ALWAYS
- Aliase sollen immer
dereferenziert werden.
serverctrls
Array von LDAP-Steuerbefehlen, die mit der Anfrage versendet werden sollen.
Gibt eine Suchergebniskennung zurück, oder FALSE
im Fehlerfall.
Version | Beschreibung |
---|---|
7.3 |
Unterstützung für serverctrls hinzugefügt.
|
Das untenstehende Beispiel liefert die Organisationseinheit, den Familiennamen, den Vornamen und die E-Mail-Adresse aller Personen in "Meine Firma", deren Familien- oder Vorname die Zeichenkette $person enhält. In diesem Beispiel wird ein boolescher Filter verwendet, um den Server zu veranlassen, nach Informationen in mehr als einem Merkmal zu suchen.
Beispiel #1 LDAP Suche
// $ds gültige Verbindungs-Kennung für einen Verzeichnis-Server
// $person ein Teil oder der vollständige Name einer Person, z.B. "Jo"
$dn = "o=Meine Firma, c=DE";
$filter="(|(sn=$person*)(vorname=$person*))";
$justthese = array( "ou", "sn", "vorname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
print $info["count"]." Einträge gefundene<p>";