[PHP/LDAP] - Récupérer TOUS les attributs

Bonjour,

je cherche à obtenir TOUS les champs d'une personne, même (et surtout) les champs calculés comme createTimestamp).

Lorsque je fais :
ldap_search($cnx, $rech_dn, $filter, $attributes, $types, $nb_res, $time, $deref);

si je mets
$attributes = array();

ces valeurs n'apparaissent pas. Je suis obligé de toutes les ajouter une par une dans $attributes
N'y a-t-il pas un moyen de récupérer toutes les valeurs sans les spécifier 1 par 1 ???

Merci :-)

4 réponses

  1. Même problème.
    Solution trouvée:
    ldap_search(... , $filter, array('*','createtimestamp','modifytimestamp'));

    * pour tous + les spéciaux qu'on veut :)
    1. En effet, * retourne tous les attributs 'visibles', alors que + retourne tous les attributs opérationnels.
      Donc pour avoir tous les attributs (visibles et opérationnels) passez dans le ldap_search:
       array('*','+')
  2. print_r($attributes) ;

    foreach($attributes as $key => $value) {
    echo 'Cle : '.$key.' -- Valeur : '.$value.'<br/>' ;
    }
    1. Ben non ça marche pas (ni l'un ni l'autre), il me dit que le paramètre attendu est du type tableau ! C'est pour ça que je mettais
      $attributes = array();


      tant pis, et merci ! :-)
      1. Webmaster
        foreach($attributes as $key => $value) echo $key." - ".$value;


        1. euh... non désolé mais c'est pas bon... :(

          ton code me liste les noms des attributs que j'ai spécifié dans $attributes, or ce que je cherche c'est un moyen de dire que $attributes contienne tous les attributs disponibles (quelque chose du style
          $attributes = ALL
          au lieu d'écrire
          $attributes = array("uid", "mail", "mailhost", "createtimestamp", "modifytimestamp", "creatorsname", "modifiersname", "subschemasubentry");


          aurais-tu une idée ?
          Merci
          Vincent
        2. Webmaster
          @vinceA tout hasard est-ce que les wildcards fonctionnent ?

          $attributes = array("*");

        3. Ah, un bon point ! :-D

          Malheureusement j'ai l'impression qu' * fonctionne pour les principaux attributs utilisateurs mais pas pour les principaux attributs opérationnels... :-(

          (le ldap_search() me retourne bien mail, uid (...) mais pas createtimestamp & Cie...)

          cf. : http://www.commentcamarche.net/ldap/ldapinfo.php3

          Donc c'est déjà ça de gagné ;-)
          Mais c'est pas encore tout à fait ça... :-(
        4. Webmaster
          @vincePour info tout de même l'attribut "Attributes" est facultatif, par défaut il cherche sur tous les attributs, il te suffit donc à mon avis de ne rien mettre du tout...

        5. @vinceoui je suis d'accord :-)

          mais du coup tu vas peut-être pouvoir m'éclairer sur un point :

          la fonction ldap_search possède 8 attributs :
          resource ldap_search ( resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])


          je pourrais effectivement m'arrêter aux 3 attributs obligatoires, mais vu que je veux spécifier une valeur au dernier attribut (deref) je suis obligé de renseigner tous les attributs jusqu'à lui ; du moins je crois. Est-ce que c'est bien le cas ?

          Comment ferais-tu à ma place pour spécifier juste les 3 premiers et le dernier stp ?

          Merci et on pourra en rester là ! :-D