LDAP???

Eléphant du PHP | 181 Messages

11 oct. 2005, 11:01

je vais reutilise mon post pour poser la question car elle est un peu en rapport.

donc j'ai reussi a utiliser ldap mais la mon soucy c'est que la compagnie pour qui j'ai fait l'application a ouvert un nouveau bureau et comme par hasard ce nouveau bureau doit etre pris en compte dans ma recherche....

mais la je but.... je sais pas comment lui dire de cherche soit dans la root et de cherche que les user ou alors donner les compagnie dans lesquelle je dois cherche.

si qqn peut m'aider ca serait gentil.... merci 'davance


voiy mon code pour l'attaque de ldap:
//recuperation des utilisateurs:
$person = '';
$dn = "ou=Users,[b] o=Cointrin[/b]	";
$filtre="(&(objectclass=person)(cn=$person*))";
$restriction = array( "cn", "sn", "givenname", "objectclass=person");
$sr=ldap_search($ds, $dn, $filtre);
$info = ldap_get_entries($ds, $sr); 

la ou j'ai o = cointrin c justement la que je dois rajouter ma nouvelle compagnie.... mais je butte.

j'ai fait ((o=Cointrin)&(o=madrid)) ou des o=Cointrin or Madrid

mais j'ai chaque fois des erreur:

Code : Tout sélectionner

dap_search(): Search: No such object in c:\program files\easyphp1-8\www\tag_it\application\inc\hardware\hardware_affect.php on line 89

Mammouth du PHP | 19672 Messages

11 oct. 2005, 11:08

 ((o=Cointrin) || (o=madrid)) 
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 181 Messages

11 oct. 2005, 11:11

marche pas:
$dn = "ou=Users, ((o=Cointrin) || (o=Madrid))";	



l'erreur c'est:

Code : Tout sélectionner

Warning: ldap_search(): Search: Invalid DN syntax in c:\program files\easyphp1-8\www\tag_it\application\inc\hardware\hardware_affect.php on line 89 Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource in c:\program files\easyphp1-8\www\tag_it\application\inc\hardware\hardware_affect.php on line 90

Mammouth du PHP | 19672 Messages

11 oct. 2005, 11:14

non, effectivement, tu ne peut pas faire une affectation de valeur comme ça. il te reste la solution de mettre les vleurs dans un tableau indexé. Mais ça va modifier le traitement, je n'ai pas suivi le sujet depuis le début, mais l'alternative que je proposais n'est valable que dans un test genre if ou elseif.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 181 Messages

11 oct. 2005, 11:18

en fait je dois affecter des utilisateurs qui sont dans un annuaire ldap avec des machines (ex: pc, ecran, etc...)

et au debut ben ca devait juste etre utile pour le siege de l'entreprise mais depuis qq jours on me dis qu'il faut aussi prendre en compte les utilisateur de madrid....

et la est mon probleme quand ya juste un o ca va mais quand je dois jouer avec plusieur ben je suis bloque...

Mammouth du PHP | 19672 Messages

11 oct. 2005, 11:28

Je visualise très mal le schéma de ton appli: disposes-tu de valeurs permettant de faire un test afin d'affecter madrid ou cointrin à ta variable ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 181 Messages

11 oct. 2005, 11:41

Je visualise très mal le schéma de ton appli: disposes-tu de valeurs permettant de faire un test afin d'affecter madrid ou cointrin à ta variable ?
en fait je dois juste recupere dans une liste deroulante les users des differents endroit (cointrin ou madrid)... c juste ca mon probleme.... sinon ca marche nickel sauf que je dois faire apparaitre les gens de madrid et qu'ils n'apparaissent pas car je n'arrive pas a prendre les 2... j'arrive juste l'un ou l'autre separer mais les 2 ensemble je n'y arrive pas....

Mammouth du PHP | 19672 Messages

11 oct. 2005, 12:06

Ok, attends, que je comprenne bien: tu disposes donc d'une liste: il s'agit en quelque sorte de la trier ?

Si c'est ça, à quoi ressemble cette liste (exemple bienvenu) et que dois-tu en faire au juste pour obtenir quoi en sortie (exemple tout aussi bienvenu)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 oct. 2005, 12:19

il me semble que le problème n'est pas attaché à la syntaxe PHP dans un premier temps.
Il faut d'abord nous dire si le site de madrid dispose d'une entrée LDAP (autrement dit : est qu'il existe en tant que domaine ou sous-domaine et quel est son chemin?)

Mais si tu dis que tu sais faire pour extraire les users d'un site, je vois pas pourquoi tu ne pourras le faire pour N sites. La question est connais tu le chemin LDAP des autres sites et existent-ils vraiment en tant qu'entrée LDAP.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 181 Messages

14 oct. 2005, 11:35

//recuperation des utilisateurs:
$person = '';
$dn = "ou=Users,[b] o=Cointrin[/b]	";
$filtre="(&(objectclass=person)(cn=$person*))";
$restriction = array( "cn", "sn", "givenname", "objectclass=person");
$sr=ldap_search($ds, $dn, $filtre);
$info = ldap_get_entries($ds, $sr); 
donc comme ca ca marche... j'ai tout les utilisateurs de cointrin....

mais j'aimerais aussi ceux de madrid???

je rajoute
$dn = "ou=Users,[b] o=Cointrin[/b]	";
si je change o=cointrin par o= madridben ca marche juste pour mardid.

mais alors pour avoir les 2...

donc je peux pas avoir 2 groupes , c'est quant meme bizarre , non???

pourquoi je peux pas acceder en meme temps a mardid et cointrin???

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 oct. 2005, 13:03

tu ne peux pas faire une recherche directe en même temps sur deux noeuds distincts de l'arbre LDAP.
Autrement dit, les 2 sites que tu consulte sont différents et les unités d'organisation "Users" qui s'y trouvent aussi.

Donc logiquement, tu dois d'abord lancer une recherche dans un site, stocker les résultats dans un tableau global et ensuite refaire la recherche dans l'autre site et ajouter les résultats trouvés dans le tableau global.

A la fin de cette recherche multisites, le résultat se trouve dans le tabeau global.

Techniquemnt parlant, il te faut une fonction de recherche dans un site X donné qui retourne le résultat trouvé.

La signature d'une telle fonction peut être :
function chercher_utilisateurs ($ds, $site, $critère) {
//$d s: Connexion existante au domaine
//$site : site de recherche
//$critère : valeur recherchée

//la fonction retourne null par défaut et la liste des utilisateurs s'il ya résultat
return null;
}
Ton programme doit appeler cette fonction autant de fois que de sites à intérroger. Algorithme de style:
//Connexion au préalable à la racine LDAP
$ds = .....

//Interroger le 1° site
$critère = ?; //donner une valeur de recherche
$résultats [] = chercher_utilisateurs ($ds, "Cointrin", $critère) ;

//Interroger le second
$critère = ?; //donner si le critère doit changer
$résultats [] = chercher_utilisateurs ($ds, "madrid", $critère) ;

//le tableau $résultats contient alors tous les résulats des recherches
print_r($résultats);
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène