[Serveur LDAP] Lecture d'un fichier ldif et création d'un tableau

Fc1608
Invité n'ayant pas de compte PHPfrance

23 avr. 2008, 13:44

Bonjour,

débutant en Php, j'ai un petit problème.
Je dois développer un serveur LDAP sur un environnement linux, et à partir de php, pouvoir gérer l'annuaire LDAP.

Mon problème est le suivant : j'aimerai en php pouvoir lire un fichier ldif (contenant les informations à entrer dans l'annuaire), transformer celui-ci en tableau de la forme ci dessous afin de le transmettre à la fonction ldap_add() de Php.

Forme du ldif :

Code : Tout sélectionner

dn: cn=Philippe ******,mail=******@******.com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: mozillaAbPersonAlpha givenName: Philippe sn: ********** cn: Philippe ******** mail: *******@********.com modifytimestamp: 0Z dn: cn=A *******,mail=********@********.com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: mozillaAbPersonAlpha givenName: A sn: ********* cn: A ******* mail: ******@********.com modifytimestamp: 0Z
J'aimerai obtenir un tableau pour toutes les entrées (une entrée correspondant à un bloc de "dn" jusqu'à "0Z") de type :

Code : Tout sélectionner

$tab["dn"] = "cn=........."; $tab["cn"] = "John Jones"; $tab["sn"] = "Jones"; $tab["mail"] = "[email protected]"; $tab["objectclass"] = "person"; .......
J'ai trouvé une fonction qui transforme un ldif en array mais c'est pour php4 et je travaille en php5 et de plus je ne comprend pas grand chose lol
http://phpclasses.linuxpourtous.com/bro ... 17319.html

Voilà ce que j'ai commencé à faire :

Code : Tout sélectionner

<?php $leFichier = "carnetAdresses.ldif"; if (file_exists($leFichier)) //si le fichier existe { $lecture_fichier=fopen("$leFichier","r");// on ouvre le fichier } //On prend le contenu du fichier $content=file_get_contents('carnetAdresses.ldif','r'); //On sépare par ligne $content=explode("\n", $content); //On sépare chaque ligne par colonne for($i=0;$i<sizeof($content);$i++){ $content[$i] = explode(":", $content[$i]); } //Affichage pour le teste for($i=0;$i<sizeof($content);$i++){ print_r($content[$i]); print_r("<br>--------------------------<br>"); } ?>
mais ça ne me donne pas ce que je souhaite !

Merci par avance !

Mammouth du PHP | 1511 Messages

23 avr. 2008, 13:55

De ce que j'ai pu voir, la classe que tu as trouvé fonctionne sous PHP5, juste a corriger le constructeur et les accès aux méthodes (public, private, etc...)

Fc1608
Invité n'ayant pas de compte PHPfrance

23 avr. 2008, 15:03

Merci mais le souci c'est que cette classe est tout de même assez complexe !! J'ai pas compris ce qu'il fallait changer...

N'y a t-il pas un moyen plus simple de transformer un ldif en array ?

ViPHP
ViPHP | 3300 Messages

23 avr. 2008, 18:15

un fichier ldif est fait pour être utiliser directement par les commandes systèmes d'openldap ne serait-ce pas plus simple que de le refaire en php?
Fait du php depuis que ca existe ou presque :)