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 :

Ldap_compare : virer un warning


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 38
    Points
    38
    Par défaut Ldap_compare : virer un warning
    Bonjour,

    Etant en train de créer des contôles afin d'automatiser des créations sur un annuaire Ldap, je suis en train de créer des fonctions.

    Actuellement sur une fonction devant checker l'existence d'une entrée dans un des groupOfNames et j'ai un "pseudo"-problème.

    J'explique :

    Dans l'annuaire il y a une branche pour les groupes : ou=groups,dc=example,dc=com.

    Chaque groupe est un object class du type groupOfNames.

    Ils sont définis de la manière suivante :

    cn=toto,ou=groups,dc=example,dc=com

    J'ai donc crée une méthode afin de vérifier, lorsque je souhaite créer une nouvelle entrée pour un nouveau groupe, qu'un groupe existant n'est pas déjà nommé pareil.

    J'ai donc crée une classe de connection ldap (la partie connexion fonctionne).

    Et j'ai crée la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function Existence($entree, $attribut, $valeur){
     
      	$result = ldap_compare($this->ldapConn, "$entree,$this->baseDN", $attribut, $valeur);
     
     
     
            if ($result === true) {
                return true;
            } elseif ($result === false) {
                return false;
            }}
    $this->LdapConn renvoie au résultat de la fonction Ldap_Bind()$this->BaseDN renvoie à la base de recherche (dc=example,dc=com)

    La méthode est appelée ainsi :

    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
    $ldap = new Ldap("ldap://xxxx.xxxx.xxxx.xxxx", 389, "dc=example,dc=com");
     
    $ldap->ldapConn();
     
    $bind = $ldap->ldapBind("username", "secret");
     
    if(is_bool($bind) === true)
     
    	$valeur = "appli";
    	$entree = "cn=".$valeur.",ou=groups";
    	$attribut = "cn";
     
    	$check = $ldap->Existence($entree, $attribut, $valeur);
     
    if(is_bool($check)=== true)echo "application existe";
    else echo "Application nouvelle";
    La méthode fonctionne car j'ai le bon message qui apparait selon que l'entrée est déjà existante ou non.

    Seulement, dans le cas ou l'entrée n'existe pas j'ai un Warning qui s'affiche :

    Warning: ldap_compare() [function.ldap-compare]: Compare: No such object in C:\wamp\www\portail-secta\src\DAO\ldap.class.php on line 63
    J'estime que cette erreur est "normale" car c'est justement cela que je souhaite tester : le fait que l'objet soit inexistant.

    Je voulais donc savoir si il y avait moyen, pour la méthode $ldap->Existence et uniquement pour elle, de choper cette erreur et d'en faire autre chose.

    j'ai fait des recherche et j'ai vu que "No such Object" était liée à l'erreur ldap numérotée 0x20, est-ce correct ?

    j'ai aussi vu la possibilité de choper l'erreur vial ldap_errno.

    D'instinct, je pense qu'il faudrait utiliser quelque-chose que je commence à apprendre mais que je suis loin de maitriser qui sont les blocs try catch .. est-ce que cela pourrait faire en sorte de mettre un traitement alternatif de l'erreur qui me permettrait de retourner un false au lieu d'un warning..

    Comment dois-je le placer ? (autour de la commande ldap_compare uniquement ? ou sur toute la méthode ? dans l'appel de la méthode).

    En fait je veux surtout éviter de faire un masquage systématique des erreurs, je ne suis pas à l'aise avec cette pratique.

    Et j'aurais aimé savoir : L'utilisation de la fonction Ldap_compare est-elle la plus judicieuse pour ce que je veux faire ?

    Merci d'avance.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Essaye simplement ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function Existence($entree, $attribut, $valeur){
     
      	$result = ldap_compare($this->ldapConn, "$entree,$this->baseDN", $attribut, $valeur);
     
     
     
            if ($result === true) {return true; } 
            return false;
     
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Merci pour ta réponse..

    Ca ne me vire toujours pas le Warning.

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @ldap_compare($this->ldapConn, "$entree,$this->baseDN", $attribut, $valeur);



    Pas trop de connaissance sur les fonctions LDAP dsl

Discussions similaires

  1. Un warning devient fatal
    Par tomnie dans le forum Linux
    Réponses: 3
    Dernier message: 01/04/2004, 13h48
  2. [langage] Récupérer des Warning ??
    Par armada dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 16h45
  3. [warning][properties]problème de police introuvable
    Par cyrdec dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 11/04/2003, 17h41
  4. Warnings lors de la compilation
    Par polo54 dans le forum C
    Réponses: 5
    Dernier message: 07/02/2003, 09h12
  5. Virer l environnement...
    Par Kukrapok dans le forum DirectX
    Réponses: 1
    Dernier message: 18/11/2002, 05h47

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