IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] php et ldap export des utilisateurs selon l'OU


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [Système] php et ldap export des utilisateurs selon l'OU
    Bonsoir,
    je cherche à exporter la liste des utilisateurs (nom prénom login et mail) d'un AD à partir de php. J'ai essayé le couple ldap_search et ldap_get_entries mais je ne réussis pas à obtenir ce que je veux...
    Quelqu'un aurait déjà fait quelque chose dans le genre ?

    Merci beaucoup.

    Goguy

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Avez-vous des erreurs ? Si oui, lesquelles ? Pouvez-vous nous donner le code incriminé ?


    Julp.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    bon en fait, j'ai trouvé... j'avais une mauvaise syntaxe pour identifier mon domaine et mes "OU"...
    Mais un autre problème se pose à moi : comment récupérer (sans les cherche individuellement tjs) les logins, l'état du compte (actif, désactivé), éventuellement la date de création (si cela est possible).
    Voici mon code pour info :

    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
     
    //Connexion à AD
    require_once('inc/connex/bdd-ldap.conn.php');
    //Action sur l'AD
     
        if ($ldapbind) {
     
        $filter = '(|(uid=*)(cn=*))';
     
    $ldapsearch = ldap_search($ldapconn, $ou_users, $filter);
    $nb=0;
             if ($ldapsearch) {
              $datas = ldap_get_entries($ldapconn, $ldapsearch);
              echo $datas['count']." enregistrements dans l'active directory <BR><HR>";
               $count = $datas['count'];
               for ($i=0;$i<$count;$i++) {
               $nb++;
        $result=ereg_replace("é","é",$datas[$i]['cn'][0]); // Embellissement de l'affichage
                  echo $nb." - ".$result."<HR>";
        }}} else {
            echo "Connexion LDAP échouée";
        }
    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $datas[$i]['cn'][0];
    m'affiche le nom et prénom de l'utilisateur.

    Comment récupérer d'autres infos ?
    Voici les 'entrées' valides :
    dn ; cn ; sn ; mail ;
    Mais comment faire pour logins et autres ?

    Merci

    Goguy

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Si j'ai bien compris votre question : il vous faut utiliser le paramètre attributes des fonctions de recherche LDAP (ldap_search, ldap_list, ldap_read).

    Je terminerais par une info : les chaînes de caractères sont encodées en UTF-8 dans un annuaire donc je vous recommande d'utiliser utf8_decode (de l'extension xml) au lieu de ereg_replace("é","é", ...) ou bien utiliser directement l'encodage UTF-8 pour vos scripts/pages.


    Julp.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Comment on l'utilise t-on ?
    Si j'ai bien compris votre réponse cela va me servir à voir tout ce que renvoie une fonction ldap_search ? tous les attributs ?

    En ce sui concerne l'encodage, je compte modifier plus tard, j'avais besoin ici de rapiditée pour comprendre ce qui est faisable ou non. Le ereg est une fantaisie

    Merci de votre aide.

    Goguy

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    hello,

    Si tu veux savoir toutes les info que tu peux récupèrer, fais simplement un print_f($datas[0]);

    Comme ça, t'auras toutes les infos disponibles.

    Pour le codage en UTF-8, met simplement :

    header('Content-Type: text/html; charset=UTF-8');

    au debut de ton code.

    ++

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par goguy
    Comment on l'utilise t-on ?
    Si j'ai bien compris votre réponse cela va me servir à voir tout ce que renvoie une fonction ldap_search ? tous les attributs ?
    Tout dépend comment est utilisé ce paramètre :
    • sa valeur par défaut donc lorsqu'il est omis, permet de récupérer tous les attributs du ou des objets résultants de la recherche
    • si vous ne souhaitez récupérer que des attributs spécifiques (notamment par rapport au nombre d'attributs que peuvent posséder le ou les objets : à comparer au SELECT * en SGBD quand on ne veut récupérer les valeurs que d'un champ), utilisez un tableau qui indique le nom des attributs désirés :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      $ldapsearch = ldap_search($ldapconn, $ou_users, $filter, array('cn', 'sn', 'uid'));


    Citation Envoyé par Yoshi_da_f..k
    Si tu veux savoir toutes les info que tu peux récupèrer, fais simplement un print_f($datas[0]);
    Avec la fonction print_r ça ira beaucoup mieux !


    Julp.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut


    Pardon pour la grosse erreur

    Petit amalgame entre le C++ et le PHP

    Sorry!

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Yoshi_da_f..k pour le prinf, j'avais compris Par contre c'est exactement ce qu'il me manquais pour pouvoir voir tous les attribut que renvoie ldap_search ! NIKEL !

    En ce qui concerne l'encodage UTF-8 je crois que je vais rester comme je suis étant donné que j'ai déjà bien avancé dans mon appli. Je me sens pas de tout reprendre...
    La solution str_replace avec deux chaines badchar et goodchar me convient bien étant donné que je fais uniquement de l'affichage de données de l'AD.
    A moins que la conversion puisse être facile et rapide (peut être qu'un jour je penserai à un module pour modifier des objets dans l'AD...)

    Et comme je fais tout avec hapedit, c'est plus simpole pour moi d'écrire avec des accents et non avec des codes...

    Julp, merci pour ton conseils sur la préselection des attribut que l'on veut retourner. Je l'appliquerai une fois que je saurai parfaitement tout ce que je peux récupérer de l'AD et que ma recherche sera fixée.
    (En gros quand je saurai quelles infos je peux et veux récupérer)

    D'ailleur à ce propos, est-ce que ça pourrait être une faille de sécurité ?

    Bref, en tout cas, merci beaucoup julp et Yoshi_da_f..k pour votre aide et vos conseils.

    A+

    Goguy

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/07/2011, 22h57
  2. [XL-2010] Macro vba exporter des colonnes selon titres
    Par ron13 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/06/2011, 11h48
  3. LDAP récupération des utilisateurs
    Par melekhb dans le forum WinDev
    Réponses: 4
    Dernier message: 23/09/2010, 12h04
  4. exporter des utilisateurs
    Par nanourene dans le forum Windows Serveur
    Réponses: 9
    Dernier message: 20/05/2008, 19h26
  5. comment faire l'export des données selon une période
    Par hadid dans le forum Administration
    Réponses: 9
    Dernier message: 28/08/2007, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo