Condition PHP

Résolu
Bonjour
Je souhaiterai ajouter une condition à ma fonction, pour que les membres qui sont actif(champ de ma BDD) à 0 ne puissent pas se connecter.
J'ai essayé pas mal de fois et je ne n'y arrive pas.
Pouvez vous m'aider à me résoudre ce problème s'ils vous plait.
En vous remerciant, voici ma méthode verif de ma connexion.
	public function Verif() {
		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();

		if(empty($this->pseudo) || empty($this->password)) {
			$erreur = 'Veuillez remplir tous les champs';
			return $erreur;
		
		} elseif($result) {
			if($this->password == $result['password']) {
				return 'success';
			} else {
				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
				return $erreur;
			}
		} else {
			$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
			return $erreur;
		}
	}

10 réponses

  1. 	public function Verif() {
    		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
    		$requete->execute(array('pseudo' => $this->pseudo));
    		$result = $requete->fetch();
    
    		if(empty($this->pseudo) || empty($this->password)) {
    			$erreur = 'Veuillez remplir tous les champs';
    			return $erreur;
    		
    		} elseif($result) {
    			if($this->password == $result['password']) {
    				return 'success';
    			} else {
    				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
    				return $erreur;
    			}
    		} else {
    			$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
    			return $erreur;
    		}
    	}
    


    et mon script que je veux intégrer
    		if($result['actif']==0) {
    			$erreur = "compte supprimé";
    			return $erreur;
    		} else {
    			return 'success';
    		}
    
    1
    1. Modérateur
      .... ce n'est pas ta class complete...
      Là.. tu nous redonnes juste le bout de code que tu veux mettre et la fonction que tu utilises....
      Moi je te demande la class USER .. celle qui contient TOUTES tes méthodes (dont celles que je t'ai déjà aidé à faire ) !!
      0
    2. @jordane45Bonjour,

      je vais faire mon chieur de service mais lorsque je lis cette fonction Verif(), ça m'arrache les yeux : )

      Il est d'usage ( et même plus que ça ) que chaque fonction ai un point d'entrée et un de sortie, en gros, un seul return par fontion ...

      cdt
      0
    3. Modérateur
      @Utilisateur anonyme+1
      C'est bien pour ça que je lui demande de nous redonner sa class complète car c'est ce que j'avais commencé à lui faire....
      0
  2. Modérateur
    Bonjour,

    Il te suffit de mettre un AND dans le WHERE de ta requête SQL..

    $requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo' AND actif <>0);
    

    0
    1. Bonjour
      Merci de ta réponse, effectivement ça je ne le voulais pas.
      En effet ce que je souhaiterai c'est de pouvoir faire une fonction pour laquelle je peux mettre une condition si le membre a été banni, il rentre donc ses bons identifiant mais malheureusement pour lui il a été banni sinon avec une condition dans la requète il ne pourra pas se connecter sans savoir pourquoi.
      Alors je ne sais pas trop comment faire en fait, c'est un peu complexe si tu peux me donner quelques conseils
      Merci beaucoup
      0
      1. en fait je souhaiterai faire quelque chose de similaire mais je n'arrive pas à l'incorporer dans mon script

        		if($result['actif']==0) {
        			$erreur = "compte supprimé";
        			return $erreur;
        		} else {
        			return 'success';
        		}
        
        0
        1. Modérateur
          Je ne comprend pas où tu bloques......

          Ta portion de code semble être correcte... il te suffit de la mettre dans ton elseif...
          } elseif($result) {
          
          			if($this->password == $result['password']) {
                                     if($result['actif']==0) {
          	                           		$erreur = "compte supprimé";
          	                           		return $erreur;
          	                           	} else {
          	                           		return 'success';
          	                           	}
          			
          			} else {
          				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
          				return $erreur;
          			}
          		} 
          
          0
      2. Bonjour
        Ben en fait je n'arrive pas à l'inclure à l'interieur pour que ça fonctionne.
        Je ne comprend pas.
        0
        1. Modérateur
          Remontre ta CLASS complete
          0
      3. Bonjour
        Voici ma class complète
        <?php
        class Connexion_class {
        		
            private $pseudo;
            private $password;
        	private $actif;
        	
        	private $bdd;
        	
        	public function __construct($pseudo, $password, $actif) {
        		
        		$password 	= Security::hash($password);
        
        		$this->pseudo 	    = $pseudo;
        		$this->password 		= $password;
        		$this->actif 		= $actif;
        		
        		$this->bdd = bdd();
        	}
        	
        	public function Verif() {
        		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
        		$requete->execute(array('pseudo' => $this->pseudo));
        		$result = $requete->fetch();
        
        		if(empty($this->pseudo) || empty($this->password)) {
        			$erreur = 'Veuillez remplir tous les champs';
        			return $erreur;
        		
        		} elseif($result) {
        			if($this->password == $result['password']) {
        				return 'success';
        			} else {
        				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
        				return $erreur;
        			}
        		} else {
        			$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
        			return $erreur;
        		}
        	}
        	
        	public function Session() {
        		$requete = $this->bdd->prepare('SELECT * FROM tb_adherent WHERE pseudo = :pseudo');
        		$requete->execute(array('pseudo' => $this->pseudo));
        		$result = $requete->fetch();
        		$_SESSION['id_adherent'] = $result['id_adherent'];
        		$_SESSION['prenom'] = $result['prenom'];
        		$_SESSION['pseudo'] = $this->pseudo;
        		return 1;
        	}
        }
        ?>
        
        0
        1. et voici mes vérifications
          <?php
          if(isset($_POST['pseudo']) AND isset($_POST['password'])) {
              
              $pseudo     = isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
              $password = isset($_POST['password']) ? Security::clean($_POST['password']) : '';
           $actif  = isset($_POST['actif']) ? $_POST['actif'] : '';
              
              $connexion = new Connexion_class($pseudo, $password, $actif);
              $verif = $connexion->Verif();
           $verif = $connexion->Verif2();
              
              if($verif == 'success') {
                  if($connexion->Session()) {
                      
                      if(isset($_POST['remember'])) {
                          $value = Security::crypt($verif->pseudo) . '_' . Security::crypt($verif->password);
                          setcookie('mon_site', $value, time() + 3600 * 24 * 3);
                      }
                  }
                      header('Location: index.php?body=compte_profil&type=compte');
                      
              } else {
                  $erreur[] = $verif;
              }
          }
          if (isset($erreur)) {
           echo output_errors($erreur);
          }
          ?>
          


          Merci vraiment de votre aide
          0
          1. Bonjour
            J'ai créé une fonction pour les membres bannis
            <?php
            class Connexion_class {
            		
                private $pseudo;
                private $password;
            	private $actif;
            	
            	private $bdd;
            	
            	public function __construct($pseudo, $password, $actif) {
            		
            		$password 	= Security::hash($password);
            
            		$this->pseudo 	    = $pseudo;
            		$this->password 		= $password;
            		$this->actif 		= $actif;
            		
            		$this->bdd = bdd();
            	}
            	
            	public function Verif() {
            		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
            		$requete->execute(array('pseudo' => $this->pseudo));
            		$result = $requete->fetch();
            
            		if(empty($this->pseudo) || empty($this->password)) {
            			$erreur = 'Veuillez remplir tous les champs';
            			return $erreur;
            		
            		} elseif($result) {
            			if($this->password == $result['password']) {
            				return 'success';
            			} else {
            				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
            				return $erreur;
            			}
            		} else {
            			$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
            			return $erreur;
            		}
            	}
            	
            	public function Banni() {
            		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
            		$requete->execute(array('pseudo' => $this->pseudo));
            		$result = $requete->fetch();
            		if($result['actif'] == 0) {
            			$erreur = "Ton compte a été supprimé";
            			return $erreur;
            		} else {
            			return 'success';
            		}
            	}
            	
            
            	
            	public function Session() {
            		$requete = $this->bdd->prepare('SELECT * FROM tb_adherent WHERE pseudo = :pseudo');
            		$requete->execute(array('pseudo' => $this->pseudo));
            		$result = $requete->fetch();
            		$_SESSION['id_adherent'] = $result['id_adherent'];
            		$_SESSION['prenom'] = $result['prenom'];
            		$_SESSION['pseudo'] = $this->pseudo;
            		return 1;
            	}
            }
            ?>
            

            ma page de vérification
            <?php
            if(isset($_POST['pseudo']) AND isset($_POST['password'])) {
                
                $pseudo     = isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
                $password	= isset($_POST['password']) ? Security::clean($_POST['password']) : '';
            	$actif		= isset($_POST['actif']) ? $_POST['actif'] : '';
                
                $connexion = new Connexion_class($pseudo, $password, $actif);
                $verif = $connexion->Verif();
            	$verif2 = $connexion->Banni();
                
                if($verif == 'success' AND $verif2 == 'success') {
                    if($connexion->Session()) {
                        
                        if(isset($_POST['remember'])) {
                            $value = Security::crypt($pseudo) . '_' . Security::crypt($password);
                            setcookie('cliquedecruet', $value, time() + 3600 * 24 * 3);
                        }
                    }
                        header('Location: index.php?body=compte_profil&type=compte');
                        
                } else {
                    $erreur[] = $verif;
                }
            }
            if (isset($erreur)) {
            	echo output_errors($erreur);
            }
            ?>
            

            ça me parrait pas très organiser mais à priori les membres banni ne peuvent plus se connecter mais ça me retourne comme erreur success
            Merci à vous de m'aider un peu.
            0
            1. Modérateur
              Bonjour,

              Ta class pourrait plus ressembler à ça :

              <?php
              class Connexion_class {
                private $pseudo;
                private $password;
              	private $actif;
              	private $bdd;
              	
              	public function __construct($pseudo, $password, $actif) {
              		$password 				= Security::hash($password);
              		$this->pseudo 	  = $pseudo;
              		$this->password 	= $password;
              		$this->actif 			= $actif;	
              		$this->bdd 				= bdd();
              	}
              	
              	public function Verif() {
              		if($this->isLoginPwdEmpty()){
              			$erreur = 'Veuillez remplir tous les champs';		
              		} elseif($this->checkIfUserExist()) {
              			if($this->password == $this->checkIfUserExist()) {
              			  if(!$this->Banni()){
              				  $erreur = 'success';
              					// on créé les variables de session
              					$this->Session();
              				}else{
              				 $erreur = "Ton compte a été supprimé";
              				}
              			} else {
              				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
              			}
              		} else {
              			$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
              		}
              		return $erreur;
              	}
              	
              	private function checkIfUserExist(){
              		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
              		$requete->execute(array('pseudo' => $this->pseudo));
              		$result = $requete->fetch();		
              		return ($result)?$result['password']:false;
              	}
              	
              	private function isLoginPwdEmpty(){
              		return(empty($this->pseudo) || empty($this->password))?true:false;		
              	}
              	
              	private function Banni() {
              		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
              		$requete->execute(array('pseudo' => $this->pseudo));
              		$result = $requete->fetch();
              		return($result['actif'] == 0)?true:false;
              	}
              	
              	private function Session() {
              		$requete = $this->bdd->prepare('SELECT * FROM tb_adherent WHERE pseudo = :pseudo');
              		$requete->execute(array('pseudo' => $this->pseudo));
              		$result = $requete->fetch();
              		$_SESSION['id_adherent'] = $result['id_adherent'];
              		$_SESSION['prenom'] = $result['prenom'];
              		$_SESSION['pseudo'] = $this->pseudo;
              	}
              }
              ?>
              
              


              Et ta page de vérification :

              <?php
              if(isset($_POST['pseudo']) && isset($_POST['password'])) {
                  
                $pseudo   = isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
                $password	= isset($_POST['password']) ? Security::clean($_POST['password']) : '';
              	$actif		= isset($_POST['actif']) ? $_POST['actif'] : '';
                  
                $connexion = new Connexion_class($pseudo, $password, $actif);
                $verif = $connexion->Verif();
              	    
                if($verif == 'success') {
                  if(isset($_POST['remember'])) {
                     $value = Security::crypt($pseudo) . '_' . Security::crypt($password);
                     setcookie('cliquedecruet', $value, time() + 3600 * 24 * 3);
                  }
                  header('Location: index.php?body=compte_profil&type=compte');            
                }else {
                  echo output_errors($verif):
               }
              }
              
              ?>
              
              


              0
              1. Bonjour,
                Vraiment un très grand merci ça fonctionne à merveille comme je le souhaitais.
                Je te souhaite de très bonne fête de fin d'année.
                Cordialement.
                Merci encore
                0