ldap_search
(PHP 4, PHP 5)
ldap_search â Suche im LDAP Baum
Beschreibung
RĂŒckgabewert: eine Such-Ergebnis-Kennung im Erfolgsfall, FALSE im Fehlerfall.
Die ldap_search() Funktion fĂŒhrt die 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.base_dn legt den Basis DN fĂŒr das Verzeichnis fest.
Der optionale vierte Parameter kann benutzt werden, um die RĂŒckgabewerte des Servers so einzuschrĂ€nken, dass nur die tatsĂ€chlich benötigten Merkmale und ihre zugehörigen Werte in der Ergebnismenge enthalten sind. Dieses Vorgehen ist um einiges effizienter als die standardmĂ€Ăige Vorgehensweise (diese liefert alle Merkmale und alle zugehörigen Werte). Aus diesem Grund ist die Angabe des vierten Parameters als gute Praxis zu empfehlen.
Der vierte Parameter ist ein Standard PHP Array aus Strings der benötigten Merkmale, z.B. array("mail","sn","cn"). Beachten Sie, dass der "dn" immer zurĂŒckgeliefert wird, ohne RĂŒcksicht darauf, welche Merkmalstypen angefragt wurden.
Beachten Sie weiterhin, dass manche Verzeichnis-Server so konfiguriert sind, dass sie nicht mehr als eine vorbestimmte Anzahl an EintrĂ€gen zurĂŒckliefern. Sollte dies der Fall sein, zeigt Ihnen der Server an, dass nur eine Teilmenge des Ergebnisses zurĂŒckgeliefert wurde. Diesen Hinweis erhalten Sie auch, wenn Sie den sechsten Parameter gröĂenbegrenzung mit angegeben hatten, um die Anzahl der angefragten EintrĂ€ge einzuschrĂ€nken.
Der fĂŒnfte Parameter nur_werte sollte auf 1 gesetzt werden, wenn Sie nur Merkmalstypen erhalten möchten. Wenn der Wert auf 0 steht, erhalten Sie sowohl Merkmalstypen als auch Merkmalswerte. Das ist das Standard Verhalten.
Mit dem sechsten Parameter gröĂenbegrenzung ist es möglich, die Anzahl der EintrĂ€ge, die Sie erhalten, zu begrenzen. Wenn Sie diesen Wert auf 0 setzen, bedeutet dies keine BeschrĂ€nkung der Ergegnismenge. ANMERKUNG: Dieser Parameter kann eine serverseitig gesetzte BeschrĂ€nkung NICHT ĂŒberschreiben. Sie haben nur die Möglichkeit die BeschrĂ€nkung noch weiter herabzusetzen.
Der siebte Parameter zeitbegrenzung legt die Zahl in Sekunden fest, die auf die Suche verwendet wird. Wenn Sie diesen Wert auf 0 setzen, bedeutet dies keine BeschrĂ€nkung der Zeit. ANMERKUNG: Dieser Parameter kann eine serverseitig gesetzte Zeitbegrenzung NICHT ĂŒberschreiben. Sie haben nur die Möglichkeit die BeschrĂ€nkung noch weiter herabzusetzen.
Der achte Parameter deref gibt an, wie Aliase wÀhrend einer Suche behandelt werden. Wert kann einer der folgenden sein:
- LDAP_DEREF_NEVER - (Standard) Aliase werden nie aufgelöst.
- LDAP_DEREF_SEARCHING - Aliase sollen wÀhrend der Suche aufgelöst werden, aber nicht dann, wenn das Basisobjekt der Suche ermittelt wird.
- LDAP_DEREF_FINDING - Aliase sollen aufgelöst werden, wenn das Basisobjekt ermiitelt wird, aber nicht wÀhrend der Suche.
- LDAP_DEREF_ALWAYS - Aliase sollen immer aufgelöst werden.
Hinweis: Diese optionalen Parameter wurden in 4.0.2 hinzugefĂŒgt: nur_werte , gröĂenbegrenzung , zeitbegrenzung , deref .
Der Suchfilter kann einfach oder kompliziert sein, wenn sie boolsche Operatoren in dem Format verwenden, wie in der LDAP Dokumentation beschrieben (siehe » Netscape Directory SDK fĂŒr die vollstĂ€ndige Information ĂŒber Filter).
Das untenstehende Beispiel liefert die Organisationseinheit, den Familiennamen, den Vornamen und die Email-Addresse aller Personen in "Meine Firma" deren Familien- oder Vorname die Zeichenkette $person enhÀlt. In diesem Beispiel wird ein boolscher Filter verwendet, um den Server zu veranlassen, nach Informationen in mehr als einem Merkmal zu suchen.
Example#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"]." gefundene EintrÀge<p>";
Seit der Version 4.0.5 ist es auĂerdem möglich parallele Suchen durchzufĂŒhren. Um dies zu verwirklichen benutzen Sie als erstes Argument einen Array von Verbindungs-Kennungen, statt einer einzelnen Verbindungs-Kennung. Falls Sie nicht den gleichen Basis DN und den gleichen Filter fĂŒr alle Suchen verwenden möchten, können Sie ebenso einen Array von Basis DNs und/oder einen Array von Filtern benutzen. Diese Arrays mĂŒssen die gleiche GröĂe wie das Array der Verbindungs-Kennungen 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 Sie parallel suchen erhalten Sie ein Array von Such-Ergebnis-Kennungen, auĂer im Fall eines Fehlers, dann liefert der Eintrag zur entsprechenden Suche FALSE zurĂŒck. Das entspricht ganz genau dem Wert der normalerweise zurĂŒckgeliefert wird, auĂer dass Sie immer eine Ergebnis-Kennung erhalten, wenn Sie eine Suche durchgefĂŒhrt haben. Es treten einige seltene FĂ€lle auf, wo eine normale Suche FALSE zurĂŒckgibt, wĂ€hrend die parallele Suche eine Kennung zurĂŒckliefert.