8.60 LDAP
8 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies . Exemples . Utiliser les fonctions LDAP de PHP . ldap_8859_to_t61 . ldap_add . ldap_bind . ldap_close . ldap_compare . ldap_connect . ldap_count_entries . ldap_delete . ldap_dn2ufn . ldap_err2str . ldap_errno . ldap_error . ldap_explode_dn . ldap_first_attribute . ldap_first_entry . ldap_first_reference . ldap_free_result . ldap_get_attributes . ldap_get_dn . ldap_get_entries . ldap_get_option . ldap_get_values_len . ldap_get_values . ldap_list . ldap_mod_add . ldap_mod_del . ldap_mod_replace . ldap_modify . ldap_next_attribute . ldap_next_entry . ldap_next_reference . ldap_parse_reference . ldap_parse_result . ldap_read . ldap_rename . ldap_sasl_bind ->ldap_search . ldap_set_option . ldap_set_rebind_proc . ldap_sort . ldap_start_tls . ldap_t61_to_8859 . ldap_unbind
|
8.60.45 ldap_search()Recherche sur le serveur LDAP[ Exemples avec ldap_search ] PHP 3, PHP 4, PHP 5
resource
ldap_search (
resource
link_identifier
,
string
base_dn
,
string
filter
,
array
attributes
,
int
attrsonly
,
int
sizelimit
,
int
timelimit
,
int
deref
)
ldap_search retourne un identifiant de résultat,
ou bien
FALSE
en cas d'erreur.
ldap_search
effectue une recherche avec le
filtre
filter
dans le dossier
base_dn
avec le paramétrage
LDAP_SCOPE_SUBTREE
. C'est l'équivalent
d'une recherche dans le dossier.
base_dn
spécifie le DN de base du dossier.
Il y a un quatrième paramètre optionnel, qui peut être fourni pour
restreindre les attributs et valeurs retournées par le serveur,
afin de les adapter à vos besoins. C'est bien plus efficace que
le comportement par défaut (qui retourne tous les attributs et leurs
valeurs associées). L'utilisation de ce quatrième paramètre est donc vivement
recommandée.
Le quatrième paramètre est un tableau de chaînes PHP avec
les attributs demandés, par exemple :
array("mail","sn","cn")
. Notez que le
"dn"
est toujours retourné, indépendamment
des attributs demandés.
Notez aussi que certains serveurs de dossiers sont configurés pour
retourner un nombre limité d'entrées. Si
cette situation survient, le serveur indiquera qu'il a renvoyé un
résultat partiel. C'est aussi le cas si le sixième paramètre
sizelimit
a été utilisé pour limiter le nombre
d'entrées retournées.
Le cinquième paramètre
attrsonly
doit être
mis à 1 si seuls les types d'attributs sont désirés. Si ce paramètre
est mis à 0, les types d'attributs et leurs valeurs seront retournées :
c'est le comportement par défaut.
Avec le sixième paramètre
sizelimit
, il est possible
de limiter le nombre d'entrées lues dans le résultat. En utilisant 0, on
indique qu'il n'y a pas de limite.
NOTE : ce paramètre NE peut PAS remplacer la configuration du serveur.
Vous pouvez au mieux baisser encore cette limite.
Le septième paramètre
timelimit
permet de spécifier
le nombre de secondes de durée de la recherche. En utilisant la valeur
0, la recherche pourra durer indéfiniment.
NOTE : ce paramètre NE peut PAS remplacer la configuration du serveur.
Vous pouvez au mieux baisser encore cette limite.
Le huitième paramètre
deref
spécifie comment les
alias doivent être gérés durant la recherche. Ce paramètre peut prendre
l'une des valeurs suivantes :
-
LDAP_DEREF_NEVER - (par défaut) les alias ne sont jamais "déréférencés".
-
LDAP_DEREF_SEARCHING - les alias sont "déréférencés" durant la recherche,
mais pas durant la localisation du dossier de recherche.
-
LDAP_DEREF_FINDING - les alias sont "déréférencés" durant la localisation
du dossier de recherche, mais pas durant la recherche.
-
LDAP_DEREF_ALWAYS - les alias sont toujours "déréférencés".
| Note | |
Ces paramètres optionnels ont été ajoutés en 4.0.2 :
attrsonly
,
sizelimit
,
timelimit
et
deref
.
|
Le filtre de recherche peut être simple ou avancé, et utiliser ces
opérateurs booléen au format décrit dans la documentation LDAP
(reportez-vous à Netscape Directory SDK
pour plus d'informations sur les filtres).
L'exemple ci-dessous lit le nom du service, le nom, le prénom et
l'email des employés de la société "Ma Compagnie", dont le nom ou
le prénom contient la sous-chaîne : $person. Cet exemple illustre
l'utilisation de filtres pour indiquer au serveur de faire une
recherche sur deux attributs.
| Recherche LDAP |
<?php // $ds doit être une ressource de connexion valide
// $person est un nom ou une partie de nom (par exemple, "Jean")
$dn = "o=Ma Compagnie, c=FR"; $filter="(|(sn=$person*)(givenname=$person*))"; $justthese = array( "ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
echo $info["count"]." entrées trouvées.\n"; ?>
|
Depuis PHP 4.0.5, il est possible de faire des recherches parallèles. Pour cela,
vous devez utiliser un tableau de ressources de connexion comme premier argument,
au lieu d'une ressource simple. Si vous ne voulez pas utiliser le même
dossier de base DN et le même filtre pour toutes les recherches,
vous pouvez aussi utiliser un tableau de DN et de filtres. Ces
tableaux doivent alors être de la même taille que le tableau de
ressources de connexion : la première entrée du tableau de ressources
sera utilisée avec le premier DN et le premier filtre, etc.
Lorsque vous faites une recherche parallèle, un tableau de résultats
est retourné, sauf en cas d'erreur, auquel cas l'entrée contiendra
FALSE
. C'est très proche du comportement habituel, hormis le fait
qu'un résultat est toujours retourné lorsqu'une recherche est faite.
Il y a de rares cas où une recherche renvoi
FALSE
, alors qu'une
autre en parallèle retourne un identifiant.
|