Index: phpdoc/fr/functions/ldap.xml
diff -u phpdoc/fr/functions/ldap.xml:1.3 phpdoc/fr/functions/ldap.xml:1.4
--- phpdoc/fr/functions/ldap.xml:1.3 Sat Oct 14 06:26:30 2000
+++ phpdoc/fr/functions/ldap.xml Wed Nov 29 10:56:20 2000
@@ -1,1238 +1,1552 @@
-
- Fonctions LDAP
- LDAP
-
-
+
+ Fonctions LDAP
+ LDAP
+
- Introduction à LDAP
-
- LDAP est l'acronyme de Lightweight Directory Access Protocol, c'est à dire
- Protocole Léger d'Accès aux Dossiers. C'est un protocole utilisé pour accéder à
- des "serveurs de dossiers", des serveurs qui gèrent les informations de
- manière hiérarchique.
-
-
- Le concept est similaire à la structure de votre disque dur, hormis le fait que
- la racine s'appelle ici : "The world" (le monde), et que les dossiers du premier
- niveau sont assimilés à des pays. Les niveaux inférieurs de la structure
- contiennent des entrées de sociétés, d'organisations ou de lieux tandis que les
- niveaux encore inférieurs sont des gens, voire des équipement ou des documents.
-
-
- Pour accéder à un fichier sur votre disque, vous devez utiliser la syntaxe
- suivante :
-
-
- /usr/local/myapp/docs
-
-
- Le slash indique une division de la référence, et la séquence est lue de gauche
- à droite.
-
-
- Une telle référence en LDAP sera exprimée avec une autre syntaxe, la syntaxe à
- "noms distincts" ("distinguished names"), aussi appelé "nd" ("dn" en anglais).
- Par exemple :
-
-
- cn=Jean Dupont,ou=Comptes,o=Ma Société,c=Fr
-
-
- La virgule marque une division de la référénce, et la séquence est lue de droite
- à gauche. Vous pouvez la lire comme ceci :
-
-
- country = Fr
- organization = Ma Société
- organizationalUnit = Comptes
- commonName = Jean Dupont
-
-
- De la même façon qu'il n'y a pas de règle universelle d'organisation d'un disque
- dur, un serveur de dossier peut supporter n'importe quelle structure du moment
- qu'elle a un sens pour ce qu'on en fait. Cependant, il existe quelques conventions
- : il est impossible d'écrire un code d'accès à un dossier sans en connaître sa
- structure, de la même façon que vous ne pouvez pas utiliser une base de données
- sans en connaître les tables.
-
-
-
-
- Exemple complet
-
- Recupérer toutes les entrées dont le nom commence par "S" dans un serveur, et
- afficher le nom et l'adresse email.
-
-
-
- Recherche LDAP
-
-// Structure d'une commande simple :
-// connexion, lien, recherche, interpretation de la recherche
-// résultat, déconnexion
-<?php
-echo "<?h3>LDAP query test<?/h3>";
-echo "Connexion ...";
-$ds=ldap_connect("localhost"); // Doit être un serveur LDAP valide!
-echo "Résultat de la connexion : ".$ds."<?p>";
-
-if ($ds) {
- echo "Lien ...";
- $r=ldap_bind($ds); // Ceci est un lien "anonymous", typiquement
- // en lecture seule. En cas d'accès, affiche
- // " Lien résultat est"
- echo "Lien résultat est ".$r."<?p>";
-
- echo "Recherche de (sn=S*) ...";
- // Recherche dans les noms
- $sr=ldap_search($ds,"o=Ma Société, c=Fr", "sn=S*");
- echo "Résultat : ".$sr."<?p>";
-
- echo "Nombre d'entrée retournée : ".ldap_count_entries($ds,$sr)."<?p>";
-
- echo "Lecture des entrées...<?p>";
- $info = ldap_get_entries($ds, $sr);
- echo "Data for ".$info["count"]." items returned:<?p>";
-
- for ($i=0; $i<?$info["count"]; $i++) {
- echo "dn vaut : ". $info[$i]["dn"] ."<?br>";
- echo "première entrée cn vaut : ". $info[$i]["cn"][0] ."<?br>";
- echo "premièr email vaut: ". $info[$i]["mail"][0] ."<?p>";
- }
-
- echo "Déconnexion ";
- ldap_close($ds);
-
-} else {
- echo "<?h4>Impossible de se connecter à un serveur LDAP <?/h4>";
-}
-?>
-
-
-
-
- Utilisation des fonctions PHP LDAP
-
- Il faut d'abord que les bibliothèques client LDAP soient compilées avec PHP.
- Vous pouvez vous procurer ces bibliothèques University of Michigan
- (ldap-3.3 package) ou chez Netscape (Netscape Directory SDK).
-
- Avant d'utiliser les fonctions LDAP il faut savoir :
-
-
-
-
- Le nom ou l'adresse du serveur à utiliser
-
-
-
-
- Le "nd" dans le serveur (la partie du monde qui est sur ce serveur,
- ce qui peut correspondre à "o=Ma société,c=Fr")
-
-
-
-
- Eventuellement, un mot de passe pour accéder au serveur (de nombreux
- serveur fournisse un accès en lien anonymes ("anonymous bind") mais requièrent
- un mot de passe pour tout le reste).
-
-
-
-
-
- Une séquence habituelle LDAP suivra le schéma suivant :
-
- ldap_connect() // établi une connexion à un serveur
- |
- ldap_bind() // nom de compte "login" ou anonyme
- |
- éxécution de commandes sur le serveur, comme un listage, ou
- une modification de données avec affichage
- |
- ldap_close() // "déconnexion"
-
-
-
-
-
- Plus d'informations
-
- Vous pouvez en apprendre encore plus, mais en anglais, aux adresses suivantes :
-
-
-
-
-
- Netscape
-
-
-
-
- University of Michigan
-
-
-
-
- OpenLDAP Project
-
-
-
-
- LDAP World
-
-
-
-
-
- Le SDK Netscape contient un guide du programmeur au format HTML particulièrement
- pratique.
-
-
-
-
-
-
-
-
-
- ldap_add
- Ajoute une entrée à un dossier LDAP.
-
-
- Description
-
- int ldap_add
- int link_identifier
- string dn
- array entry
-
-
- Retourne TRUE en cas de succès, ou FALSE en cas d'erreur.
-
- ldap_add sert à ajouter une entrée dans un dossier LDAP. Le
- ND de l'entrée sera ajouté à la dn du dossier spécifié.
- Le tableau entry spécifie les informations de la nouvelle
- entrée. Les valeurs de l'entrée sont indexées dans les attributs de l'entrée. Si
- un attribut a de multiples valeurs, elles seront indexées dans un tableau, à
- partir de l'index 0.
-
-
-
- entree["attribut1"] = valeur
- entree["attribut2"][0] = valeur1
- entree["attribut2"][1] = valeur2
-
-
-
- Exemple complet avec lien authentifié
-
-<?php
-$ds=ldap_connect("localhost"); // On suppose que le serveur LDAP est sur cet hote
-
-if ($ds) {
- // liaison avec le nd approprié, pour avoir un accès en modification
-$r=ldap_bind($ds,"cn=root, o=Ma Société, c=Fr", "secret");
-
- // preparation des données
- $info["cn"]="John Jones";
- $info["sn"]="Jones";
- $info["mail"]="jonj <email protected>";
- $info["objectclass"]="person";
-
- // Ajout des données dans le dossier
- $r=ldap_add($ds, "cn=John Jones, o=My Company, c=US", $info);
-
- ldap_close($ds);
-} else {
- echo "Impossible de se connecter au serveur LDAP ";
-}
-?>
-
-
-
-
-
-
-
- ldap_mod_add
- Ajoute une valeur aux attributs courants.
-
-
- Description
-
- int ldap_mod_add
- int link_identifier
- string dn
- array entry
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- Cette fonction ajoute les attributs dans la nd spécifié. Cet ajout est fait au
- niveau attribut, et non pas au niveau objet. Les ajouts au niveau objet sont
- faits par la fonction ldap_add.
-
-
-
-
-
-
- ldap_mod_del
- Efface une valeur des attributs courants.
-
-
- Description
-
- int ldap_mod_del
- int link_identifier
- string dn
- array entry
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
- Cette fonction efface les attributs du nd dn spécifié.
- Cette modification est fait au niveau des attributs, et par opposition au niveau
- de l'objet. Les effacements au niveau objet sont effectués par la fonction
- ldap_delete.
-
-
-
-
-
-
- ldap_mod_replace
- Remplace une valeur des attributs courants par une autre.
-
-
- Description
-
- int ldap_mod_replace
- int link_identifier
- string dn
- array entry
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- Cette fonction remplace les attributs dans du nd dn
- spécifié. Cette modification est faite au niveau attribut, et non pas au niveau
- objet. Les modifications au niveau objet sont faites par la fonction
- ldap_modify.
-
-
-
-
-
-
- ldap_bind
- Se lie à un serveur LDAP.
-
-
- Description
-
- int ldap_bind
- int link_identifier
- string bind_rdn
- string bind_password
-
-
- ldap_bind lie un serveur LDAP avec le RDN et mot de passe
- spécifié (éventuellement). Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_bind effectue une opération de liaison sur le serveur.
- bind_rdn et
- bind_password sont optionnels. Si ils
- manquent, la liaison se fera en mode anonyme.
-
-
-
-
-
-
-
- ldap_close
- Déconnecte d'un serveur LDAP.
-
-
- Description
-
- int ldap_close
- int link_identifier
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_close ferme le lien au serveur LDAP
- associé à l'identifiant link_identifier.
-
-
- Cet appel est identique à ldap_unbind, en interne. Les
- API LDAP utilisent la fonction ldap_unbind : il est
- probablement mieux que vous utilisiez cette fonction là plutôt que
- ldap_close.
-
-
-
-
-
-
-
- ldap_connect
- Se connecte à un serveur LDAP.
-
-
- Description
-
- int ldap_connect
- string hostname
- int port
-
-
- Retourne un identifiant positif de serveur LDAP en cas de succès, ou bien
- FALSE en cas d'erreur.
-
-
- ldap_connect établit une connexion avec un serveur. Le
- serveur LDAP situé sur l'hôte hostname et
- port. Les deux arguments sont optionnels. Sans argument,
- l'identifiant de la dernière connexion ouverte sera retournée. Si seul
- hostname est spécifié, le port par défaut est 389.
-
-
-
-
-
-
-
- ldap_count_entries
- Compte le nombre d'entrées d'une recherche.
-
-
- Description
-
- int ldap_count_entries
- int link_identifier
- int result_identifier
-
-
- Retourne le nombre d'entrées en cas de succès, et FALSE sinon.
-
-
- ldap_count_entries retourne le nombre d'entrée placées
- dans le résultat par les recherches précédentes.
- result_identifier identifie un résultat LDAP interne.
-
-
-
-
-
-
-
- ldap_delete
- Efface une entrée dans un dossier.
-
-
- Description
-
- int ldap_delete
- int link_identifier
- string dn
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_delete efface une entrée dans un dossier LDAP spécifié
- par le nd dn.
-
-
-
-
-
-
- ldap_dn2ufn
- Converti un ND dans un format plus accessible.
-
-
- Description
-
- string ldap_dn2ufn
- string dn
-
-
- ldap_dn2ufn sert à mettre le nd dn
- dans un format plus agréable, notamment en supprimant les noms des types.
-
-
-
-
-
-
- ldap_explode_dn
- Scinde un ND en plusieurs composants.
-
-
- Description
-
- array ldap_explode_dn
- string dn
- int with_attrib
-
-
- ldap_explode_dn sert à scinder le nd dn
- retourné par ldap_get_dn en plusieurs composants. Chaque
- composant est reconnu sous le nom Nom Distinct Relatif (ou RDN, en anglais).
- ldap_explode_dn retourne un tableau qui contient ces
- composants. with_attrib sert à préciser si le RDN est
- retourné avec ses attributs, ou seul. Pour obtenir le RDN et ses attributs,
- mettez with_attrib à 0 et pour n'avoir que les valeurs,
- mettez le à 1.
-
-
-
-
-
-
-
- ldap_first_attribute
- Retourne le premier attribut.
-
-
- Description
-
- string ldap_first_attribute
- int link_identifier
- int result_entry_identifier
- int ber_identifier
-
-
- Retourne le premier attribut en cas de succès, et FALSE sinon.
-
-
- Le comportement est similaire pour les entrées. Les attributs sont lus
- séquentiellement dans une entrée particulière.
- ldap_first_attribute retourne le premier attribut de
- l'entrée désignée par l'identifiant d'entrée. Les attributs suivants sont
- accessibles avec ldap_next_attribute.
- ber_identifier est un identifiant de pointeur de mémoire
- interne. Il est passé par référence. Le même identifiant
- ber_identifier est passé à
- ldap_next_attribute, qui modifie ce pointeur.
-
-
- Voir aussi ldap_get_attributes.
-
-
-
-
-
-
-
- ldap_first_entry
- Retourne l'identifiant du premier attribut.
-
-
- Description
-
- int ldap_first_entry
- int link_identifier
- int result_identifier
-
-
- Retourne un identifiant sur la première entrée en cas de succès,
- et FALSE sinon.
-
-
- Les entrées d'un résultat sont lues séquentiellement, en utilisant
- ldap_first_entry et ldap_next_entry.
- ldap_first_entry retourne l'identifiant de la première
- entrée du résultat. Cet identifiant sera fourni à
- ldap_next_entry pour accéder à la prochaîne entrée.
-
-
- Voir aussi ldap_get_entries.
-
-
-
-
-
-
-
- ldap_free_result
- Libère la mémoire prise par un résultat.
-
-
- Description
-
- int ldap_free_result
- int result_identifier
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_free_result libère la mémoire allouée en interne
- pour enregistrer le résultat pointé par result_identifier.
- A la fin de chaque script, la mémoire sera de toute manière libérée.
-
-
- Généralement, il n'y a pas besoin de libérer la mémoire, et le mécanisme
- automatique de fin de script est suffisant. Cependant, dans les cas oú le
- script effectue plusieurs recherches successives, oú que les résultats retournés
- sont très grands, ldap_free_result permet de réduire la
- consommation de mémoire.
-
-
-
-
-
-
-
- ldap_get_attributes
- Retourne les attributs d'une entrée d'un résultat.
-
-
- Description
-
- array ldap_get_attributes
- int link_identifier
- int
- result_entry_identifier
-
-
- Retourne un tableau multi-dimensionel en cas de succès, et FALSE sinon.
-
-
- ldap_get_attributes sert à simplifier la lecture des
- attributs et des valeurs d'une entrée dans un résultat. Le résultat est un
- tableau multi-dimensionnel, avec les attributs en clé, et les valeurs des
- attributs en valeurs.
-
-
- Une fois que vous avez repéré une entré dans un dossier, vous pouvez lire les
- informations de cette entrée avec cette fonction. Vous pouvez utiliser cette
- fonction pour créer une application qui se déplace dans les dossiers, sans en
- connaître la structure au préalable. Dans de nombreux cas, vous ne chercherez qu'un
- attribut particulier (le email, par exemple) et vous ne vous intéresserez pas
- aux autres valeurs.
-
-
-
- Affichage de la liste des attributs d'une entrée
-
-// $ds est l'identifiant de lien pour ce dossier
-
-// $sr est un résultat de recherche valide, obtenu lors d'une recherche
-// précédente
-
-$entry = ldap_first_entry($ds, $sr);
-
-$attrs = ldap_get_attributes($ds, $entry);
-
-echo $attrs["count"]." Attributs dans cette entrée:<p>";
-
-for ($i=0; $i<$attrs["compte"]; $i++)
- echo $attrs[$i]."<br>";
-
-
-
-
- Voir aussi ldap_first_attribute et
- ldap_next_attribute.
-
-
-
-
-
-
-
- ldap_get_dn
- Retourne un ND d'une entrée d'un résultat.
-
-
- Description
-
- string ldap_get_dn
- int link_identifier
- int result_entry_identifier
-
-
- Retourne le DN de l'entrée en cas de succès, et FALSE sinon.
-
-
- ldap_get_dn sert à obtenir le ND d'une entrée d'un résultat.
-
-
-
-
-
-
-
- ldap_get_entries
- Retourne toutes les entrées.
-
-
- Description
-
- array ldap_get_entries
- int link_identifier
- int result_identifier
-
-
- Retourne un tableau multi dimensionnel en cas de succès, et FALSE sinon.
-
-
- ldap_get_entries sert à simplifier la lecture d'un résultat à
- plusieurs entrées. Toutes les informations sont retournées sous la forme d'un
- tableau multi-dimensionnel. La structure de ce tableau est la suivante :
-
-
- Les attributs servent d'index et sont mis en minuscule (Les attributs sont
- insensibles à la casse sur les serveurs, mais peuvent ne pas l'être quand ils
- sont utilisés comme index)
-
-
-
-
-résultat ["compte"] = nombre d'entrées du résultat
-résultat [0] : correspond aux détails de la première entrée :
-résultat [i]["nd"] = ND de la i-ième entrée
-
-
-résultat [i][" compte "] = nombre d'attributs de la i-ième entrée
-résultat [i][j] = j-ième attribut de la i-ième entrée
-
-
-résultat [i]["attribut"]["count"] = nombre de valeur pour l'attribut
-résultat [i]["attribut"][j] = j-ième valeur de l'attribut
-
-
-
-
-
- Voir aussi ldap_first_entry et
- ldap_next_entry.
-
-
-
-
-
-
-
- ldap_get_values
- Retourne toutes les entrées d'un résultat.
-
-
- Description
-
- array ldap_get_values
- int link_identifier
- int result_entry_identifier
- string attribute
-
-
- Retourne un tableau de valeurs en cas de succès, et FALSE sinon.
-
-
- ldap_get_values sert à lire toutes les valeurs d'un
- attribut dans une entrée. L'entrée est référencée par
- result_entry_identifier. Le nombre de valeurs peut être
- trouvé à l'index "count" dans le résultat. Les valeurs sont accessibles par un
- index entier, qui commence à 0.
-
-
- Cette fonction nécessite un pointeur de résultat
- result_entry_identifier, ce qui implique qu'il ai été
- précédé d'une recherche sur le serveur, et de l'obtention d'une entrée.
-
-
- Votre application pourra utiliser des noms d'attributs en dur dans le code, ou
- bien, utiliser la fonction ldap_get_attributes pour y
- accéder dynamiquement.
-
-
- LDAP autorise plus d'une entrée par attribut, ce qui permet, par exemple,
- d'étiqueter tous les adresses email d'un utilisateur avec l'attribut "mail"
-
-
-
-return_value["count"] = nombre de valeurs de l'attribut
-return_value[0] = première valeur de l'attribut
-return_value[i] = n-ième valeur de attribut
-
-
-
-
- Liste toutes les valeurs avec l'attribut "mail"
-
-// $ds est l'identifiant de lien pour ce dossier
-
-// $sr est un résultat de recherche valide, obtenu lors d'une recherche
-// précédente
-
-// $entry est un identifiant valide d'entrée
-
-$values = ldap_get_values($ds, $entry,"mail");
-
-echo $values["count"]." Adresse email dans ce résultat.<p>";
-
-for ($i=0; $i < $values["count"]; $i++)
- echo $values[$i]."<br>";
-
-
-
-
-
-
-
-
-
- ldap_get_values_len
-
- Retourne toutes les valeurs binaires à partir d'un identifiant de résultat.
-
-
-
- Description
-
- array ldap_get_values_len
- int link_identifier
- int result_entry_identifier
- string attribute
-
-
- Retourne un tableau de valeurs pour l'attribut, ou bien FALSE en cas d'erreur.
-
-
- ldap_get_values_len sert à lire toutes les valeurs d'un
- attribut d'une entrée dans un résultat. L'entrée est spécifiée par
- result_entry_identifier. Le nombre de valeurs trouvées
- peut être retrouvé en indexant "count" dans le tableau résultat. On peut accéder
- aux valeurs individuelles avec un index numérique, commencant à 0.
-
-
- Cette fonction est utilisée exactement comme ldap_get_values
- mais elle gère les données binaires, et non pas les chaînes.
-
-
-
-
-
-
-
- ldap_list
- Recherche dans un seul niveau.
-
-
- Description
-
- int ldap_list
- int link_identifier
- string base_dn
- string filter
- array
- attributes
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_list effecture une recherche avec le filtre donnée,
- et limité un dossier.
-
-
- LDAP_SCOPE_ONELEVEL indique que la recherche ne doit s'étendre que dans le
- dossier immédiatement sous le nd base_dn. (Equivalent à
- taper "ls" et obtenir la liste des fichiers et dossiers du dossier courant).
-
-
- Cette appel prend un quatrième argument optionnel : un tableau contenant les
- attributs recherchés. Reportez vous à ldap_search pour plus
- de détails.
-
-
- Affiche une liste d'unités organisationnelle
-
-// $ds est un identifiant de connexion valide.
-
-$basedn = "o=Ma Société, c=Fr";
-$justthese = array("ou");
-
-$sr=ldap_list($ds, $basedn, "ou=*", $justthese);
-
-$info = ldap_get_entries($ds, $sr);
-
-for ($i=0; $i<$info["count"]; $i++)
- echo $info[$i]["ou"][0] ;
-
-
-
-
-
-
-
-
-
- ldap_modify
- Modifie une entrée LDAP.
-
-
- Description
-
- int ldap_modify
- int link_identifier
- string dn
- array entry
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_modify sert à modifier les entrées existantes dans un
- dossier LDAP. La structure de l'entrée est la même que décrite dans
- ldap_add.
-
-
-
-
-
-
-
- ldap_next_attribute
- Lit l'attribut suivant.
-
-
- Description
-
- string ldap_next_attribute
- int link_identifier
- int result_entry_identifier
- int ber_identifier
-
-
- Retourne l'attribut suivant en cas de succès, et sinon, une erreur.
-
-
- ldap_next_attribute sert à lire tous les attributs d'une
- entrée. Le pointeur interne est géré par ber_identifier.
- Il est passé par référence à la fonction. Le premier appel à
- ldap_next_attribute est fait avec le
- result_entry_identifier retourné par
- ldap_first_attribute.
-
-
- Voir aussi ldap_get_attributes.
-
-
-
-
-
-
-
- ldap_next_entry
- Lit l'attribut suivant.
-
-
- Description
-
- int ldap_next_entry
- int link_identifier
- int result_entry_identifier
-
-
- Retourne l'identifiant de l'entrée suivante, dans le résultat qui a été
- initialisé par ldap_first_entry. Si il n'y a plus d'entrée,
- retourne FALSE.
-
-
- ldap_next_entry sert à retrouver toutes les entrées qui
- sont stockées dans un résultat. Les appels successifs à
- ldap_next_entry retourneront les entrées une à une.
- Le premier appel à ldap_next_entry est fait après un appel à
- ldap_first_entry avec
- result_entry_identifier retourné par
- ldap_first_entry.
-
-
- Voir aussi ldap_get_entries.
-
-
-
-
-
-
-
- ldap_read
- Lit une entrée.
-
-
- Description
-
- int ldap_read
- int link_identifier
- string base_dn
- string filter
- array
- attributes
-
-
- Retourne un identifiant de résultat en cas de succès, et FALSE sinon.
-
-
- ldap_read effectue une recherche avec le filter filter
- dans le dossier base_dn et avec l'option LDAP_SCOPE_BASE (recherche limitée au
- dossier, ou récursive). Cela revient à lire une entrée dans un dossier.
-
-
- Les filtres vides ne sont pas autorisés. Si vous souhaitez lire toutes les
- informations d'un dossier, utiliser le filtre suivant : "objectClass=*".
- Si vous savez quel est le type des entrées dans le dossier que vous fouillez,
- vous pouvez aussi adapter ce filter de la façon suivante "objectClass=inetOrgPerson".
-
-
- Cette fonction dispose d'un quatrième argument optionnel. Reportez vous à
- ldap_search.
-
-
-
-
-
-
-
- ldap_search
- Recherche dans tout l'arbre LDAP.
-
-
- Description
-
- int ldap_search
- int link_identifier
- string base_dn
- string filter
- array
- attributes
-
-
- Retourne un identifiant de résultat en cas de succès, et FALSE sinon.
-
-
- ldap_search effectue une recherche avec le filtre
- filter dans le dossier base_dn,
- et avec l'option de récursivité LDAP_SCOPE_SUBTREE. Cela revient à rechercher
- dans toute la base sous le dossier base_dn.
-
-
- Le quatrième paramètre est optionnel, et peut être ajouté pour restreindre les
- attributs et les valeurs retournées. Il est beaucoup plus efficace que la méthode
- qui consiste à lire tous les attributs et leur valeurs associées. L'utilisation
- de ce quatrième paramètre est encouragé.
-
-
- Le quatrième paramètre est un tableau de chaînes, qui contient les attributs
- désirés, array("mail","sn","cn") Notez que le nd base_dn
- est toujours retourné, quelques que soient les attributs demandés.
-
-
- Notez que certains serveurs sont configurés pour limiter le nombre de résultats.
- Si cela arrive, le serveur indiquera qu'il n'a transféré qu'une partie du résultat.
-
-
- La chaîne de filtre peut être simple ou complexe. Elle utilise les opérateurs
- booléens au même format que celui décrit dans les documentations LDAP.
- (Allez voir celle de Netscape Directory SDK
- pour plus d'informations sur les filtres).
-
-
- L'exemple suivant récupère toutes les unités organisationnelles, le nom, prénom et
- email, dans la société "Ma Société" oú le nom et prénom contiennent la sous-chaîne
- $person. Cet exemple utilise un filtre booléen pour indiquer au serveur qu'il doit
- rechercher des informations dans plusieurs attributs.
-
-
- Recherche LDAP
-
-// $ds est un identifiant valide de connexion à un serveur LDAP
-
-// $person est tout ou une partir d'un nom
-
-$dn = "o=Ma Société, 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);
-
-print $info["count"]." Entrées retournées.<p>";
-
-
-
-
-
-
-
- ldap_unbind
- Termine la liaison avec un serveur LDAP.
-
-
- Description
-
- int ldap_unbind
- int link_identifier
-
-
- Retourne TRUE en cas de succès, et FALSE sinon.
-
-
- ldap_unbind termine la liaison avec le serveur LDAP.
-
-
-
-
-
-
- ldap_err2str
-
- Converti un numéro d'erreur LDAP en message d'erreur.
-
-
-
- Description
-
- string ldap_err2str
- int errno
-
-
- Retourne un message d'erreur.
-
- Cette fonction retourne le message d'erreur lié au numér d'erreur
- errno. Même si les numéros d'erreur LDAP sont standardisés,
- différentes librairies retournent différents messages, ou parfois, des messages
- en langue locale. Ne vous fiez pas au message d'erreur, mais bien au numéro
- d'erreur.
-
-
- Voir aussi ldap_errno et ldap_error.
-
-
- Enumérer tous les messages d'erreur LDAP
-
-<?php
- for($i=0; $i<100; $i++) {
- printf("Error $i: %s<br>\n", ldap_str2err($i));
- }
-?>
-
-
-
-
-
-
-
- ldap_errno
-
- Retourne le numéro d'erreur LDAP de la dernière commande exécutée.
-
-
-
- Description
-
- int ldap_errno
- int link_id
-
-
- Retourne le numéro d'erreur LDAP généré par la dernière commande.
-
-
- Cette fonction retourne le numéro d'erreur standard, généré par la dernière
- commande LDAP, pour la connexion link_id.
- Ce numéro peut être converti en message textuel avec ldap_err2str.
-
-
- A moins que vous n'abaissiez suffisamment le niveau d'erreur dans
- php.ini (ou php3.ini), ou que vous ne
- préfixiez vos commandes LDAP avec @ (at) pour supprimer les
- affichages, les erreurs LDAP s'afficheront aussi dans le code PHP.
-
- Genérer et intercepter une erreur
-
-<?php
-// Cet exemple contient une erreur, que nous allons intercepter.
-$ld = ldap_connect("localhost");
-$bind = ldap_bind($ld);
-// Erreur de syntaxe dans l'expression du filtre (errno 87),
-// ce doit être "objectclass=*"
-$res = <email protected>($ld, "o=Myorg, c=DE", "objectclass");
-if (!$res) {
- printf("LDAP-Errno: %s<br>\n", ldap_errno($ld));
- printf("LDAP-Error: %s<br>\n", ldap_error($ld));
- die("Argh!<br>\n");
-}
-$info = ldap_get_entries($ld, $res);
-printf("%d entrées trouvées.<br>\n", $info["count"]);
-?>
-
-
-
- Voir aussi ldap_err2str et ldap_error.
-
-
-
-
-
-
- ldap_error
-
- Retourne le message LDAP de la dernière commande LDAP.
-
-
-
- Description
-
- string ldap_error
- int link_id
-
-
- Retourne un message d'erreur.
-
-
- Cette fonction retourne le message d'erreur lié à la connexion link_id.
- Même si les numéros d'erreur LDAP sont standardisés, différentes librairies
- retournent différents messages, ou parfois, des messages en langue locale. Ne vous
- fiez pas au message d'erreur, mais bien au numéro d'erreur.
-
-
- A moins que vous n'abaissiez suffisamment le niveau d'erreur dans
- php.ini (ou php3.ini), ou que vous ne
- préfixiez vos commandes LDAP avec @ pour supprimer les
- affichages, les erreurs LDAP s'afficheront aussi dans le code PHP.
-
-
- Voir aussi ldap_err2str et ldap_errno.
-
-
-
-
-
-
+ Introduction à LDAP
+
+ LDAP est l'acronyme de Lightweight Directory Access Protocol, c'est à
+ dire Protocole Léger d'Accès aux Dossiers. C'est un protocole
+ utilisé pour accéder à des "serveurs de dossiers", des
+ serveurs qui gèrent les informations de manière
+ hiérarchique.
+
+
+ Le concept est similaire à la structure de votre disque dur, hormis
+ le fait que la racine s'appelle ici : "The world" (le monde), et que les
+ dossiers du premier niveau sont assimilés à des pays. Les
+ niveaux inférieurs de la structure contiennent des entrées
+ de sociétés, d'organisations ou de lieux tandis que les
+ niveaux encore inférieurs sont des gens, voire des équipements
+ ou des documents.
+
+
+ Pour accéder à un fichier sur votre disque, vous devez utiliser
+ la syntaxe suivante :
+
+
+ /usr/local/myapp/docs
+
+
+ Le slash indique une division de la référence, et la
+ séquence est lue de gauche à droite.
+
+
+ Avec tous les détails, une référence LDAP s'appelle un "nom
+ distingué" ("distinguished name"), appelé aussi "nd" ("dn" en anglais).
+ Par exemple :
+
+
+ cn=Jean Dupont,ou=Comptes,o=Ma Société,c=Fr
+
+
+ La virgule marque une division de la référénce, et
+ la séquence est lue de droite à gauche. Vous pouvez la lire
+ comme ceci :
+
+
+ country = Fr
+ organization = Ma Société
+ organizationalUnit = Comptes
+ commonName = Jean Dupont
+
+
+ De la même façon qu'il n'y a pas de règle universelle
+ d'organisation d'un disque dur, un serveur de dossier peut supporter
+ n'importe quelle structure du moment qu'elle a un sens pour ce qu'on en
+ fait. Cependant, il existe quelques conventions : il est impossible
+ d'écrire un code d'accès à un dossier sans en
+ connaître sa structure, de la même façon que vous
+ ne pouvez pas utiliser une base de données sans en connaître
+ les tables.
+
+
+
+ Exemple complet
+
+ Recupérer toutes les entrées dont le nom commence par "S"
+ dans un serveur, et afficher le nom et l'adresse email.
+
+
+ Recherche LDAP
+
+// Structure d'une commande simple :
+// connexion, lien, recherche, interpretation de la recherche
+// résultat, déconnexion
+<?php
+echo "<?h3>LDAP query test<?/h3>";
+echo "Connexion ...";
+$ds=ldap_connect("localhost"); // Doit être un serveur LDAP valide!
+echo "Résultat de la connexion : ".$ds."<?p>";
+if ($ds) {
+ echo "Lien ...";
+ $r=ldap_bind($ds); // Ceci est un lien "anonymous", typiquement
+ // en lecture seule. En cas d'accès, affiche
+ // " Lien résultat est"
+ echo "Lien résultat est ".$r."<?p>";
+ echo "Recherche de (sn=S*) ...";
+ // Recherche dans les noms
+ $sr=ldap_search($ds,"o=Ma Société, c=Fr", "sn=S*");
+ echo "Résultat : ".$sr."<?p>";
+ echo "Nombre d'entrée retournée : ".ldap_count_entries($ds,$sr)."<?p>";
+ echo "Lecture des entrées...<?p>";
+ $info = ldap_get_entries($ds, $sr);
+ echo "Data for ".$info["count"]." items returned:<?p>";
+ for ($i=0; $i<?$info["count"]; $i++) {
+ echo "dn vaut : ". $info[$i]["dn"] ."<?br>";
+ echo "première entrée cn vaut : ". $info[$i]["cn"][0] ."<?br>";
+ echo "premièr email vaut: ". $info[$i]["mail"][0] ."<?p>";
+ }
+ echo "Déconnexion ";
+ ldap_close($ds);
+} else {
+ echo "<?h4>Impossible de se connecter à un serveur LDAP <?/h4>";
+}
+?>
+
+
+
+ Utilisation des fonctions PHP LDAP
+
+ Il faut d'abord que les bibliothèques client LDAP soient
+ compilées avec PHP. Vous pouvez vous procurer ces
+ bibliothèques University of Michigan (ldap-3.3 package) ou
+ chez Netscape (Netscape Directory SDK).
+
+ Avant d'utiliser les fonctions LDAP il faut savoir :
+
+
+
+ Le nom ou l'adresse du serveur à utiliser
+
+
+
+
+ Le "nd" dans le serveur (la partie du monde qui est sur ce serveur,
+ ce qui peut correspondre à "o=Ma société,c=Fr")
+
+
+
+
+ Eventuellement, un mot de passe pour accéder au serveur (de nombreux
+ serveur fournisse un accès en lien anonymes ("anonymous bind")
+ mais requièrent un mot de passe pour tout le reste).
+
+
+
+
+
+ Une séquence habituelle LDAP suivra le schéma suivant :
+
+ ldap_connect() // établit une connexion à un serveur
+ |
+ ldap_bind() // nom de compte "login" ou anonyme
+ |
+ éxécution de commandes sur le serveur, comme un listage, ou
+ une modification de données avec affichage
+ |
+ ldap_close() // "déconnexion"
+
+
+
+
+ Plus d'informations
+
+ Vous pouvez en apprendre encore plus, mais en anglais, aux adresses suivantes :
+
+
+
+
+ Netscape
+
+
+
+
+ University of Michigan
+
+
+
+
+ OpenLDAP Project
+
+
+
+
+ LDAP World
+
+
+
+
+ Le SDK Netscape contient un guide du programmeur au format HTML
+ particulièrement pratique (en anglais).
+
+
+
+
+
+
+ ldap_add
+ Ajoute une entrée à un dossier LDAP.
+
+
+ Description
+
+
+ int ldap_add
+ int link_identifier
+ string dn
+ array entry
+
+
+
+ ldap_add retourne TRUE en cas de succès,
+ ou FALSE en cas d'erreur.
+
+ ldap_add sert à ajouter une entrée
+ dans un dossier LDAP. Le ND de l'entrée sera ajouté à
+ la dn du dossier spécifié. Le tableau
+ entry spécifie les informations de la nouvelle
+ entrée. Les valeurs de l'entrée sont indexées dans les
+ attributs de l'entrée. Si un attribut a de multiples valeurs, elles
+ seront indexées dans un tableau, à partir de l'index 0.
+
+
+
+ entree["attribut1"] = valeur
+ entree["attribut2"][0] = valeur1
+ entree["attribut2"][1] = valeur2
+
+
+
+ Exemple complet avec lien authentifié
+
+<?php
+$ds=ldap_connect("localhost"); // On suppose que le serveur LDAP est sur cet hote
+if ($ds) {
+ // liaison avec le nd approprié, pour avoir un accès en modification
+ $r=ldap_bind($ds,"cn=root, o=Ma Société, c=Fr", "secret");
+ // preparation des données
+ $info["cn"]="John Jones";
+ $info["sn"]="Jones";
+ $info["mail"]="jonj <email protected>";
+ $info["objectclass"]="person";
+ // Ajout des données dans le dossier
+ $r=ldap_add($ds, "cn=John Jones, o=My Company, c=US", $info);
+ ldap_close($ds);
+} else {
+ echo "Impossible de se connecter au serveur LDAP ";
+}
+?>
+
+
+
+
+
+
+ ldap_bind
+ Se lie à un serveur LDAP.
+
+
+ Description
+
+
+ int ldap_bind
+ int link_identifier
+ string bind_rdn
+ string bind_password
+
+
+
+ ldap_bind lie un serveur LDAP avec le RDN
+ bind_rdn et mot de passe
+ bind_password. Retourne TRUE en cas de succès,
+ et FALSE sinon.
+
+
+ ldap_bind effectue une opération de liaison
+ sur le serveur. bind_rdn et
+ bind_password sont optionnels. Si ils
+ manquent, la liaison se fera en mode anonyme.
+
+
+
+
+
+ ldap_close
+ Déconnecte d'un serveur LDAP.
+
+
+ Description
+
+
+ int ldap_close
+ int link_identifier
+
+
+
+ ldap_close retourne TRUE en cas de succès,
+ et FALSE sinon.
+
+
+ ldap_close ferme le lien au serveur LDAP
+ associé à l'identifiant link_identifier.
+
+
+ Cet appel est identique à ldap_unbind, en interne.
+ Les API LDAP utilisent la fonction ldap_unbind : il est
+ probablement mieux que vous utilisiez cette fonction là plutôt
+ que ldap_close.
+
+
+
+
+
+ ldap_compare
+ Compare les valeurs des attributs trouvés dans un ND
+
+
+ Description
+
+
+ int ldap_compare
+ int link_identifier
+ string dn
+ string attribute
+ string value
+
+
+
+ ldap_compare retournr TRUE si
+ value un fichier correspond à la recherche; retourne
+ -1 si une erreur survient.
+
+
+ ldap_compare sert à comparer la valeur
+ value de l'attribut attribute
+ aux valeurs du même atribut dans l'annuaire LDAP dn.
+
+
+ L'exemple suivant montre comment vérifier qu'un mot de passe correspond
+ bien à celui qui est stocké dans l'annuaire.
+
+
+ Vérification d'un mot de passe avec LDAP
+
+<?php
+$ds=ldap_connect("localhost"); // on suppose que le serveur LDAP est sur le serveur local
+if ($ds) {
+ // liaison
+ if(ldap_bind($ds)) {
+ // prépare les données
+ $dn = "cn=Matti Meikku, ou=My Unit, o=My Company, c=FI";
+ $value = "secretpassword";
+ $attr = "password";
+ // compare les valeurs
+ $r=ldap_compare($ds, $dn, $attr, $value);
+ if ($r === -1) {
+ echo "Erreur: ".ldap_error($ds);
+ } elseif ($r === TRUE) {
+ echo "Mot de passe correct.";
+ } elseif ($r === FALSE) {
+ echo "Mot de passe erronné!";
+ }
+ } else {
+ echo "Connexion impossible.";
+ }
+ ldap_close($ds);
+} else {
+ echo "Impossible de se connecter au serveur LDAP.";
+}
+?>
+
+
+
+
+ ldap_compare ne peut pas comparer des données binaires.
+
+
+
+
+ Cette fonction a été ajoutée en 4.0.2.
+
+
+
+
+
+
+ ldap_connect
+ Se connecte à un serveur LDAP.
+
+
+ Description
+
+
+ int ldap_connect
+ string hostname
+ int port
+
+
+
+ ldap_connect retourne un identifiant positif de serveur
+ LDAP en cas de succès, ou bien FALSE en cas d'erreur.
+
+
+ ldap_connect établit une connexion avec un serveur.
+ Le serveur LDAP situé sur l'hôte hostname et
+ port. Les deux arguments sont optionnels. Sans argument,
+ l'identifiant de la dernière connexion ouverte sera retournée. Si
+ seul hostname est spécifié, le port par
+ défaut est 389.
+
+
+ Si vous utilisez OpenLDAP 2.x.x, vous pouvez spécifier une URL au
+ lieu d'un nom d'hôte. Pour utiliser LDAP avec SSL, compilez
+ OpenLDAP 2.x.x avec le support SSL, configurez PHP avec SSL, et
+ utilisez ldaps://hostname/ comme nom d'hôte. Le paramètre de
+ port port n'est pas utile lorsqu'utilisé
+ avec des URL. Le support des URL et SSL a été ajouté dans PHP 4.0.4.
+
+
+
+
+
+ ldap_count_entries
+ Compte le nombre d'entrées d'une recherche.
+
+
+ Description
+
+
+ int ldap_count_entries
+ int link_identifier
+ int result_identifier
+
+
+
+ ldap_count_entries retourne le nombre
+ d'entrées en cas de succès, et FALSE sinon.
+
+
+ ldap_count_entries retourne le nombre d'entrées
+ placées dans le résultat par les recherches
+ précédentes. result_identifier
+ identifie un résultat LDAP interne.
+
+
+
+
+
+ ldap_delete
+ Efface une entrée dans un dossier.
+
+
+ Description
+
+
+ int ldap_delete
+ int link_identifier
+ string dn
+
+
+
+ ldap_delete retourne TRUE en cas de succès,
+ et FALSE sinon.
+
+
+ ldap_delete efface une entrée dans un dossier
+ LDAP spécifié par le nd dn.
+
+
+
+
+
+ ldap_dn2ufn
+ Converti un ND dans un format plus accessible.
+
+
+ Description
+
+
+ string ldap_dn2ufn
+ string dn
+
+
+
+ ldap_dn2ufn sert à mettre le nd
+ dn dans un format plus agréable,
+ notamment en supprimant les noms des types.
+
+
+
+
+
+ ldap_err2str
+
+ Converti un numéro d'erreur LDAP en message d'erreur.
+
+
+
+ Description
+
+
+ string ldap_err2str
+ int errno
+
+
+
+ ldap_err2str retourne un message d'erreur.
+
+
+ ldap_err2str retourne le message d'erreur lié
+ au numér d'erreur errno. Même si les
+ numéros d'erreur LDAP sont standardisés, différentes
+ librairies retournent différents messages, ou parfois, des messages
+ en langue locale. Ne vous fiez pas au message d'erreur, mais bien au
+ numéro d'erreur.
+
+
+ Voir aussi ldap_errno et ldap_error.
+
+ Enumérer tous les messages d'erreur LDAP
+
+<?php
+ for($i=0; $i<100; $i++) {
+ printf("Error $i: %s<br>\n", ldap_str2err($i));
+ }
+?>
+
+
+
+
+
+
+ ldap_errno
+
+ Retourne le numéro d'erreur LDAP de la dernière
+ commande exécutée.
+
+
+
+ Description
+
+
+ int ldap_errno
+ int link_id
+
+
+
+ ldap_errno retourne le numéro d'erreur
+ LDAP généré par la dernière commande.
+
+
+ ldap_errno retourne le numéro d'erreur
+ standard, généré par la dernière commande
+ LDAP, pour la connexion link_id. Ce numéro
+ peut être converti en message textuel avec
+ ldap_err2str.
+
+
+ A moins que vous n'abaissiez suffisamment le niveau d'erreur dans
+ php.ini (ou php3.ini), ou que
+ vous ne préfixiez vos commandes LDAP avec @
+ (at) pour supprimer les affichages, les erreurs LDAP s'afficheront aussi
+ dans le code PHP.
+
+ Genérer et intercepter une erreur
+
+<?php
+// Cet exemple contient une erreur, que nous allons intercepter.
+$ld = ldap_connect("localhost");
+$bind = ldap_bind($ld);
+// Erreur de syntaxe dans l'expression du filtre (errno 87),
+// ce doit être "objectclass=*"
+$res = <email protected>($ld, "o=Myorg, c=DE", "objectclass");
+if (!$res) {
+ printf("LDAP-Errno: %s<br>\n", ldap_errno($ld));
+ printf("LDAP-Error: %s<br>\n", ldap_error($ld));
+ die("Argh!<br>\n");
+}
+$info = ldap_get_entries($ld, $res);
+printf("%d entrées trouvées.<br>\n", $info["count"]);
+?>
+
+
+
+
+ Voir aussi ldap_err2str et ldap_error.
+
+
+
+
+
+ ldap_error
+
+ Retourne le message LDAP de la dernière commande LDAP.
+
+
+
+ Description
+
+
+ string ldap_error
+ int link_id
+
+
+
+ ldap_error retourne un message d'erreur.
+
+
+ ldap_error retourne le message d'erreur lié
+ à la connexion link_id. Même si les
+ numéros d'erreur LDAP sont standardisés, différentes
+ librairies retournent différents messages, ou parfois, des messages
+ en langue locale. Ne vous fiez pas au message d'erreur, mais bien au
+ numéro d'erreur.
+
+
+ A moins que vous n'abaissiez suffisamment le niveau d'erreur dans
+ php.ini (ou php3.ini), ou que vous ne
+ préfixiez vos commandes LDAP avec @ pour supprimer
+ les affichages, les erreurs LDAP s'afficheront aussi dans le code PHP.
+
+
+ Voir aussi ldap_err2str et ldap_errno.
+
+
+
+
+
+ ldap_explode_dn
+ Scinde un ND en plusieurs composants.
+
+
+ Description
+
+
+ array ldap_explode_dn
+ string dn
+ int with_attrib
+
+
+
+ ldap_explode_dn sert à scinder le nd
+ dn retourné par ldap_get_dn
+ en plusieurs composants. Chaque composant est reconnu sous le nom
+ Nom Distinct Relatif (ou RDN, en anglais). ldap_explode_dn
+ retourne un tableau qui contient ces composants.
+ with_attrib sert à préciser si le RDN est
+ retourné avec ses attributs, ou seul. Pour obtenir le RDN et ses
+ attributs, mettez with_attrib à 0 et pour
+ n'avoir que les valeurs, mettez le à 1.
+
+
+
+
+
+ ldap_first_attribute
+ Retourne le premier attribut.
+
+
+ Description
+
+ string ldap_first_attribute
+ int link_identifier
+ int result_entry_identifier
+ int ber_identifier
+
+
+ ldap_first_attribute retourne le premier attribut
+ en cas de succès, et FALSE sinon.
+
+
+ Le comportement est similaire pour les entrées. Les attributs sont lus
+ séquentiellement dans une entrée particulière.
+ ldap_first_attribute retourne le premier attribut de
+ l'entrée désignée par l'identifiant d'entrée. Les
+ attributs suivants sont accessibles avec
+ ldap_next_attribute. ber_identifier
+ est un identifiant de pointeur de mémoire interne. Il est passé
+ par référence. Le même identifiant
+ ber_identifier est passé à
+ ldap_next_attribute, qui modifie ce pointeur.
+
+
+ Voir aussi ldap_get_attributes.
+
+
+
+
+
+ ldap_first_entry
+ Retourne l'identifiant du premier attribut.
+
+
+ Description
+
+
+ int ldap_first_entry
+ int link_identifier
+ int result_identifier
+
+
+
+ ldap_first_entry retourne un identifiant sur la
+ première entrée en cas de succès, et FALSE sinon.
+
+
+ Les entrées d'un résultat sont lues séquentiellement,
+ en utilisant ldap_first_entry et
+ ldap_next_entry. ldap_first_entry
+ retourne l'identifiant de la première entrée du résultat.
+ Cet identifiant sera fourni à ldap_next_entry pour
+ accéder à la prochaîne entrée.
+
+
+ Voir aussi ldap_get_entries.
+
+
+
+
+
+ ldap_free_result
+
+ Libère la mémoire prise par un résultat.
+
+
+
+ Description
+
+
+ int ldap_free_result
+ int result_identifier
+
+
+
+ ldap_free_result retourne TRUE en cas de
+ succès, et FALSE sinon.
+
+
+ ldap_free_result libère la mémoire
+ allouée en interne pour enregistrer le résultat pointé
+ par result_identifier. A la fin de chaque script, la
+ mémoire sera de toute manière libérée.
+
+
+ Généralement, il n'y a pas besoin de libérer la
+ mémoire, et le mécanisme automatique de fin de script est
+ suffisant. Cependant, dans les cas oú le script effectue plusieurs
+ recherches successives, oú que les résultats retournés
+ sont très grands, ldap_free_result permet de
+ réduire la consommation de mémoire.
+
+
+
+
+
+ ldap_get_attributes
+
+ Retourne les attributs d'une entrée d'un résultat.
+
+
+
+ Description
+
+
+ array ldap_get_attributes
+ int link_identifier
+ int
+ result_entry_identifier
+
+
+
+ ldap_get_attributes retourne un tableau multi-dimensionel
+ en cas de succès, et FALSE sinon.
+
+
+ ldap_get_attributes sert à simplifier la lecture
+ des attributs et des valeurs d'une entrée dans un résultat.
+ Le résultat est un tableau multi-dimensionnel, avec les attributs
+ en clé, et les valeurs des attributs en valeurs.
+
+
+ Une fois que vous avez repéré une entré dans un
+ dossier, vous pouvez lire les informations de cette entrée avec
+ cette fonction. Vous pouvez utiliser cette fonction pour créer une
+ application qui se déplace dans les dossiers, sans en connaître
+ la structure au préalable. Dans de nombreux cas, vous ne chercherez
+ qu'un attribut particulier (le email, par exemple) et vous ne vous
+ intéresserez pas aux autres valeurs.
+
+
+
+ Affichage de la liste des attributs d'une entrée
+
+// $ds est l'identifiant de lien pour ce dossier
+// $sr est un résultat de recherche valide, obtenu lors d'une recherche
+// précédente
+$entry = ldap_first_entry($ds, $sr);
+$attrs = ldap_get_attributes($ds, $entry);
+echo $attrs["count"]." Attributs dans cette entrée:<p>";
+for ($i=0; $i<$attrs["compte"]; $i++)
+ echo $attrs[$i]."<br>";
+
+
+
+
+ Voir aussi ldap_first_attribute et
+ ldap_next_attribute.
+
+
+
+
+
+ ldap_get_dn
+ Retourne un ND d'une entrée d'un résultat.
+
+
+ Description
+
+
+ string ldap_get_dn
+ int link_identifier
+ int result_entry_identifier
+
+
+
+ ldap_get_dn retourne le DN de l'entrée
+ en cas de succès, et FALSE sinon.
+
+
+ ldap_get_dn sert à obtenir le ND d'une
+ entrée d'un résultat.
+
+
+
+
+
+ ldap_get_entries
+ Retourne toutes les entrées.
+
+
+ Description
+
+
+ array ldap_get_entries
+ int link_identifier
+ int result_identifier
+
+
+
+ ldap_get_entries retourne un tableau multi-dimensionnel
+ en cas de succès, et FALSE sinon.
+
+
+ ldap_get_entries sert à simplifier la lecture
+ d'un résultat à plusieurs entrées. Toutes les
+ informations sont retournées sous la forme d'un tableau
+ multi-dimensionnel. La structure de ce tableau est la suivante :
+
+
+ Les attributs servent d'index et sont mis en minuscules (les attributs sont
+ insensibles à la casse sur les serveurs, mais peuvent ne pas
+ l'être quand ils sont utilisés comme index)
+
+
+résultat ["compte"] = nombre d'entrées du résultat
+résultat [0] : correspond aux détails de la première entrée :
+résultat [i]["nd"] = ND de la i-ième entrée
+résultat [i][" compte "] = nombre d'attributs de la i-ième entrée
+résultat [i][j] = j-ième attribut de la i-ième entrée
+résultat [i]["attribut"]["count"] = nombre de valeur pour l'attribut
+résultat [i]["attribut"][j] = j-ième valeur de l'attribut
+
+
+
+
+ Voir aussi ldap_first_entry et
+ ldap_next_entry.
+
+
+
+
+
+ ldap_get_option
+ Lit la valeur courante d'une option
+
+
+ Description
+
+
+ boolean ldap_get_option
+ int link_identifier
+ int option
+ mixed retval
+
+
+
+ ldap_get_option remplace la valeur courante de
+ l'option option par retval,
+ et retourne TRUE en cas de succès, FALSE sinon.
+
+
+ Le paramètre option peut prendre l'une des valeurs :
+ LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT,
+ LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS,
+ LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING,
+ LDAP_OPT_MATCHED_DN. Elles sont décrites dans
+ draft-ietf-ldapext-ldap-c-api-xx.txt
+
+
+ ldap_get_option n'est disponible que si vous utilisez
+ OpenLDAP 2.x.x ou Netscape Directory SDK x.x. Elle a été ajoutée dans
+ PHP 4.0.4.
+
+
+
+ Vérification de la version du protocole
+
+// $ds est un identifiant valide d'annuaire
+if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version))
+ echo "La version du protocole est $version";
+else
+ echo "Impossible de lire la version du protocole";
+
+
+
+
+ Voir aussi ldap_set_option.
+
+
+
+
+
+ ldap_get_values
+ Retourne toutes les entrées d'un résultat.
+
+
+ Description
+
+
+ array ldap_get_values
+ int link_identifier
+ int result_entry_identifier
+ string attribute
+
+
+
+ ldap_get_option retourne un tableau de valeurs en
+ cas de succès, et FALSE sinon.
+
+
+ ldap_get_values sert à lire toutes les valeurs
+ d'un attribut dans une entrée. L'entrée est
+ référencée par
+ result_entry_identifier. Le nombre de valeurs
+ peut être trouvé à l'index "count" dans le résultat.
+ Les valeurs sont accessibles par un index entier, qui commence à 0.
+
+
+ ldap_get_values nécessite un pointeur de
+ résultat result_entry_identifier, ce qui
+ implique qu'il ait été précédé d'une
+ recherche sur le serveur, et de l'obtention d'une entrée.
+
+
+ Votre application pourra utiliser des noms d'attributs en dur dans le code, ou
+ bien, utiliser la fonction ldap_get_attributes pour y
+ accéder dynamiquement.
+
+
+ LDAP autorise plus d'une entrée par attribut, ce qui permet,
+ par exemple, d'étiqueter tous les adresses email d'un utilisateur
+ avec l'attribut "mail"
+
+
+return_value["count"] = nombre de valeurs de l'attribut
+return_value[0] = première valeur de l'attribut
+return_value[i] = n-ième valeur de attribut
+
+
+
+ Liste toutes les valeurs avec l'attribut "mail"
+
+// $ds est l'identifiant de lien pour ce dossier
+// $sr est un résultat de recherche valide, obtenu lors d'une recherche
+// précédente
+// $entry est un identifiant valide d'entrée
+$values = ldap_get_values($ds, $entry,"mail");
+echo $values["count"]." Adresse email dans ce résultat.<p>";
+for ($i=0; $i < $values["count"]; $i++)
+ echo $values[$i]."<br>";
+
+
+
+
+
+
+
+ ldap_get_values_len
+
+ Retourne toutes les valeurs binaires à partir d'un identifiant
+ de résultat.
+
+
+
+ Description
+
+
+ array ldap_get_values_len
+ int link_identifier
+ int result_entry_identifier
+ string attribute
+
+
+
+ ldap_get_values_len retourne un tableau de valeurs
+ pour l'attribut, ou bien FALSE en cas d'erreur.
+
+
+ ldap_get_values_len sert à lire toutes les
+ valeurs d'un attribut d'une entrée dans un résultat.
+ L'entrée est spécifiée par
+ result_entry_identifier. Le nombre de valeurs
+ trouvées peut être retrouvé en indexant "count" dans
+ le tableau résultat. On peut accéder aux valeurs individuelles
+ avec un index numérique, commencant à 0.
+
+
+ ldap_get_values_len est utilisée exactement
+ comme ldap_get_values mais elle gère les
+ données binaires, et non pas les chaînes.
+
+
+
+
+
+ ldap_list
+ Recherche dans un seul niveau.
+
+
+ Description
+
+
+ int ldap_list
+ int link_identifier
+ string base_dn
+ string filter
+ array
+ attributes
+ int
+ attrsonly
+
+ int
+ sizelimit
+
+ int
+ timelimit
+
+ int
+ deref
+
+
+
+
+ ldap_list retourne TRUE en cas de succès,
+ et FALSE sinon.
+
+
+ ldap_list effecture une recherche avec le filtre7
+ donnée, et limité un dossier.
+
+
+ LDAP_SCOPE_ONELEVEL indique que la recherche ne doit s'étendre que
+ dans le dossier immédiatement sous le nd base_dn.
+ (Equivalent à taper "ls" et obtenir la liste des fichiers et dossiers du
+ dossier courant).
+
+
+ Cette appel prend un quatrième argument optionnel : un tableau contenant
+ les attributs recherchés. Reportez vous à
+ ldap_search pour plus de détails.
+
+ Affiche une liste d'unités organisationnelle
+
+// $ds est un identifiant de connexion valide.
+$basedn = "o=Ma Société, c=Fr";
+$justthese = array("ou");
+$sr=ldap_list($ds, $basedn, "ou=*", $justthese);
+$info = ldap_get_entries($ds, $sr);
+for ($i=0; $i<$info["count"]; $i++)
+ echo $info[$i]["ou"][0] ;
+
+
+
+
+
+
+
+ ldap_modify
+ Modifie une entrée LDAP.
+
+
+ Description
+
+
+ int ldap_modify
+ int link_identifier
+ string dn
+ array entry
+
+
+
+ ldap_modify retourne TRUE en cas de succès,
+ et FALSE sinon.
+
+
+ ldap_modify sert à modifier les entrées
+ existantes dans un dossier LDAP. La structure de l'entrée est la
+ même que décrite dans ldap_add.
+
+
+
+
+
+ ldap_mod_add
+ Ajoute un attribut
+
+
+ Description
+
+
+ int ldap_mod_add
+ int link_identifier
+ string dn
+ array entry
+
+
+
+ ldap_mod_add retourne TRUE en cas de
+ succès, et FALSE sinon.
+
+
+ ldap_mod_add ajoute les attributs entry
+ à l'entrée dn.
+ La modification s'applique au niveau local (par opposition
+ au niveau objet). Les ajouts au niveau de l'objet sont pris
+ en charge par ldap_add.
+
+
+
+
+
+ ldap_mod_del
+ Efface un attribut
+
+
+ Description
+
+
+ int ldap_mod_del
+ int link_identifier
+ string dn
+ array entry
+
+
+
+ ldap_mod_del retourne TRUE en cas de
+ succès, et FALSE sinon.
+
+
+ ldap_mod_del efface les attributs entry
+ à l'entrée dn.
+ La modification s'appli