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 :

Fonction statique vérifiant qu'un membre est activé en POO


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 27
    Points
    27
    Par défaut Fonction statique vérifiant qu'un membre est activé en POO
    Bonjour,

    Voila je vous expose mon problème j'ai un espace membre qui fonctionne (du moins sans cette fonction ).
    Le souci c'est que lors de vérification il me retourne toujours false !
    Je n'arrive pas a ce qu'il me trouve la valeur qui pourtant est a 1!

    Voici d'abord le code appelant la fonction :
    Code php : 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
    public static function connexionCreate() {
        if(!empty($_POST['pseudo']) AND !empty($_POST['password'])) {
            // Vérification que le membre existe en base de donnée
            if(Connexion::verifLogin($_POST['pseudo'])) {
                // Vérification que les 2 passwords correspondent
                if(Connexion::verifPass($_POST['password'], $_POST['pseudo'])) {
                    if(Connexion::userActive($pseudo)){
                        $_SESSION['Auth'] = $_POST['pseudo'];
                        Connexion::redirection(URLSITE.'account/private.php'); 
                    }
                    else
                    {
                        echo '<p class="errorlogin">Votre compte n\'est pas actif, vérifiez vos mails !</p>';
                    }
                }
                else {
                    echo '<p class="errorlogin">L\'identifiant ou le mot de passe est incorrect</p>';
                }                  
            }
            else {
                echo '<p class="errorlogin">L\'identifiant ou le mot de passe est incorrect</p>';
            }
        }
        else {
            echo '<p class="errorlogin">Tous les champs doivent être remplis !</p>';
        }
    }

    Puis la fonction en elle même,
    Code php : 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
    // fonction de validation compte
    public static function userActive($pseudo){
        // Vérification que le membre est bien activé
        $req = Bdd::connectBdd()->prepare('SELECT activer FROM users WHERE pseudo LIKE :pseudo');
        $req->execute(array(':pseudo' => $login));
        $row = $req->fetch();
        $actif = $row['activer']; // $actif contiendra alors 0 ou 1     
     
        if($actif == 1){
            return true;
            // Code si la condition est remplie
        }else {
            return false;
            // Erreur condition non remplie
        } 
    }

    J'ai a chaque fois l'erreur qui se produit me disant que le compte n'est pas actif, j'ai tester en changeant manuellement les valeur de 0 a 1 pour l'activation en Base de donnée rien n'y fait.

    Si quelqu'un aurait une idée de mon problème.
    Merci a tous de bien vouloir me filer un petit coup de pouce.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                    if(Connexion::userActive()){
    quand tu appelles la méthode d'activation en réalité cette dernière exécute un pseudo vide car elle n'a aucune connaissance du pseudo à vérifier.c'est pour cette raison que ton teste renvoie toujours false.
    Tu dois passer le pseudo en paramètre de userActive($pseudo):

    Code php : 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
     
    public static function connexionCreate() {
        if(!empty($_POST['pseudo']) AND !empty($_POST['password'])) {
            // Vérification que le membre existe en base de donnée
            if(Connexion::verifLogin($_POST['pseudo'])) {
                // Vérification que les 2 passwords correspondent
                if(Connexion::verifPass($_POST['password'], $_POST['pseudo'])) {
                    if(Connexion::userActive( $_POST['pseudo'])){
                        $_SESSION['Auth'] = $_POST['pseudo'];
                        Connexion::redirection(URLSITE.'account/private.php'); 
                    }
                    else
                    {
                        echo '<p class="errorlogin">Votre compte n\'est pas actif, vérifiez vos mails !</p>';
                    }
                }
                else {
                    echo '<p class="errorlogin">L\'identifiant ou le mot de passe est incorrect</p>';
                }                  
            }
            else {
                echo '<p class="errorlogin">L\'identifiant ou le mot de passe est incorrect</p>';
            }
        }
        else {
            echo '<p class="errorlogin">Tous les champs doivent être remplis !</p>';
        }
    }

    Code php : 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
     
    // fonction de validation compte
    public static function userActive($login){
        // Vérification que le membre est bien activé
        $req = Bdd::connectBdd()->prepare('SELECT activer FROM users WHERE pseudo LIKE :pseudo');
        $req->execute(array(':pseudo' => $login));
        $row = $req->fetch();
        $actif = $row['activer']; // $actif contiendra alors 0 ou 1     
     
        if($actif == 1){
            return true;
            // Code si la condition est remplie
        }else {
            return false;
            // Erreur condition non remplie
        } 
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 27
    Points
    27
    Par défaut
    Merci pour l'information,
    l'erreur est toujours là , j'ai bien le $pseudo dans le code et cela ne fonctionne toujours pas

    Lorsque je fait un
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     // Vérification que le membre est bien activé
    $req = Bdd::connectBdd()->prepare('SELECT activer,pseudo FROM users WHERE pseudo LIKE :pseudo');
    $req->execute(array(':pseudo' => $login));
    $row = $req->fetch();
    var_dump($actif);
    ,
    J'ai comme résultat
    Cordialement

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    un debogage de la méthode userActive($pseudo) donnera plus d'informations.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    // fonction de validation compte
    public static function userActive($login){
        // Vérification que le membre est bien activé
        $req = Bdd::connectBdd()->prepare('SELECT activer FROM users WHERE pseudo LIKE :pseudo');
        $req->execute(array(':pseudo' => $login));
        return $req->fetch();
     
    }
    que donne var_dump?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump(Connexion::userActive('le-pseudo-activé') );

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 27
    Points
    27
    Par défaut
    Bien d'abord merci pour me répondre aussi rapidement
    Voici ce que le debug donne,
    En faisant comme ce que vous m'avez demander.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    object(stdClass)#3 (1) { ["activer"]=> string(1) "1" }

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Et pourtant la requête retourne bien 1.
    quel est le type de la colonne activer(int ou varchar) dans la table users?
    essaies délimiter le 1 par des guillemets:
    Code php : 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
     
     
    // fonction de validation compte
    public static function userActive($login){
        // Vérification que le membre est bien activé
        $req = Bdd::connectBdd()->prepare('SELECT activer FROM users WHERE pseudo LIKE :pseudo');
        $req->execute(array(':pseudo' => $login));
        $row = $req->fetch();
        $actif = $row['activer']; // $actif contiendra alors 0 ou 1     
     
        if($actif == "1"){
            return true;
            // Code si la condition est remplie
        }
         return false;
     
    }

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 27
    Points
    27
    Par défaut
    Le type est INT,
    J'ai tenté de délimité mais le résultat est toujours le même ce qui m'étonne c'est que lorsque je debug comme tu le dit, il me trouve bien que le membre est activé !

    j'ai testé en remplaçant le $pseudo par le nom direct du membre et la miracle je suis bien redirigé !
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(Connexion::userActive('JeanBosse')){

    Seulement je ne peux pas laisser comme tel

    Je suis dans les choux là !

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    donc le problème ne vient pas de la méthode d'activation.ça doit être au niveau de la méthode connexion et il faut vérifier si le pseudo venant du formulaire est bien reçu et que la méthode d'activation renvoie true.

    Code php : 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
     
     
    public static function connexionCreate() {
        if(!empty($_POST['pseudo']) AND !empty($_POST['password'])) {
            // Vérification que le membre existe en base de donnée
            if(Connexion::verifLogin($_POST['pseudo'])) {
                // Vérification que les 2 passwords correspondent
                if(Connexion::verifPass($_POST['password'], $_POST['pseudo'])) {
       		var_dump($_POST['pseudo']);
    		var_dump( Connexion::userActive($_POST['pseudo']) );
     
    		die("fin activation");
     
     
    	/*      
    	  if(Connexion::userActive( $_POST['pseudo'])){
                        $_SESSION['Auth'] = $_POST['pseudo'];
                        Connexion::redirection(URLSITE.'account/private.php'); 
                    }
                    else
                    {
                        echo '<p class="errorlogin">Votre compte n\'est pas actif, vérifiez vos mails !</p>';
                    }*/
                }
                else {
                    echo '<p class="errorlogin">L\'identifiant ou le mot de passe est incorrect</p>';
                }                  
            }
            else {
                echo '<p class="errorlogin">L\'identifiant ou le mot de passe est incorrect</p>';
            }
        }
        else {
            echo '<p class="errorlogin">Tous les champs doivent être remplis !</p>';
        }
    }

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 27
    Points
    27
    Par défaut
    En faisant exactement ce que tu viens de me demander
    j'obtiens cet autre résultat
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    string(5) "jeanBosse" bool(false) fin activation

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 27
    Points
    27
    Par défaut
    Merci d'avance a ceux qui pourront m'aider.

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/10/2011, 19h40
  2. [Mail] Savoir si la fonction "mail" est activée
    Par sakini dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2007, 22h32
  3. [C#]Fonction vérifiant qu'1 string est contenue ds 1 autre
    Par closo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2005, 13h41
  4. Réponses: 9
    Dernier message: 08/12/2004, 14h36
  5. Fonction pour savoir si un ordi est connecté au reseau
    Par LitteulKevin dans le forum Windows
    Réponses: 17
    Dernier message: 13/09/2004, 14h12

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