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>";
?>
|