Bonjour à tous,

je sèche sur la compréhension de récupérer des données via la fonction LDAP en php.

Sans plus attendre, mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
 
                $baseDN = "dc=test,dc=fr"; //test.fr
                $ldapServer = "server";
                $dn = 'ou=Boussois,ou=France,ou=IT-Users,dc=test,dc=fr'; //arborescence : test.fr=> IT-Users => France => Boussois<br>
                echo "Connexion au serveur <br />";
                $conn=ldap_connect($ldapServer);
 
                // on teste : le serveur LDAP est-il trouvé ?
                if ($conn)
                                echo "Le résultat de connexion est ".$conn ."<br />";
                else
                                die("connexion impossible au serveur LDAP");
 
                /* 2ème étape : on effectue une liaison au serveur, ici de type "anonyme"
                * pour une recherche permise par un accès en lecture seule */
 
                // On dit qu'on utilise LDAP V3, sinon la V2 par défaut est utilisé
                // et le bind ne passe pas.
                if (ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3)) {
                                echo "Utilisation de LDAPv3 \n";
                } else {
                                echo "Impossible d'utiliser LDAP V3\n";
                                exit;  }
 
                $bindServerLDAP=ldap_bind($conn);
 
 
 
                print ("Liaison au serveur : ". ldap_error($conn)."\n");
                // en cas de succès de la liaison, renvoie Vrai
                if ($bindServerLDAP)
                  echo "Le résultat de connexion est $bindServerLDAP <br />";
                else
                  die("Liaison impossible au serveur ldap ...");
 
                /* 3ème étape : on effectue une recherche anonyme, avec le dn de base,
                par exemple, sur tous les noms commençant par B */
 
                echo "Recherche suivant le filtre (sn=B*) <br />";
                $query = "sn=B*";
                $result=ldap_search($conn, $baseDN, $query);
                echo "Le résultat de la recherche est $result <br />";
 
                echo "Le nombre d'entrées retournées est ";
                echo ldap_count_entries($conn,$result)."<p />";
                echo "Lecture de ces entrées ....<p />";
                $info = ldap_get_entries($conn, $result);
                echo "Données pour ".$info["count"]." entrées:<p />";
 
                for ($i=0; $i < $info["count"]; $i++) {
                                                echo "dn est : ". $info[$i]["cn"] ."<br />";
                                                echo "premiere entree cn : ". $info[$i]["cn"][0] ."<br />";
                                                echo "premier email : ". $info[$i]["mail"][0] ."<p />";
                }
                /* 4ème étape : clôture de la session  */
                echo "Fermeture de la connexion";
                ldap_close($conn);
 
?>
Affichage de la page :

Connexion au serveur

Le résultat de connexion est Ressource id #11

Utilisation de LDAPv3 Liaison au serveur : Success Le résultat de connexion est 1

Recherche suivant de filtre (sn=B*)

Mon erreur :

Warning: ldap_search(): Search: Operations error

Ligne 47 : $result=ldap_search($conn, $baseDN, $query);
Un petit coup de pouce svp !

Note : lecture en connexion anonyme autorisée (normalement) mais comment vérifier autrement qu'en PHP ?