Page 1 sur 1

Lister les organismes via un annuaire LDAP

Posté : 04 févr. 2008, 14:02
par PetarouxRay
bonjour à tous,

Je cherche donc a lister les organismes d'un annuaire LDAP dans une liste déroulante html.
Je rentre donc ce code dans une des cellules de mon tableau :
(je cache volontairement l'adresse du LDAP et sa branche utilisateur.)

Code : Tout sélectionner

<td><div align="left"> <select name="IdentOrga" id="IdentOrga"> <?php /** Définition LDAP ** --------------- */ define('LDAP_HOST', '***'); // FQDN du serveur ldap define('LDAP_USER_BASE', '***'); // branche des utilisateurs define('DMDNAME','dmdName=organismes,dmdName=services'); // domaine /** Fonction de recherche de la structure de l'annuaire LDAP ** --------------------------------------------------------- */ //connection $ds = ldap_connect(LDAP_HOST); if ($ds) { //authentification en mode anonyme $r = ldap_bind($ds); if($r) { //début de la recherche $sr = ldap_search($ds,LDAP_USER_BASE, "ou=*"); $info = ldap_get_entries ($ds,$sr); // Affichage des entrées da la liste déroulante for ($i=0; $i<$info["count"]; $i++) { echo "<option value=".$i." selected>". $info[$i] ."</option>"; } } } ldap_close ($ds); ?> </select> </div></td>

Bien sur ça ne fonctionne pas et ma page reste blanche.

Si quelqu'un a une solution merci

Posté : 04 févr. 2008, 14:37
par Cyrano
Solution non mais une pioste en utilisant une méthode de débogage :

Tu as bien mis un :
if ($ds)
Mais aucun else ne suit : si une erreur s'est produite, tu n'as pas la possibilité de le savoir : donc commence par là et remonte jusqu'à ce que tu arrives à un point de ton code qui fonctionne : à partir de là, tu auras mieux cerné l'endroit précis où il y a une bourde.

Posté : 04 févr. 2008, 14:44
par Hywan
Hey :).

Ce que tu cherches à faire, c'est débugger ton code si j'ai bien compris. Je ne connais pas LDAP en détail, mais à la limite, ce n'est pas bien grave ici.

Tu dis que tu as une page blanche, c'est à dire ? Complètement blanche ?
Essaye d'activer ton système d'erreur, et ensuite affiche toutes les erreurs.
Ce que tu peux faire après c'est écrire ton code et le tester morceau par morceaux. Par exemple, tu n'écris que la connexion (ldap_connect) avec ton if (d'ailleurs, il serait préférable d'ajouter un else à ton if). Quand le résultat du if et else sont ok, tu commences à remplir ton if etc.

C'est plus facile de coder pas à pas que de tout écrire d'un seul bloc. Ça évite les erreurs et — dans la mesure du possible — il est conseillé de le faire. Tu y gagnes en temps au final.

Voilà une première piste à explorer.

<edit>
Cyrano m'a complètement grillé, ça m'apprendra à décrocher le téléphone pendant que je rédige une réponse hehe ;-).
En 2 lignes, il dit la même chose que moi. Ce sera donc la bonne piste à poursuivre :).
</edit>

Posté : 04 févr. 2008, 16:23
par PetarouxRay
merci a vous deux :)

en faisant votre méthode... le programme bloque sur la ligne :

Code : Tout sélectionner

$sr = ldap_search($ds,LDAP_USER_BASE, "ou=*");
donc plusieurs question me viennent a l'esprit :

- Est-ce que sur les différents domaines de l'annuaire peuvent être restreint en acces ? (au quel cas je n'est peut être pas acces)
- Est-ce que je lui en demande trop et la liste des organismes est trop longue ?

Posté : 04 févr. 2008, 16:27
par Hywan
- Est-ce que sur les différents domaines de l'annuaire peuvent être restreint en acces ? (au quel cas je n'est peut être pas acces)
- Est-ce que je lui en demande trop et la liste des organismes est trop longue ?
i. C'est la que je vais arrêter de répondre O:) ;
ii. Je doute que PHP soit fainéant ;-), donc tu pourrais éliminer cette solution je pense.