begin process at 2012 05 27 16:47:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > API LDAP POO PHP5 (ENCAPSULATION DE L'API LDAP DE PHP)

API LDAP POO PHP5 (ENCAPSULATION DE L'API LDAP DE PHP)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :php5, poo, api, ldap Niveau :Initié Date de création :23/11/2009 Date de mise à jour :13/12/2009 15:31:37 Vu / téléchargé :3 618 / 239

Auteur : emericv

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

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

L'API est composée des classes suivantes :
LDAP : Objet principal (connexion, ajout, modification, lecture, recherche, suppression, etc...)
LDAPResult : résultat renvoyé par lecture/recherche/liste (liste des entrées)
LDAPEntry : une entrées (contenant les attributs)
LDAPEntryIterator : itérateur d'entrée
LDAPException : Exception

L'exemple d'utilusation génère une sortie similaire à la commande slapcat

========================================= =======================================
Edit:26/11 /2009

l'api est hébergée à l'adresse http://svn.openihs.org/oldaphp/
Adresse de la version en développement : http://svn.openihs.org/oldaphp/trunk/
Adresse de la dernière version stable : http://svn.openihs.org/oldaphp/tags/0.9.0/

ATTENT ION: j'ai supprimé l'archive zip car elle n'est pas à jour. Pour vous procurer une version suivez un lien au choix ci-dessus.

La dernière version gelée à ce jour est la version 0.9.0. Je suis en train de poursuivre son développement avec des amélioration mangeures. J'ai aussi prévu de faire une doc en français avec plus d'exemples.

Pour suivre la suite du développement, je vous invite à consulter régulièrement cette page : http://openihs.org/node/28

====================== ================================================== ========
Edit:13/12/2009

ça y est la version 1.0.0 beta 2 est disponible et si vous avez aimé la version précédente, vous allez certainement beaucoup plus apprécier la dernière !

alors, rendez-vous sur la page du projet : http://oldaphp.openihs.org/

Source

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

 Conclusion

L'api est fraîchement codé n'est pas encore testée de fond en comble. Si vous avez des suggestions, n'hésitez pas...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 novembre 2009 10:34:16 :
mise à jour de la description
24 novembre 2009 13:51:13 :
changement de niveau
24 novembre 2009 13:56:49 :
correction de fautes
26 novembre 2009 22:12:20 :
Mise à jour du code et de la description
13 décembre 2009 15:31:37 :
mise à disposition de la version finale largement améliorée

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TODO LIST (AJAX/PHP5) par VinceMonkeyz
Source avec Zip [PHP5.2] CLASSE PDO par hornetbzz
CLASS RECHERCHE PHP5 POO par mtrix000
CLASS AUTHENTIFICATION PHP5 POO par mtrix000
CLASS PAGINATION PHP5 POO par mtrix000

Commentaires et avis

Commentaire de Arto_8000 le 24/11/2009 18:19:48

On voit souvent passer des classes de tout genre ici et je dois dire que la tienne est une des rares qui a une très bonne encapsulation. Ça reste très simple et impeccable et ça offre une interface pour ceux qui préfère travailler avec de la POO avec PHP. Je ne connais pas LDAP comme tel, mais si j'ai besoin d'utiliser un jour, je vais regarder ta source.

Commentaire de aKheNathOn le 26/11/2009 09:34:49 10/10

D'accord avec arto, super bien codé : bon découpage, bonne documentation, code très propre et clair, bref une source de qualité :)) vraiment là j'ai rien à en redire :)) ça mérite un 10/10 !!

Bonne continuation et un grand merci pour ta contribution qui me sera très utile.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

API Win32 [ par Schouly ] Voila ...Je cherche à exécuter une api Win32 avec une page phpmais je n'arrive pas à utiliser la fonctionw32api_invoke_function...@ +Schouly API Win32 [ par Schouly ] Voila ...Je cherche à exécuter une api Win32 avec une page phpmais je n'arrive pas à utiliser la fonctionw32api_invoke_function...@ +Schouly LDAP... [ par booth ] bonjour!je cherche à faire une connection sur un serveur LDAP qui interface une NDS sur netware 6.0 SP2.En connection anonymous il me prend sans probl Php & Ldap [ par syndrael ] Bonjour,Peut-on se connecter à une base LDAP ? Je usis en train de mettre en place une architecture ou un LDAP serait bien utile.Merci.S. problème php ldap [ par dalow17 ] Bonjour,Voilà je dois récupérer l'utilisateur connecté via l'annuaire ldap sous windows 2000 en php.J'arrive à me connecter au serveur ldap mais dès q differnec entre php 4 et php5 [ par hardelgylls ] Bonjourpetite question :j'ai passer un oral et l'examinateur m'a demandé quel était la différence entre php4 et php5. et la gros blanc, est ce que qqu pb ldap et pass crypté [ par fmazoue ] voila mon problème c'est que pour une identification je veux utilisé ldap mais je sais pas comment ldap crypte ces message !! si qqn sait merci de m'a Doc PHP5 sniff sniff [ par slhuilli ] Bonjour, Bonsoir,Je suis a la recherche d'un PDF qui recenserait les mots-clefs + explications (bref un bouquin complet) sur PHP 5 qui parait-il est besoin d'aide pour gerer mes groupes avec ldap [ par feoda ] Tout D'abord salut a tous!!!!!!alors voila, je dois créer une interface php relié a ldap, jusque là tout va bien !!!!Mais maintenant je dois créer des invalid syntax avec un ldap_add [ par feoda ] Salut !!!!!!!!!!!!!!!!!!!!!!!!alors voila, en utilisant ma page ajout .php je dois pouvoir enregistrer des variables directement dans ma base ldap. Ce


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales