ldap_search
(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_search — Sucht im LDAP-Baum
Beschreibung
LDAP\Connection|array
$ldap
,array|string
$base
,array|string
$filter
,array
$attributes
= [],int
$attributes_only
= 0,int
$sizelimit
= -1,int
$timelimit
= -1,int
$deref
= LDAP_DEREF_NEVER
,?array
$controls
= null
): LDAP\Result|array|false
Führt eine Suche für einen gegebenen Filter im Verzeichnis mit dem
Geltungsbereichmit von LDAP_SCOPE_SUBTREE
durch. Das
ist äquivalent zu einer Suche im ganzen Verzeichnis.
Es ist auch möglich, parallele Suchen durchzuführen. In diesem Fall muss der erste Parameter ein Array von
LDAP\Connection-Instanzen sein, anstatt einer einzelnen.
Wenn die Suchen nicht alle den gleichen Basis-DN und Filter verwenden sollen, kann stattdessen ein Array von Basis-DNs und/oder ein Array von Filtern als Parameter übergeben werden.
Diese Arrays müssen die gleiche Größe haben wie das Array von LDAP\Connection-Instanzen,
da die ersten Einträge der Arrays für eine Suche verwendet werden, die zweiten Einträge für eine andere und so weiter.
Bei parallelen Suchen wird ein Array von LDAP\Result-Instanzen zurückgegeben, außer im Fall eines Fehlers, dann ist der Rückgabewert false
.
Parameter-Liste
-
ldap
-
Eine LDAP\ConnectionInstanz, die von ldap_connect() zurückgegeben wurde.
-
base
-
Der Basis-DN für das Verzeichnis.
-
filter
-
Der Suchfilter kann einfach oder erweitert sein und boolesche Operatoren in dem Format verwenden, das in der LDAP-Dokumentation beschrieben wird (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 Parameters sollte daher als gute Praxis eingestuft werden.
-
attributes_only
-
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öglicht die Begrenzung der Anzahl der abgerufenen Einträge. Wird hier 0 übergeben, besteht keine Begrenzung.
Hinweis:
Dieser Parameter kann ein serverseitig voreingestelltes sizelimit NICHT überschreiben. Es kann allerdings kleiner gewählt werden.
Verzeichnis-Server können so konfiguriert werden, dass sie nicht mehr als eine voreingestellte Anzahl von Einträgen zurückgeben. Wenn dies der Fall ist, dann zeigt der Server an, dass nur eine teilweise Ergebnismenge zurückgegeben 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 überschreiben. 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-Objekts dereferenziert werden, aber nicht während der Suche. -
LDAP_DEREF_ALWAYS
- Aliase sollen immer dereferenziert werden.
-
-
controls
-
Ein Array von LDAP-Steuerbefehlen, die mit der Anfrage versendet werden sollen.
Rückgabewerte
Gibt eine LDAP\Result-Instanz oder ein Array von LDAP\Result-Instanzen zurück. Bei einem Fehler wird false
zurückgegeben.
Changelog
Version | Beschreibung |
---|---|
8.1.0 |
Der Parameter ldap erwartet nun eine LDAP\Connection-Instanz; vorher wurde eine Ressource
erwartet.
|
8.1.0 | Gibt nun eine LDAP\Result-Instanz zurück; vorher wurde eine Ressource zurückgegeben. |
8.0.0 |
controls ist jetzt nullable (akzeptiert den null -Wert); vorher war der Standardwert [] .
|
7.3.0 |
Die Unterstützung für controls wurde
hinzugefügt.
|
Beispiele
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
<?php
// $ds ist eine gültige LDAP\Connection-Instanz für einen Verzeichnis-Server
// $person ist ein Teil des Namens 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);
echo $info["count"] . " Einträge gefundene\n";
?>