Moteur de recherche intranet

Résolu/Fermé
Choupi12 - 30 juin 2009 à 10:09
 Choupi12 - 30 juin 2009 à 15:12
Bonjour,
je suis en train de créer un site intranet et Je me suis servi de LDAP pour afficher une liste de users d'un Active Directory, mais voila. La liste est longue.

Si mes utilisateurs doivent se farcir la liste entière pour trouver la personne qu'il souhaite sa risque de prendre longtemps. Donc j'ai penser créer un moteur de recherche tout faciliter.
Seulement je n'en est jamais fait et en cherchant depuis hier je n'est pas trouver de réponse. Est il possible d'en créer ? et si oui comment ?
Pour l'instant je n'est trouvé que des exemple sur base de données... pas tout fait pareil !
Merci d'avance !

3 réponses

Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
30 juin 2009 à 14:54
oui tu peux avec ldap_search... UN code complet avec connexion (manque la déconnexion mais bon)

$ds = ldap_connect("ldap://".AD_DC.".".AD_DOMAIN) or die("Erreur de connexion à AD!");
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

if ($ds) {
// Connexion avec une identité qui permet les modifications
// if (ldap_bind($ds, AD_USER."@".AD_DOMAIN, AD_PASS)) {echo RL."identification ok".RL; }
if (ldap_bind($ds, "nom_entreprise"."@".AD_DOMAIN, "taper_password")) {echo RL."identification ok".RL; }
else { echo RL."Problème d'identification ";}

// On va chercher l'identifiant DN exact de la personne à modifier.

//On indique ce qu'il faut pour recherhcer
//La présence des intiales est uniquement la comme test.
$dn = "OU=Users nom_entreprise,".BASE_DN;

$person="fred";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("dn","initials");
//On lance la recherche
$sr=ldap_search($ds, $dn, $filter, $justthese);

//On cherche dans le résultat le dn
$info = ldap_get_entries($ds, $sr);
//var_dump($info);
$dn = $info[0]['dn'];
if (is_string($info[0]['initials'][0]) == false) {$initiale = $info[0]['initials'][0];echo "défini";}
else { $initiale ="";echo "pas défini"; }

//Echo qui permet de tester, RL est un retour à la ligne
echo RL."dn : $dn";
echo RL."initial : $initiale".RL;
1
Merci beaucoup. Sa a l'air hyper technique quand méme !
Je pensais juste faire un champs de recherche avec un bouton "Lancer la recherche" pour que sa me donne le nom des utilisateurs quoi.
Sa peut marcher avec ton code ????
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
30 juin 2009 à 15:09
Ben dés qu'on travaille avec active directory, on travaille avec LDAP et oui c'est galère mlais ça marche. Mais en même temps, si tu as affiché la liste des utilisateurs, tu as déjà du y toucher...

C'est souvent plus simple de copier les résultats dans une table MySql...

En même temps les 4 ligne qui t'intéresent son celles-ci :
$person="nom_saisi_dans_ton_champ_de_recherche";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("dn","initials");
//On lance la recherche
$sr=ldap_search($ds, $dn, $filter, $justthese);

Moi,si j'avais ton truc à faire, je travaillerais avec du java script pour chercher quelle ligne afficher et cacher les autres, mais après chacun son truc.
0
Ok. Et bien si sa marche je vais essayer de trouver ^^
Merci de ton aide.
0