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