Vous êtes ici Codes PHP et MySQL > Classes > OLDAPHP : Module LDAP PHP orienté object

 

OLDAPHP : Module LDAP PHP orienté object

C'est une API PHP5 qui encapsulé entièrement le module LDAP de PHP afin de faciliter son utilisation.

La version la plus stable à ce jour est:
http://svn.openihs.org/oldaphp/tags/1.0.0-beta2/
Cependant ça évolue régulièrement, ainsi je vous invites à vous rendre aussi sur la page dédiée : http://oldaphp.openihs.org/ section "Releases" : il y a un RSS.
 
emericv
Site de l'auteur voir
Code vu 1548 fois
Enregistré le 15 Déc 2009
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute OLDAPHP : Module LDAP PHP orienté object
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : OLDAPHP : Module LDAP PHP orienté object                  */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts538-PHP.htm              */
/* Auteur         : emericv                                                   */
/* Date édition   : 15 Déc 2009                                               */
/* Website auteur : http://openihs.org/                                       */
/*                                                                            */
/******************************************************************************/
?>
Ce premier exemple génère une sortie similaire à la commande slapcat

<?php
echo "<pre>";
try{
    require_once ("config.php");
    function __autoload($className){
        require_once ("api/$className.php");
    }
    global $settings;
    $ldap = new LDAP($settings['ldap.url'], $settings['ldap.base']);
    $ldap->bind($settings['ldap.userdn'], $settings['ldap.passwd']);
    $result $ldap->find();
    foreach($result as $dn => $entry){ // Pour chaque entrée
        echo "dn: $dn\n";
        foreach($entry as $attr => $values){ // pour chaque attribut
            foreach($values as $value){// pour chaque valeur
                echo "$attr: $value\n";
            }
        }
        echo "\n";
    }
}catch(Exception $e){
    echo $e->getMessage()."\n".$e->getTraceAsString();
}
echo "</pre>";
?>

Ce deuxième exemple Illustre la manipulation d'un "distinguished name"

<?php
echo "<pre>";
try{
    require_once ("config.php");
    function __autoload($className){
        require_once ("api/$className.php");
    }
    global $settings;
    /*
     * Affichera :
     * 'uid' => "toto"
     * 'o' => "titi"
     * 'dc' => "tutu tonton"
     */
    foreach(LDAP::splitDn("uid= toto, o = titi, dc=tutu tonton ") as $type => 
$name){
        echo "'$type' => \"$name\"\n";
    }
    // Affichera : "o=titi, dc=tutu tonton"
    echo LDAP::sliceDn("uid= toto, o = titi, dc=tutu tonton "1);
}catch(Exception $e){
    echo $e->getMessage()."\n".$e->getTraceAsString();
}
echo "</pre>";
?>

Ce troisième exemple illustre la manipulation d'un annuaire LDAP

<?php
echo "<pre>";
try{
    require_once ("config.php");
    function __autoload($className){
        require_once ("api/$className.php");
    }
    global $settings;
 
    // connexion à l'annuaire
    $ldap = new LDAP($settings['ldap.url'], $settings['ldap.base']);
    $ldap->bind($settings['ldap.userdn'], $settings['ldap.passwd']);
 
    // cherche l'utilisateur toto
    // équivalent à $ldap->searchEntries($settings['ldap.base'],"(uid=toto)");
    $result $ldap->find("(uid=toto)");
    // affiche Nombre d'entrées : 1
    echo "Nombre d'entrées : " count($result) . "\n";
    try{
        
// renvoie le premier entrée trouvée sinon renvoie une exception et sort de ce
// bloc
        $node $result->getFirstNode();
        echo "effacement de l'entrée toto existante...\n";
        // efface l'entrée dans le ldap
        $node->remove();
        /*
         * une quelconque tentative de lecture ou modification de l'objet lèvera une
 exception
         * et affichera : Erreur:: This Entity is deleted
         */
        $node['userPassword'] = "test";
    }catch(Exception $e){
        echo "Erreur:: ".$e->getMessage()."\n";
    }
 
    // ajoute l'entrée toto
    $ldap->addNode("uid=toto,".$settings['ldap.base'],array(
                'objectClass' => array("account","simpleSecurityObject"),
                'uid' => "toto",
                'userPassword' => "tutu"));
 
    // recherche de nouveau l'entrée toto
    $result $ldap->find("(uid=toto)");
    // récupère la première entrée
    $node $result->getFirstNode();
    /*
     * affiche : Type d'enregistrement de l'utilisateur toto : account,
 simpleSecurityObject
     * la méthode appelée est LDAPAttribute::__toString() qui affiche toules les
 valeurs
     * à la suite séparées pas dees virgules
     */
    echo "Type d'enregistrement de l'utilisateur toto : $node[objectClass]\n";
    /*
     * modifie l'attribut userPassword de l'entrée toto avec le mot de passe tutu,
 mais crypté cette fois-ci
     */ 
    $node['userPassword'] = LDAP::hashPasswd('tutu',LDAP::SSHA);
    /*
     * la ligne suivante affichera : Mot de passe de l'utilisateur toto : toutou
     */
    echo "Mot de passe de l'utilisateur toto : $node[userPassword]\n";
    /*
     * vérifiont que l'entrée du LDAP est bien mise à jour :
     */
    $result $ldap->find("(uid=toto)");
    $node $result->getFirstNode();
    /*
     * la ligne suivante affichera : Mot de passe de l'utilisateur toto : toutou
     */
    echo "Mot de passe de l'utilisateur toto : $node[userPassword]\n";
    /*
     * C'est gagné
     */
}catch(Exception $e){
    echo $e->getMessage()."\n".$e->getTraceAsString();
}
echo "</pre>";
?>

 

Fonctions du code

: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Compte le nombre d'éléments d'un tableau ou le nombre de propriétés...
: Crée un tableau - (PHP 4, PHP 5)
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Classes

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité