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 et la fonction ldap-add()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Par défaut Php et la fonction ldap-add()
    Bonjour à tous

    voila, je suis entrain de développer une interface ldap en php ( je vous passe tout les details) et je dois maintenant ajouter un utilisateur dans le serveur, voici l'extrait de 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
     
    <?php
     
    //connexion au serveur
     $connect=ldap_connect("$server"); 
     
    if ($connect==true) {    
       $ident=ldap_set_option($connect,LDAP_OPT_PROTOCOL_VERSION,3);
       $ident=ldap_bind($connect,$rootdn,$rootpw);
     
       if ($ident){  
       //initialisation des variables              
       $ajout["cn"]= $_POST["txtNom"]." ".$_POST["txtPrenom"];
       $ajout["uid"]=$_POST["txtPrenom"].".".$_POST["txtNom"];
       $ajout["mail"]=$_POST["txtMail"];
       $ajout["statut"]=$_POST["lstStatut"];
       $ajout["phone"]=$_POST["txtTelephone"];
       $ajout["etabAffec"]=$_POST["lstEtablissement"];
       $ajout["arrivalDate"]=$_POST["txtDateArrive"];
       $ajout["birthDate"]= $_POST["txtDateDepart"];
       $uid="uid=".$ajout["uid"];
       $emplacement = $uid.",ou=people,dc=fresnel,dc=fr";
       //On ajoute quelqu'un dans le serveur : c'est sur cette ligne que l'erreur apparait
       $ident = ldap_add($connect, $emplacement, $ajout);
     
      echo "Connexion au serveur réussi <br />"; 
      echo "La personne ajoutée est : ".$_POST["txtNom"]." ".$_POST["txtPrenom"];
      echo "<br />".$emplacement; 
      echo "<br />".$connect;
      echo "<br />".$ident;
      ldap_close($connect); 
    }else{
      echo "Impossible de se connecter au serveur";
    }
    }
    echo "<br />"; 
     
    ?>
    Et j'obtiens l'erreur suivante :
    Warning: ldap_add() [function.ldap-add]: Add: Invalid syntax in C:\wamp\www\Interface LDAP\traitementAjout.php on line 40

    Une bête erreur de syntaxe apparement... si quelqu'un pourrait m'aider, ce serait génial.
    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 56
    Par défaut
    Bonjour,

    Il est possible que tu doives faire un utf8_encode sur les champs que tu inseres :
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $ajout["mail"]=utf8_encode($_POST["txtMail"]);
    et pareil pour $emplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $emplacement = utf8_encode($uid.",ou=people,dc=fresnel,dc=fr");
    si cela ne fonctionne pas peux-tu faire un echo de $emplacement pour voir le dn de l'entrée que tu inseres.

    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Par défaut
    Merci pour ta solution mais celle-ci ne marche pas.

    Voici ce que j'obtiens en faisant un echo sur $emplacement:
    uid=lePrénom.leNom,ou=people,dc=fresnel,dc=fr (sans l'encodage en utf-8)
    uid=lePrénom.leNom,ou=people,dc=fresnel,dc=fr(avec l'encodage en utf-8)
    uid=lePrenom.leNom,ou=people,dc=fresnel,dc=fr(sans accent)

    et merci d'avance.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 56
    Par défaut
    ok , le probleme vient bien de l'encodage

    lePrénom ==> tu as un encodage en utf8 qui est interprété en iso

    essaye ca mais ca m'etonnerai que ca marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $emplacement=utf8_encode($_POST["txtPrenom"]).".".utf8_encode($_POST["txtNom"]).",ou=people,dc=fresnel,dc=fr";
    ou bien mets ce header en premiere ligne du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Content-Type: text/html; charset=UTF-8');

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Par défaut
    j'ai encore un probleme sur l'encodage... je suis en iso-8859-1 comme tu l'as dit, mais apparement il ne reconnait pas l'encodage en utf8
    echo de $emplacement : lePrénom.leNom,ou=people,dc=fresnel,dc=fr

    Et voici le message d'erreur au passage : Warning: ldap_add() [function.ldap-add]: Add: Invalid DN syntax in C:\wamp\www\Interface LDAP\traitementAjout.php on line 41

    Par contre, j'aurais cru que l'erreur viendrait du code et non de l'entrée que l'on y fait (hors erreur de concaténation, car apparemment c'est ca qui pose un problème ici...)

    PS :

    Par contre en mettant le header, je n'ai pas de probleme avec l'accent sur le prénom :
    nom.prénom,ou=people,dc=fresnel,dc=fr

    Par contre, sur le reste de la page oui... :
    La personne ajout�e est : pr�nom nom

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 56
    Par défaut
    Bienvenue au club des problemes d'encodage

    Alors si tu veux coder proprement :
    dans le parametrage php.ini il faut que tu mettre l'encodage en utf8 :default_charset = "utf8" mais attention cela va impacter toutes les autres scripts php de ton serveur.

    si ce n'est pas possible utilise l'entete header dans chaque page que je t'ai donné et aussi la balise meta dans le <head> de ton document html

    <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>

    et verifie bien que les données que tu insères sont correctement encodées.


    Ensuite si tu as des caractères comme ca :� ca veut dire que tu as un caractère iso qui est interprété en utf8 (l'inverse de tout a l'heure) la il faut que tu utilise les caracteres html pour etre tranquille => &eacute;

    Dans le LDAP tu ne dois insérer que de l'UTF8 (même si en bidouillant tu peux mettre de l'iso) , tant que toutes tes données ne seront pas nickel tu aras des problèmes.


    Par contre si je peux te donner un conseil , ce n'est pas très judicieux de mettre les noms et prénoms dans un DN , il te faut un identifiant unique (autoincrement par exemple : uid=12345,...etc )
    Sinon le jour ou tu mets a jour un prénom ou un nom il te faudra renommer ton entrée en plus de modifier les attributs CN , givenName et SN et en plus ton DN que tu utilisais comme identifiant va changer (ce qui est pas cool du tout)

    bon courage et n'hésites pas si tu as des questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur la fonction LDAP de PHP
    Par yonyon dans le forum Langage
    Réponses: 1
    Dernier message: 27/08/2010, 23h31
  2. PHP et fonctions LDAP
    Par Dendrite dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2008, 14h53
  3. Réponses: 4
    Dernier message: 05/10/2005, 18h19
  4. [PHP-JS] pb lecture script php dans une fonction au démarrage
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/02/2005, 15h07
  5. [PHP-JS] Arguments PHP d'une fonction javascript
    Par Néo-Tony dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2004, 12h06

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