[résolu] Recherches parallèles LDAP

Recherches parallèles LDAP [résolu] - PHP - Programmation

Marsh Posté le 22-10-2007 à 11:44:42    

Bonjour à tous !
 
Voici mon problème:
 
Je voudrais que mon moteur de recherche php LDAP aille taper dans 2 branches différentes.
 
Je veux éviter d' enchainer 2 requetes ldap_search à la suite et j'ai vu sur doc php que l'on pouvait effectuer
des recherches parallele en utilisant des tableaux dans la fonction ldap_search (j'utiliserai un tableau à 2 entrées pour le DN).  
 
Mais pour l'instant tout ce que j'ai testé ne marche pas et je n'ai trouvé aucune doc à ce sujet...
 
Est-ce qu'une bonne âme pourrait m'eclairer ?
 
Voici ce que j'ai essayé de faire (j'ai pas du bien comprendre le fonctionnement de la chose):
 

Code :
  1. $adAnnuaire="titi";
  2. $brancheOU[0]="ou=branche0,ou=...,o=...,c=...";
  3. $brancheOU[1]="ou=branche1,ou=...,o=...,c=...";
  4. $ds=@ldap_connect(titi);
  5. $ds_tab[0]=@ldap_connect($adAnnuaire);
  6. $ds_tab[1]=@ldap_connect($adAnnuaire);
  7. $r=ldap_bind($ds, $ldaprdn, $ldappass);   
  8. $sr=ldap_search($ds, $brancheOU, $filtre, $tabChamps);


 
merci d'avance ;)


Message édité par bernardminet le 23-10-2007 à 10:01:54
Reply

Marsh Posté le 22-10-2007 à 11:44:42   

Reply

Marsh Posté le 22-10-2007 à 14:26:02    

http://fr3.php.net/manual/fr/function.ldap-search.php
 

Citation :

Depuis PHP 4.0.5, il est possible de faire des recherches parallèles. Pour cela, vous devez utiliser un tableau de ressources de connexion comme premier argument, au lieu d'une ressource simple. Si vous ne voulez pas utiliser le même dossier de base DN et le même filtre pour toutes les recherches, vous pouvez aussi utiliser un tableau de DN et de filtres. Ces tableaux doivent alors être de la même taille que le tableau de ressources de connexion : la première entrée du tableau de ressources sera utilisée avec le premier DN et le premier filtre, etc. Lorsque vous faites une recherche parallèle, un tableau de résultats est retourné, sauf en cas d'erreur, auquel cas l'entrée contiendra FALSE. C'est très proche du comportement habituel, hormis le fait qu'un résultat est toujours retourné lorsqu'une recherche est faite. Il y a de rares cas où une recherche renvoie FALSE, alors qu'une autre en parallèle retourne un identifiant.


 
[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 15:20:04    

Merci je sais lire. (par contre je sais pas si j'ai compris :) )
 
Vu que je souhaite avoir 2 DN differentes j'ai fait un tableau DS à 2 entrée

Reply

Marsh Posté le 22-10-2007 à 15:20:50    

bernardminet a écrit :

Merci je sais lire. (par contre je sais pas si j'ai compris :) )
 
Vu que je souhaite avoir 2 DN differentes j'ai fait un tableau DS à 2 entrée


...et tu ne l'utilises pas.[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 15:32:56    

Exact :)
 
donc :
 

Code :
  1. $adAnnuaire="titi";
  2. $ds_tab[0]=@ldap_connect($adAnnuaire);
  3. $ds_tab[1]=@ldap_connect($adAnnuaire);
  4. $brancheOU[0]="ou=branche0,ou=...,o=...,c=...";
  5. $brancheOU[1]="ou=branche1,ou=...,o=...,c=...";
  6. $filtre[0]="cn='....'";
  7. $filtre[1]="cn='....'";
  8. $r=ldap_bind($ds, $ldaprdn, $ldappass); 
  9. $sr=ldap_search($ds_tab, $brancheOU, $filtre, $tabChamps);


 
Ca devrait marcher ?
 
Car il me sort maintenant un

Code :
  1. ldap_get_entries(): supplied argument is not a valid ldap result resource in

Message cité 1 fois
Message édité par bernardminet le 22-10-2007 à 15:34:14
Reply

Marsh Posté le 22-10-2007 à 15:47:14    

bernardminet a écrit :

Exact :)
 
donc :
 

Code :
  1. $adAnnuaire="titi";
  2. $ds_tab[0]=@ldap_connect($adAnnuaire);
  3. $ds_tab[1]=@ldap_connect($adAnnuaire);
  4. $brancheOU[0]="ou=branche0,ou=...,o=...,c=...";
  5. $brancheOU[1]="ou=branche1,ou=...,o=...,c=...";
  6. $filtre[0]="cn='....'";
  7. $filtre[1]="cn='....'";
  8. $r=ldap_bind($ds, $ldaprdn, $ldappass); 
  9. $sr=ldap_search($ds_tab, $brancheOU, $filtre, $tabChamps);


 
Ca devrait marcher ?
 
Car il me sort maintenant un

Code :
  1. ldap_get_entries(): supplied argument is not a valid ldap result resource in



 
montre la ligne du ldap_get_entries...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 16:05:49    

Code :
  1. $infos=ldap_get_entries($ds_tab, $sr)

Message cité 1 fois
Message édité par bernardminet le 22-10-2007 à 16:06:00
Reply

Marsh Posté le 22-10-2007 à 16:08:48    

bernardminet a écrit :

Code :
  1. $infos=ldap_get_entries($ds_tab, $sr)



http://fr.php.net/manual/fr/functi [...] ntries.php
 

Citation :

Liste de paramètres
 
link_identifier
 
    Un identifiant de lien LDAP, retourné par la fonction ldap_connect().  


 
[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 16:13:05    

Si j'utilise en link_identifier un simple "ldap_connect($adAnnuaire);" (et pas le tableau $ds_tab) il me sort en erreur :
 

Code :
  1. supplied argument is not a valid ldap result resource in

Reply

Marsh Posté le 22-10-2007 à 16:15:12    

Et si tu utilises un des éléments de ton tableau ds_tab?[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 16:15:12   

Reply

Marsh Posté le 22-10-2007 à 16:17:27    

pareil que ca soit ds_tab[0] ou ds_tab[1]...

Reply

Marsh Posté le 22-10-2007 à 16:22:55    

ah tiens, j'avais mal lu ton message d'erreur...c'est $sr le problème qui remonte, lui aussi c'est un tableau...


Message édité par skeye le 22-10-2007 à 16:23:30

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 16:29:15    

Ce que je comprends pas ce que meme dans une recherche simple le $sr retourné par ldap_search est un tableau

Message cité 1 fois
Message édité par bernardminet le 22-10-2007 à 16:29:43
Reply

Marsh Posté le 22-10-2007 à 16:30:16    

bernardminet a écrit :

Ce que je comprends pas ce que meme dans une recherche simple le $sr retourné par ldap_search est un tableau


non, c'est une ressource.

Citation :

resource ldap_search ( resource $link_identifier, string $base_dn, string $filter [, array $attributes [, int $attrsonly [, int $sizelimit [, int $timelimit [, int $deref]]]]] )

 


Valeurs de retour

 

Retourne un identifiant de recherche ou FALSE si une erreur survient.


Message édité par skeye le 22-10-2007 à 16:30:46

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-10-2007 à 16:41:53    

Ok merci de ton aide je viens de trouver.
 
Le ldap_search me revoie en fait un tableau de 2 ressources dans mon cas. Donc pour les récupérer il me faudra 2 variables $info qui recuperent $sr[0] et $sr[1] et les concatene en 1 seul tableau.


Message édité par bernardminet le 22-10-2007 à 16:42:17
Reply

Marsh Posté le 22-10-2007 à 16:59:02    

La clé reste la lecture de la doc...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-10-2007 à 10:01:26    

Débutant dans le PHP c'est quand même pas évident de décrypter les docs.
 
Tu m'as bien aidé :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed