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 :

php avec ldap_add


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut php avec ldap_add
    Bonjour a tous
    tout d'abord je ne suis pas sur d'être sur le bon forum, donc si c'est le cas, merci de rediriger ce post.

    Voila, j'ai un petit script en php que j'utilise pour inserer une entrée dans openldap. J'arrive a le faire sans probleme a partir d'un fichier ldif et en ligne de commande, mais avec php y'a pas moyen.
    Voici le code:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
     
     $uid=$_REQUEST['uid'];
     $grupo=$_REQUEST['grupo'];
     
     // specify the LDAP server to connect to
     $ds = ldap_connect("localhost") or die("Could not connect to server");
     
     if ($ds) {
        ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
        $r=ldap_bind($ds,"uid=Administrador,ou=People,dc=isciii,dc=es","xxxxxxx");
     
        // prepare data
        $info["uid"] = $uid;
        $info["cn"] = $uid;
        $info["sn"] = $uid;
        $info["ou"] = $grupo;
        //$info["objectClass"] = 'account';
        //$info["objectClass"] = 'posixAccount';
        //$info["objectClass"] = 'top';
        //$info["objectClass"] = 'shadowAccount';
        //$info["shadowLastChange"] = 15543;
        //$info["shadowMin"] = 0;
        //$info["shadowMax"] = 99999;
        //$info["shadowWarning"] = 7;
     
        // add data to directory
        $i = ldap_add($ds, "cn=".$uid.",ou=People,dc=isciii,dc=es", $info);
     
        if ($i)
            echo "datos insertados con exito";
        else
            echo "Problemas de insert";
     
        ldap_close($ds);
     }else{
        echo "Unable to connect to LDAP server";
    }
     
    ?>
    si je teste le bind, ça marche, le probleme viens apres.

    si j'utilise cette cmmande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ldapadd -x -W -D "cn=Administrador,dc=isciii,dc=es" -h 127.0.0.1 -f $file
    avec ce ficher ldif, ça marche bien

    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
    dn: uid=m-bncs-ch,ou=People,dc=isciii,dc=es
    uid: m-bncs-ch
    cn: m-bncs-ch
    ou: M-BNCS-CH
    objectClass: account
    objectClass: posixAccount
    objectClass: top
    objectClass: shadowAccount
    shadowLastChange: 15543
    shadowMin: 0
    shadowMax: 99999
    shadowWarning: 7
    loginShell: /bin/bash
    uidNumber: 501
    gidNumber: 501
    homeDirectory: /home/m-bncs-ch
    Le code php que j'utilise vient de la page de la doc de php.
    Quelqu'un voit quelle erreur il y a ?
    D'avance merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton script PHP n'a pas l'air de contenir la même chose que ton exécution manuelle.

    En particulier tu utilises $uid pour des éléments qui ne sont à priori pas les mêmes :

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut
    merci pour ta reponse.

    mmm je comprend pas bien, regarde ce que j'insert grace au fichier ldif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    uid: m-bncs-ch
    cn: m-bncs-ch
    le cn et l'uid ont la même valeur en fait.
    dans le php j'ai uid renseigné via un formulaire ainsi que ou.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    oui mais dans le point d'insertion en ligne de commande tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cn=Administrador,dc=isciii,dc=es

  5. #5
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    haa ok
    alors je change a cecei:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      // add data to directory
        $i = ldap_add($ds, "cn=Administrador,ou=People,dc=isciii,dc=es", $info);
    Erreur toujours
    ce test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if ($i)
            echo "datos insertados con exito";
        else
            echo "Problemas de insert";
    donne
    Problemas de insert

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    N'oublie pas que tu as ldap_error() à ta disposition.

  7. #7
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Par exemple comme ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // add data to directory
        $i = ldap_add($ds, "uid=Administrador,ou=People,dc=isciii,dc=es", $info) or die(ldap_error($ds));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Strong(er) authentication required
    Ça c'est surement le fait d'avoir mis administrador dans le ldap_add.

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Je pensea une possible solution, existe t'il avec PHP un moyen d'executer la commande ldap qui prend comme parametre le ldif?

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    avec exec()

  10. #10
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    haaa ok, alors j'ai un doute, car la commande que j'execute fait un prompt pour entrer le mot de passe.

    si je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
     exec('ldapadd -x -W -D "cn=Administrador,dc=isciii,dc=es" -h 127.0.0.1 -f $file')
     
    ?>
    Si j'execite la commande tell quelle, j'obtient ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ldap_bind: Server is unwilling to perform (53)
            additional info: unauthenticated bind (DN with no password) disallowed

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne pourras pas renseigner un prompt avec PHP mais du coup c'est la même chose avec ton script PHP, il faut préciser le compte à utiliser.

  12. #12
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Ok alors j'ai pas le choix je dois le faire avec ce code:

    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
    23
    24
     <?php
     
    $dn = "uid=Luis,ou=People,dc=isciii,dc=es";
     
    $info["uid"] = "Luis";
    $info["cn"] = "luis diaz";
    $info["sn"] = "luis";
    $info["ou"] = "PRUEBA";
    $info["objectClass"] = "account";
    $info["objectClass"] = "posixAccount";
    $info["objectClass"] = "top";
    $info["objectClass"] = "shadowAccount";
    $info["uidNumber"] = 501;
    $info["gidNumber"] = 501;
     
    $host = "localhost";
    $ldapconn = ldap_connect($host);
    $bindresult = ldap_bind($ldapconn, "cn=Administrador,dc=isciii,dc=es", "xxxx");
    $r=ldap_add($ldapconn, "$dn", $info);
    echo ldap_error($r);
     
    ldap_unbind($ldapconn);
     
    ?>
    Ce code renvoie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PHP Warning:  ldap_add(): Add: Object class violation in /usr/share/koha/intrane
    PHP Warning:  ldap_error() expects parameter 1 to be resource, boolean given
    l'echo ldap_error($r) c'est correct? cette commande va me renvoyer l'erreur ?

  13. #13
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut
    bon je crois que j'ai isolé le probleme, ce sont les class objets qui sont mal definies, la c'est plus un probleme de PHP, donc...
    Je laisse le post ouvert pour si je trouve la reponse.

    Merci encore

Discussions similaires

  1. easy php avec apache 2.0
    Par tulipenoire dans le forum Apache
    Réponses: 1
    Dernier message: 25/09/2005, 21h04
  2. Création de forum php avec pma
    Par Kylen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 01/08/2005, 10h47
  3. Recupération de tableaux PHP avec PL/pgSQL
    Par moog dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/02/2005, 17h11
  4. installation php avec option --with-pgsql: marche pô.
    Par phil25 dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/01/2004, 15h59
  5. ASP + PHP avec le même phpmyadmin comment faire?
    Par King Boulet dans le forum ASP
    Réponses: 8
    Dernier message: 29/10/2003, 16h57

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