Connexion serveur distant impossible

Résolu
Bonjour
Je cré une nouvelle discussion suite à un soucis très complexe.
J'ai créé une class pour ma connexion, en local aucun problème pour me connecter les SESSION sont bien créé je suis bien redirigé sur mon compte tout va bien.
Mais le problème sur mon serveur à distant ma connexion est impossible.
une des condition de ma class m'empêche de me connecter, Méthode Banni()
Si je supprime cette condition la connexion se fait bien mais c'est ma foncion Session() ne joue pas son rôle
J'ai fait un print_r en local
 Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => 0 [membre] => 1 [sortie] => 1 [cours] => 1 [calendrier] => 1

j'ai fait un print_r à distant
 Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => [membre] =>  [sortie] =>  [cours] =>  [calendrier] =>  

ma class
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();
	}
	
	private function ChampsVide() {
		return(empty($this->pseudo) || empty($this->password)) ? true : false;		
	}

	private function PseudoExist() {
		$sql = "SELECT *
				FROM  tb_adherent
				WHERE pseudo = :pseudo
				AND actif = 1";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();
		return ($result) ? $result['password'] : false;
	}

	private function Banni() {
		$sql = "SELECT *
				FROM  tb_adherent
				WHERE pseudo = :pseudo
				AND actif = 1";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();
		return($result['actif'] == 0) ? true : false;
	}
	
	private function Session() {
		$sql = "SELECT *
				FROM tb_gestion_admin
				INNER JOIN tb_adherent
				ON tb_adherent.id_adherent = tb_gestion_admin.rid_adherent
				WHERE pseudo = :pseudo
				AND actif = 1";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();
		$_SESSION['id_adherent'] = $result['id_adherent'];
		$_SESSION['prenom'] 			= $result['prenom'];
		$_SESSION['pseudo'] 			= $this->pseudo;
		$_SESSION['aucune_gestion'] 	= $result['aucune_gestion'];
		$_SESSION['membre'] 			= $result['membre'];
		$_SESSION['sortie'] 			= $result['sortie'];
		$_SESSION['cours'] 				= $result['cours'];
		$_SESSION['calendrier'] 		= $result['calendrier'];
	}
	
	public function VerifConnexion() {
		if($this->ChampsVide()) {
			$erreur = 'Veuillez remplir tous les champs';
			
		} else if($this->PseudoExist()) {
			if($this->password == $this->PseudoExist()) {
				if(!$this->Banni()) {
				
					$erreur = 'success';
					$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 = "Ce compte n'existe pas";
		}
		return $erreur;
	}
}

J'espère que mes explications sont assez clair pour que vous puissiez comprendre mon soucis et m'aider.
Merci encore.

35 réponses

Résumé de la discussion

Problème de connexion: une classe PHP de gestion des sessions fonctionne en local mais refuse de s'exécuter sur le serveur distant, notamment en raison d'un champ actif qui n'influence pas correctement l'authentification. Des échanges de code montrent que la méthode Banni se base sur le champ actif mais retourne parfois une valeur vide côté distant, ce qui bloque la condition et empêche la fenêtre Session d'être initialisée. Plusieurs propositions corrigent ce comportement, notamment vérifier actif à 1 ou convertir en INT, afin que la connexion passe lorsque le compte est actif, et que les incohérences serveur puissent expliquer les sessions.

Bobot (l’IA à votre service)
  1. Bonjour
    Tu as raison voilà le problème ça aurai bien été la dernière chose que j'aurai pensé, tout fonctionne pour le mieux, après une longue journée que je t'ai sollicité je te remercie du fond du coeur.
    Modifier le type de champ peux à priori foutre le grand bazard, je m'en souviendrais.
    En tout cas encore un très grand merci.
    1. Modérateur
      Modifier le type de champ peux à priori foutre le grand bazard, je m'en souviendrais.

      Ca oui... je confirme.
      Le choix du Type est important ..et le modifier peut avoir des conséquences si on n'en connait pas le fonctionnement...
      Cela aura tout de même permis de repasser sur ton code et d'y apporter quelques améliorations/simplifications.(et de sortir, de la class) les variables de session ( car j'insiste... on évite ! )

      Bonne continuation.
  2. regarde si je te donne l'entréé de cet adherent l'actif est bien à 1

    (4, '', 'Franck', '', '2012-07-17', '', '', '', '', '', '', 'franckchia', '817b40653709ad951833e483d0add3de1be0a4f6', b'1', '1989', ''),
    
    1. Modérateur
      Je pense savoir. ... modifie ton champ actif en INT au lieu de BIT
  3. CREATE TABLE IF NOT EXISTS `tb_adherent` (
      `id_adherent` int(11) NOT NULL AUTO_INCREMENT,
      `nom` varchar(45) DEFAULT NULL,
      `prenom` varchar(45) DEFAULT NULL,
      `email` varchar(45) DEFAULT NULL,
      `naissance` date NOT NULL,
      `fixe` varchar(45) DEFAULT NULL,
      `mobile` varchar(45) DEFAULT NULL,
      `adresse` varchar(45) DEFAULT NULL,
      `lieu_dit` varchar(45) DEFAULT NULL,
      `code_postal` varchar(5) DEFAULT NULL,
      `ville` varchar(45) DEFAULT NULL,
      `pseudo` varchar(45) DEFAULT NULL,
      `password` varchar(45) DEFAULT NULL,
      `actif` bit(1) NOT NULL,
      `debut` varchar(4) NOT NULL,
      `fin` varchar(4) NOT NULL,
      PRIMARY KEY (`id_adherent`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=181 ;
    
    1. Modérateur
      Il me faudrait aussi les DATAS ... pas uniquement la structure
      sinon je ne pourrais pas tester
  4. si dans la BDD il est à 1 pour ce membre c'est là le blèm en fait
    1. Modérateur
      Non
      regarde le résultat que tu viens de nous poster....

      tu peux me donner un dump de ta table (du serveur?)?
  5. verif =
    Array
    (
        [error] => Ton compte a été vérrouillé
        [session] => 
    )
     
    
    
    verif2 (combien de user avec le meme pseudo ??) =
    Array
    (
        [NB_RESULT] => il y a 1 resultats pour le user :franckchia
        [RESULTAT] => Array
            (
                [0] => Array
                    (
                        [id_adherent] => 4
                        [nom] => 
                        [prenom] => Franck
                        [email] => 
                        [naissance] => 2012-07-17
                        [fixe] => 
                        [mobile] => 
                        [adresse] => 
                        [lieu_dit] => 
                        [code_postal] => 
                        [ville] => 
                        [pseudo] => franckchia
                        [password] => 817b40653709ad951833e483d0add3de1be0a4f6
                        [actif] => 
                        [debut] => 1989
                        [fin] => 
                    )
    
            )
    
    )
     
     
    
    1. Modérateur
      Actif doit être a 1 ou 0 ??... Sachant que la. .il est ni l'un ni l'autre dans ta bdd
  6. non mais en fait j'ai des lignes commenté avant

    sinon c'est là ou il y a l'erreur
     private function UserExist() {
      $sql = "SELECT *
        FROM  tb_adherent
        WHERE pseudo = :pseudo
         AND  password = :password";
      $requete = $this->bdd->prepare($sql);
      $requete->execute(array('pseudo' => $this->pseudo,'password'=>$this->password));
      $result = $requete->fetch();
      return $result;
     }
    
    1. Modérateur
      Au dessus.. ligne 53 dr mon code... une accolade en trop.
      (Dur décrire de tête sans pouvoir tester. ... )
  7. j'ai cette petite erreur
    Parse error: syntax error, unexpected T_PRIVATE in /home/cliquede/www/classes/Connexion_class.php on line 151
    
    1. Modérateur
      Comment peux tu avoir 151 lignes (au minimum vu ton message d'erreur) dans la class de connexion.. alors que je ne t'en ai posté que 80 ?

      Qu'as tu à la ligne 151 de ce fichier chez toi ??f
  8. Modérateur
    Dans ta table .... ACTIF il vaut 1 si actif et 0 si banni ?
    Dans ce cas... il faut inverser dans le code que je t'ai donné.

    Voici corrigé.
    Par contre.. comme il semble qu'il y ai quand même des données venant de la requête.. je pense que tu as d'autres "copies" de ton user.

    Testes le code suivant... on va le voir direct !

    <?php
    class Connexion_class {
     
     private $pseudo
            ,$password
            ,$actif
            ,$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 VerifConnexion() {
      $result=array();
     $user = $this->UserExist(); 
    
      if($this->ChampsVide()) {
       $result['error'] = 'Veuillez remplir tous les champs';   
      }elseif($user){ //On vérifie que l'utilisateur exist  
        if($user['actif']==1){ // on verifie que l'utilisateur n'est pas banni    
       $this->actif = $user['actif'];
         $result['error'] = 'success';
         $result['session'] = $user;     
        }else{
         $result['error'] = "Ton compte a été vérrouillé";
       $result['session'] = NULL;    
        }
       }else {
        $result['error'] = "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é...";
      $result['session'] = NULL;  
       } 
      return $result;
     }
     
     
     public function checkUserByPseudo(){
      $result=array();
      $sql = "SELECT *
        FROM  tb_adherent
        WHERE pseudo = :pseudo
         ";
      $requete = $this->bdd->prepare($sql);
      $requete->execute(array('pseudo' => $this->pseudo));
      $result['NB_RESULT'] = "il y a ".$requete->rowCount(). " resultats pour le user :".$this->pseudo;
      $result['RESULTAT'] = $requete->fetchAll(); 
      return $result;
     }
     
     }
     
      /**
     * Retourne les infos d'un USER
     * en fonction de son pseudo et de son password
     * @return : Array
     */
     private function UserExist() {
      $sql = "SELECT *
        FROM  tb_adherent
        WHERE pseudo = :pseudo
         AND  password = :password";
      $requete = $this->bdd->prepare($sql);
      $requete->execute(array('pseudo' => $this->pseudo,'password'=>$this->password));
      $result = $requete->fetch();
      return $result;
     }
     
     /**
     * teste si les champs sont vides
     */
     private function ChampsVide() {
      return(empty($this->pseudo) || empty($this->password)) ? true : false;  
     }
    
    //----------------- FIN DE LA CLASS ------------------------// 
    }
    ?>
    


    <?php
    //Démarrage de la session.. si pas déjà démarrée
    if(session_id() == '') {
     session_start();
    }
    
    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->VerifConnexion();
      //------------------------------------------------------------------------
      // Le temps des tests
      //------------------------------------------------------------------------
        echo " <pre><br>verif =<br>";
        print_r($verif );  
        echo " </pre>"; 
    	
    	$verif2 = $connexion->checkUserByPseudo();
    	echo " <pre><br>verif2 (combien de user avec le meme pseudo ??) =<br>";
        print_r($verif2);  
        echo " </pre>"; 
    	
    	
      //------------------------------------------------------------------------
     if($verif['error'] == 'success') {
             $_SESSION['id_adherent']     = $verif['session']['id_adherent'];
             $_SESSION['prenom']          = $verif['session']['prenom'];
             $_SESSION['pseudo']          = $pseudo;
             $_SESSION['aucune_gestion']  = $verif['session']['aucune_gestion'];
             $_SESSION['membre']          = $verif['session']['membre'];
             $_SESSION['sortie']          = $verif['session']['sortie'];
             $_SESSION['cours']           = $verif['session']['cours'];
             $_SESSION['calendrier']      = $verif['session']['calendrier'];
         $_SESSION['loginTime']       = date('Y-m-d H:i:s'); // démarrage de la connexion
      //redir("./index.php?body=compte_profil&type=compte");
      //------------------------------------------------------------------------
      // Le temps des tests
      //------------------------------------------------------------------------
        echo " <pre><br>SESSION =<br>";
        print_r($_SESSION );  
        echo " </pre>"; 
      //------------------------------------------------------------------------
     } else {
      $erreur[] = $verif['error'];
     }
    }
    if (isset($erreur)) {
     echo output_errors($erreur);
    }
    ?>
    

    1. voilà
      verif =
      Array
      (
          [error] => success
          [session] => Array
              (
                  [id_adherent] => 6
                  [nom] => TONIN
                  [prenom] => Nadège
                  [email] => 
                  [naissance] => 0000-00-00
                  [fixe] => 
                  [mobile] => 
                  [adresse] => 
                  [lieu_dit] => 
                  [code_postal] => 
                  [ville] => 
                  [pseudo] => nadegetoni
                  [password] => 1137ed60ff09cc2d9e4babef70a9bb8a5339557f
                  [actif] => 
                  [debut] => 1989
                  [fin] => 2001
              )
      
      )
       
      
      
      SESSION =
      Array
      (
          [loginTime] => 2015-03-04 21:10:08
          [id_adherent] => 6
          [prenom] => Nadège
          [pseudo] => nadegetoni
          [aucune_gestion] => 
          [membre] => 
          [sortie] => 
          [cours] => 
          [calendrier] => 
      )
       
      

      alors pourquoi actif est vide alors que dans la BDD il est à 1
      pourquoi ses variable sont vide alors que dans la BDD elles sont à 0 ou 1
          [aucune_gestion] => 
          [membre] => 
          [sortie] => 
          [cours] => 
          [calendrier] => 
      
      1. ça y a rien à voir je crois car l'un est un membre actif à 0
        l'autre membre actif à 1

        dans les conditions pour la connexion ça regarde dans la BDD uniquement les membre actif

        mais ce que je ne trouve pas normal c'est que la session n'existe pas
        $_SESSION['aucune_gestion']  = $verif['session']['aucune_gestion'];
                 $_SESSION['membre']          = $verif['session']['membre'];
                 $_SESSION['sortie']          = $verif['session']['sortie'];
                 $_SESSION['cours']           = $verif['session']['cours'];
                 $_SESSION['calendrier']      = $verif['session']['calendrier'];
        

        de toute manière je suis un peu perdu je ne sais plus ou j'en suis avec tout ça j'en pert la tête
        Crois tu que c'est possible que la configuration de PHP en local et sur mon serveur est une influence à propos des fonctions de ma class?
        Parce que je viens de réessayé proprement est en local ça fonctionne très bien
        Merci vraiment du temps que tu y passe mais j'y sans mal ....
        1. Modérateur
          Non rien à voir.
          Un user ne peut et ne doit exister qu'une seule fois ... le contraire serait totalement illogique !!!
          Supprimes en un !
      2. donc là j'ai décommenter la redirection et la connexion c'est bien faites
        mais par contre il y a 2 membre avec le même pseudo l'un avec actif à 0 et l'autre actif à 1
        et c'est le membre actif à 0 qui se connecte, ça devrait être le contraire en fait.
        Ce que je trouve curieux c'est qu'il n'y a pas de session pour
                 $_SESSION['aucune_gestion']  = $verif['session']['aucune_gestion'];
                 $_SESSION['membre']          = $verif['session']['membre'];
                 $_SESSION['sortie']          = $verif['session']['sortie'];
                 $_SESSION['cours']           = $verif['session']['cours'];
                 $_SESSION['calendrier']      = $verif['session']['calendrier'];
        
        1. Modérateur
          Comment peux tu avoir deux lignes dans ta bdd avec le même pseudo ??
          L'anomalie est là !
          Supprimes en un de ta bdd
      3. le résultat
        verif =
        Array
        (
            [error] => success
            [session] => Array
                (
                    [id_adherent] => 5
                    [nom] => 
                    [prenom] => Gilbert
                    [email] => 
                    [naissance] => 0000-00-00
                    [fixe] => 
                    [mobile] => 
                    [adresse] => 
                    [lieu_dit] => 
                    [code_postal] => 
                    [ville] => 
                    [pseudo] => gilbertchia
                    [password] => 4dde8e5a24323b82424bb05d34e24aa42cc31357
                    [actif] => 
                    [debut] => 1989
                    [fin] => 2001
                )
        
        )
        

        
        SESSION =
        Array
        (
            [id_adherent] => 5
            [prenom] => Gilbert
            [pseudo] => gilbertchia
            [aucune_gestion] => 
            [membre] => 
            [sortie] => 
            [cours] => 
            [calendrier] => 
            [loginTime] => 2015-03-04 19:30:03
        )
        
        1. Modérateur
          ok... et tu es sûr que dans ta BDD (celle du serveur) .. le User dont l' ID est 5 a bien exactement les mêmes infos que dans ta BDD Locale ??
          Car le SELECT * ne retourne pas grand chose comme tu peux le voir ....

          [id_adherent] => 5
          [nom] =>
          [prenom] => Gilbert
          [email] =>
          [naissance] => 0000-00-00
          [fixe] =>
          [mobile] =>
          [adresse] =>
          [lieu_dit] =>
          [code_postal] =>
          [ville] =>
          [pseudo] => gilbertchia
          [password] => 4dde8e5a24323b82424bb05d34e24aa42cc31357
          [actif] =>
          [debut] => 1989
          [fin] => 2001

          et là .. ça ne vient pas du code ... c'est sûr !
      4. voici l'erreur renvoyé
        Parse error: syntax error, unexpected T_STRING in /home/cliquede/www/classes/Connexion_class.php on line 3
        
        1. Modérateur
          retire le point virgule après $pseudo;
      5. Modérateur
        Voici tes fichiers modifiés.
        Peux tu les tester ?

        <?php
        //Démarrage de la session.. si pas déjà démarrée
        if(session_id() == '') {
         session_start();
        }
        
        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->VerifConnexion();
          //------------------------------------------------------------------------
          // Le temps des tests
          //------------------------------------------------------------------------
            echo " <pre><br>verif =<br>";
            print_r($verif );  
            echo " </pre>"; 
          //------------------------------------------------------------------------
         if($verif['error'] == 'success') {
                 $_SESSION['id_adherent']     = $verif['session']['id_adherent'];
                 $_SESSION['prenom']          = $verif['session']['prenom'];
                 $_SESSION['pseudo']          = $pseudo;
                 $_SESSION['aucune_gestion']  = $verif['session']['aucune_gestion'];
                 $_SESSION['membre']          = $verif['session']['membre'];
                 $_SESSION['sortie']          = $verif['session']['sortie'];
                 $_SESSION['cours']           = $verif['session']['cours'];
                 $_SESSION['calendrier']      = $verif['session']['calendrier'];
             $_SESSION['loginTime']       = date('Y-m-d H:i:s'); // démarrage de la connexion
          //redir("./index.php?body=compte_profil&type=compte");
          //------------------------------------------------------------------------
          // Le temps des tests
          //------------------------------------------------------------------------
            echo " <pre><br>SESSION =<br>";
            print_r($_SESSION );  
            echo " </pre>"; 
          //------------------------------------------------------------------------
         } else {
          $erreur[] = $verif['error'];
         }
        }
        if (isset($erreur)) {
         echo output_errors($erreur);
        }
        ?>
        


        La class de connexion
        
        <?php
        class Connexion_class {
         
         private $pseudo
                ,$password
                ,$actif
                ,$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 VerifConnexion() {
          $result=array();
         $user = $this->UserExist(); 
        
          if($this->ChampsVide()) {
           $result['error'] = 'Veuillez remplir tous les champs';   
          }elseif($user){ //On vérifie que l'utilisateur exist  
            if($user['actif']==0){ // on verifie que l'utilisateur n'est pas banni    
           $this->actif = $user['actif'];
             $result['error'] = 'success';
             $result['session'] = $user;     
            }else{
             $result['error'] = "Ton compte a été vérrouillé";
           $result['session'] = NULL;    
            }
           }else {
            $result['error'] = "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é...";
          $result['session'] = NULL;  
           } 
          return $result;
         }
         
          /**
         * Retourne les infos d'un USER
         * en fonction de son pseudo et de son password
         * @return : Array
         */
         private function UserExist() {
          $sql = "SELECT *
            FROM  tb_adherent
            WHERE pseudo = :pseudo
             AND  password = :password";
          $requete = $this->bdd->prepare($sql);
          $requete->execute(array('pseudo' => $this->pseudo,'password'=>$this->password));
          $result = $requete->fetch();
          return $result;
         }
         
         /**
         * teste si les champs sont vides
         */
         private function ChampsVide() {
          return(empty($this->pseudo) || empty($this->password)) ? true : false;  
         }
        
        //----------------- FIN DE LA CLASS ------------------------// 
        }
        ?>
        


        Cordialement,
        Jordane
        1. par contre en local
           Array ( ) ? okArray ( [actif] => 1 ) 
           Fatal error: Call to undefined method Connexion_class::Session() in C:\Users\Gilbert\Dropbox\wamp\www\cliquedecruet\classes\Connexion_class.php on line 64
          
          1. ca me retourne
            Array ( ) ? okArray ( [actif] =>  ) verif =
            Array ( [error] => Ton compte a été supprimé ) 
            
            1. Donc voilà pour tout reprendre
              ma class
              <?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();
              	}
              	
              	private function ChampsVide() {
              		return(empty($this->pseudo) || empty($this->password)) ? true : false;		
              	}
              
              	private function PseudoExist() {
              		$sql = "SELECT *
              				FROM  tb_adherent
              				WHERE pseudo = :pseudo
              				AND actif = 1";
              		$requete = $this->bdd->prepare($sql);
              		$requete->execute(array('pseudo' => $this->pseudo));
              		$result = $requete->fetch();
              		return ($result) ? $result['password'] : false;
              	}
              
              private function Banni() {
                $sql = "SELECT actif
                  FROM  tb_adherent
                  WHERE pseudo = :pseudo";
                $requete = $this->bdd->prepare($sql);
                $requete->execute(array('pseudo' => $this->pseudo));
                $result = $requete->fetch();
                  // le temps des tests:
                   
                   echo "<pre> BANNI ==>" . ($result) ? "ok" : "aucun resultat pour ce user :". $this->pseudo  ."<br>";
                   print_r($result);
                   echo "</pre>";
                  //----------
                return($result['actif'] == 0) ? true : false;
              }
              	
              
              	
              public function VerifConnexion() {
               $result=array();
                if($this->ChampsVide()) {
                 $result['error'] = 'Veuillez remplir tous les champs';
                 
                } else if($this->PseudoExist()) {
                 if($this->password == $this->PseudoExist()) {
                  if(!$this->Banni()) {
                  
                   $result['error'] = 'success';
                   $result['session'] = $this->Session();
                   
                  } else {
                   $result['error'] = "Ton compte a été supprimé";
                  }
                 } else {
                  $result['error'] = "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 {
                 $result['error'] = "Ce compte n'existe pas";
                }
                return $result;
               }
              }
              ?>
              


              mon fichier de connexion
              <?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->VerifConnexion();
              //------------------------------------------------------------------------
              // Le temps des tests
              //------------------------------------------------------------------------
                echo " verif =<br>";
                print_r($verif );   
              //------------------------------------------------------------------------
               if($verif['error'] == 'success') {
                       $_SESSION['id_adherent']      = $verif['session']['id_adherent'];
                       $_SESSION['prenom']         = $verif['session']['prenom'];
                       $_SESSION['pseudo']        = $pseudo;
                       $_SESSION['aucune_gestion']  = $verif['session']['aucune_gestion'];
                       $_SESSION['membre']        = $verif['session']['membre'];
                       $_SESSION['sortie']        = $verif['session']['sortie'];
                       $_SESSION['cours']         = $verif['session']['cours'];
                       $_SESSION['calendrier']     = $verif['session']['calendrier'];
                //redir("./index.php?body=compte_profil&type=compte");
               
               } else {
                $erreur[] = $verif['error'];
               }
              }
              if (isset($erreur)) {
               echo output_errors($erreur);
              }
              ?>
              
              1. je pourrais partir comme ça par exemple
                	private function Banni() {
                		$sql = "SELECT *
                				FROM  tb_adherent
                				WHERE pseudo = :pseudo
                				AND actif = 1";
                		$requete = $this->bdd->prepare($sql);
                		$requete->execute(array('pseudo' => $this->pseudo));
                		$result = $requete->fetch();
                		return($result['actif'] == 1) ? true : false;
                	}
                

                avec cette fonction modifié je peux me connecter
                	public function VerifConnexion() {
                		if($this->ChampsVide()) {
                			$erreur = 'Veuillez remplir tous les champs';
                			
                		} else if($this->PseudoExist()) {
                			if($this->password == $this->PseudoExist()) {
                				if(!$this->Banni()) {
                				
                					$erreur = 'success';
                					$this->Session();
                					
                				} else {
                				 $erreur = "Ce compte n'existe pas";
                				}
                			} 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 = "Ton compte a été supprimé";
                		}
                		return $erreur;
                	}
                

                en faisant comme ça il y a juste si le login et le mot de passe on met n'importe quoi la condition est
                Ton compte a été supprimé
                alors que ça devrait être
                Ce compte n'existe pas
                1. ci-dessus ce que ça m'a retourné avec cette class
                  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();
                  	}
                  	
                  	private function ChampsVide() {
                  		return(empty($this->pseudo) || empty($this->password)) ? true : false;		
                  	}
                  
                  	private function PseudoExist() {
                  		$sql = "SELECT *
                  				FROM  tb_adherent
                  				WHERE pseudo = :pseudo
                  				AND actif = 1";
                  		$requete = $this->bdd->prepare($sql);
                  		$requete->execute(array('pseudo' => $this->pseudo));
                  		$result = $requete->fetch();
                  		return ($result) ? $result['password'] : false;
                  	}
                  
                  private function Banni() {
                    $sql = "SELECT actif
                      FROM  tb_adherent
                      WHERE pseudo = :pseudo";
                    $requete = $this->bdd->prepare($sql);
                    $requete->execute(array('pseudo' => $this->pseudo));
                    $result = $requete->fetch();
                      // le temps des tests:
                       
                       echo "<pre> BANNI ==>" . $result ? "ok" : "aucun resultat pour ce user :". $this->pseudo  ."<br>";
                       print_r($result);
                       echo "</pre>";
                      //----------
                    return($result['actif'] == 0) ? true : false;
                  }
                  	
                  	private function Session() {
                  		$sql = "SELECT *
                  				FROM tb_gestion_admin
                  				INNER JOIN tb_adherent
                  				ON tb_adherent.id_adherent = tb_gestion_admin.rid_adherent
                  				WHERE pseudo = :pseudo
                  				AND actif = 1";
                  		$requete = $this->bdd->prepare($sql);
                  		$requete->execute(array('pseudo' => $this->pseudo));
                  		$result = $requete->fetch();
                  		$_SESSION['id_adherent'] 		= $result['id_adherent'];
                  		$_SESSION['prenom'] 			= $result['prenom'];
                  		$_SESSION['pseudo'] 			= $this->pseudo;
                  		$_SESSION['aucune_gestion'] 	= $result['aucune_gestion'];
                  		$_SESSION['membre'] 			= $result['membre'];
                  		$_SESSION['sortie'] 			= $result['sortie'];
                  		$_SESSION['cours'] 				= $result['cours'];
                  		$_SESSION['calendrier'] 		= $result['calendrier'];
                  	}
                  	
                  	public function VerifConnexion() {
                  		if($this->ChampsVide()) {
                  			$erreur = 'Veuillez remplir tous les champs';
                  			
                  		} else if($this->PseudoExist()) {
                  			if($this->password == $this->PseudoExist()) {
                  				if(!$this->Banni()) {
                  				
                  					$erreur = 'success';
                  					$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 = "Ce compte n'existe pas";
                  		}
                  		return $erreur;
                  	}
                  }
                  
                  1. Modérateur
                    Tes variables de session sont encore dedans ?
                    Tu n'as donc pas procédé à toutes les modifications que je t'ai donné...........
                • 1
                • 2