PHP LDAP

Fermé
simo - 3 avril 2008 à 12:02
 simo - 3 avril 2008 à 15:21
Bonjour,
Comment afficher les informations d'une personne donnée située dans un répertoire donné de LDAP?
Quel serait le filtre?

Merci.
A voir également:

6 réponses

En fait, j'ai réalisé la fonction qui cherche un uid dans LDAP et ça marche. Mon problème est juste comment écrire le filtre pour que j'ai en même temps une restriction de recherche pour un groupe donné tout en ayant les information "sn,cn et mail) du user.
0
Merci pour ta réponse. Et c justement ça mon problème, c le filtre. Je n'arrive pas à constituer un filtre de rechrche d'une personne x dans un group y!!!
0
Merci pour ton aide :)
0
Utilisateur anonyme
3 avril 2008 à 12:05
Je pense que tu trouveras ton bonheur ici : PHP
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
3 avril 2008 à 13:20
La recherche d'entrée dans l'annuaire est sans aucun doute la fonction la plus utile parmi les fonctions LDAP de PHP¨car un annuaire est prévu pour être plus souvent sollicité en lecture (recherche) qu'en écriture (ajout/suppression/modification).

La fonction ldap_search() permet de rechercher une ou plusieurs entrées de l'annuaire LDAP à l'aide du DN de base, c'est-à-dire le niveau de l'annuaire à partir duquel la recherche est effectuée, ainsi qu'un filtre représentant le type de recherche que l'on désire effectuer. Sa syntaxe est la suivante :
int ldap_search (int identifiant, string base_dn,
	string filter [, array attributs [, int attrsonly [,
	int sizelimit [, int timelimit [, int deref]]]]])
La fonction ldap_search() admet en paramètre l'identifiant du serveur LDAP retourné par la fonction ldap_connect() ainsi que le nom distingué du dossier de base (c'est-à-dire celui à partir duquel la recherche doit s'effectuer) et le filtre de la recherche. La fonction ldap_search() est par défaut configurée avec l'option de récursivité LDAP_SCOPE_SUBTREE ce qui signifie que la recherche se fait dans toutes les branches filles du dossier de base.

Le paramètre attributs permet de restreindre les attributs et les valeurs retournées, c'est-à-dire qu'il s'agit d'un tableau contenant le nom des attributs (chaînes de caractères) des attributs que l'on désire utiliser. Par défaut l'intégralité des attributs des entrées est renvoyée par le serveur, ce qui peut donner un nombre de données très important.

Le paramètre attrsonly permet de demander à l'annuaire de retourner uniquement les types d'attributs et non leurs valeurs lorsqu'il vaut 1. Par défaut (ou lorsque ce paramètre vaut 0) les types des attributs ainsi que leurs valeurs sont retournés par le serveur.

Le sixième paramètre sizelimit comme son nom l'indique permet de limiter le nombre maximum de résultat retourné par l'annuaire afin de réduire le volume des données retournées. Il faut noter que si le serveur est configuré pour retourner moins de résultats, une valeur supérieure de l'attribut ne permettra pas de dépasser la valeur inscrite dans la configuration du serveur. La valeur 0 indique qu'aucune limite autre que celle imposée par le serveur n'est définie.

Le septième paramètre timelimit permet de limiter le temps maximal de la recherche pris par le serveur. Il faut noter que si le serveur est configuré pour retourner moins de résultats, une valeur supérieure de l'attribut ne permettra pas de dépasser la valeur inscrite dans la configuration du serveur. La valeur 0 indique qu'aucune limite autre que celle imposée par le serveur n'est définie.

Enfin le huitième paramètre deref permet d'indiquer selon sa valeur la façon de procéder avec les alias lors de la recherche. Les valeurs possibles de ce paramètre sont les suivantes :

* LDAP_DEREF_NEVER : les alias ne sont jamais déréférencés. Il s'agit de la valeur par défaut.
* LDAP_DEREF_SEARCHING : les alias sont déréférencés uniquement pendant la recherche et non pendant leur localisation.
* LDAP_DEREF_FINDING : les alias sont déréférencés uniquement pendant leur localisation et non lors de la recherche.
* LDAP_DEREF_ALWAYS : les alias sont toujours déréférencés.

L'exemple suivant permet de connaître le nombre de résultats retournés pour une recherche d'une personne dont le nom ou le prenom commence par la chaîne $person passée en paramètre :
<?php
$ds=ldap_connect($server);  // On suppose que le serveur LDAP est sur cet hote
if ($ds) {
	$r=ldap_bind($ds,$rootdn,$rootpw);

	$dn = "o=commentcamarche, c=fr";

	$filtre="(|(sn=$person*)(cn=$person*))";

	$restriction = array( "cn", "sn", "mail");

	$sr=ldap_search($ds, $dn, $filtre, $restriction);

	$info = ldap_get_entries($ds, $sr);

	print $info["count"]." enregistrements trouves";
       
         ldap_close($ds);
} else { 
         echo "Connexion au serveur LDAP impossible"; 
} ?>
Toutefois, une fois l'opération de recherche effectuée, il s'agit d'exploiter les résultats obtenus. Ainsi, la majeure partie des fonctions LDAP ont pour but le traitement des résultats de la recherche.
Dans l'exemple ci-dessus, la fonction ldap_get_entries() permet de récupérer des informations sur les entrées retournées par la fonction ldap_search().

Il faut que tu utilises les différents paramètres de ldap_search pour constituer ton filtre.
-1
Utilisateur anonyme
3 avril 2008 à 14:10
J'ai trouvé des exemples dans le fichier suivant : http://ginfo.ec-marseille.fr/site/index2.php?option=com_content&do_pdf=1&id=21

Bon courage
-1