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. Modérateur
    Commence par vérifier dans la BDD qui se trouve sur le serveur si elle est identique à celle que tu as en Local.

    Une petite requête (directement dans la BDD via PHPmyadmin) du style :
    SELECT *
    FROM tb_gestion_admin
    INNER JOIN tb_adherent
    ON tb_adherent.id_adherent = tb_gestion_admin.rid_adherent
    WHERE pseudo = 'gilbertchia'
    


    va te permettre de le vérifier
    1. Bonjour
      Donc ma BDD est identique je viens de l'importer de nouveau.
      Ensuite le requète dans phpMyadmin que tu m'a fait essayé me retourne bien la ligne correspondante au pseudo.
      1. Modérateur
        Par contre ... si tu désactives également ta fonction Méthode Banni() en Local.. qu'obtiens tu ??

        Sachant que le souci que tu rencontres pour cette fonction ( que tu n'as pas réexpliqué dans ce message....) peut être résolu non ??
        As tu lu ma réponse précédente (dans ton autre message ) ?

        J'avais marqué :

        Ton message d'erreur indique que le souci se situe sur ta page connexion.php à la ligne 18....
        Donc.. c'est ce code là qu'il aurait fallu nous montrer.
        Ensuite... ce message d'erreur est connu...(des tonnes de discussions foisonnent sur le net à ce sujet.... ) ... il se produit lorsque tu as déjà affiché (via des ECHO) des choses AVANT de faire le Header Location en PHP.
        Donc oui... dans ce cas il vaut mieux le faire en Javascript!

        1. en local avec un print_r en ayant désactiver la fonction Banni() tout marche normal
          Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => 0 [membre] => 1 [sortie] => 1 [cours] => 1 [calendrier] => 1 
          

          à distant j'arrive à me connecter mais les session sont absentes comme le montre le print_r
           Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => [membre] =>  [sortie] =>  [cours] =>  [calendrier] => 
          

          Mais c'est fou cette histoire...
          pour le message d'erreur du post précédent c'est résolu car c'était la redirection et je l'ai mis en javascript.
          1. Modérateur
            Donc tu as exactement le même code sur ton serveur qu'en Local ??
            Tu n'as pas désactivé ta fonction "banni()" ?
            Tu as bien vidé ton cache après avoir fait tes modifications dans ton code ? (les variables de sessions (en question) ne s'actualisant qu'à la connexion .... si tu fais juste un F5 ... elles ne se modifieront pas)
            .. par contre ... as tu fais un session_start au niveau de ta class ??
            (de toutes façons.. l'idéal n'est pas de manipuler les variables de Session dans ta Class mais de les traiter dans la page où tu utilises ta class)...
        2. oui j'ai essayé de faire au mieux par contre je n'ai pas besoin de faire un session_start() au niveau de ma class.
          Sinon ça fait doublon puisque j'ai session_star sur la page index.php j'ai l'include pour la page init.php et sur cette page j'ai la fonction my_autoloader
          je ne comprends pas
           l'idéal n'est pas de manipuler les variables de Session dans ta Class mais de les traiter dans la page où tu utilises ta class)..
          

          donc j(ai ma class que j'ai déjà poster ensuite j'ai mon fichier de connexion que voici
          <?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();
          	    
          	if($verif == 'success') {
          		redir("./index.php?body=compte_profil&type=compte");
          	
          	} else {
          		$erreur[] = $verif;
          	}
          }
          if (isset($erreur)) {
          	echo output_errors($erreur);
          }
          ?>
          
          1. Modérateur
            Le mieux serait de mettre l'initialisation de tes variables de session dans ce code.
            Par exemple comme ceci :
            <?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();
                 
             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);
            }
            ?>
            


            Bien sûr tu modifies ta class ainsi :
            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;
             }
            
            
          2. Modérateur
            Et à la limite.. le temps des tests ... tu peux :
            Ajouter un print de la variable VERIF et désactiver la redirection

            <?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);
            }
            ?>
            
            
        3. juste pour te dire vj'arrete pas de faire des essai sans savoir trop quoi....
          que çà me bloque au niveau de cette condition c'est fou donc c'est bien ce que je t'ai dit si je désactive la methode Banni() je peux me connecter mais sans les session à l'exeption du pseudo, id_adherent et le prénom

          si ça peux t'aider à me trouver une piste....
          1. je viens de trouver une piste qui me parait pas logique par contre.
            j'ai supprimé " ! " different à la methode Banni() et je peux me connecter.
            et en local ça me met "ton compte a été supprimé

            	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
              As tu testé mon code ?

              Si ton souci se situe au niveau de la fonction banni() .. commence déjà par regarder ce qu'elle contient....
              Par exemple en faisant :
              	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();
                  // le temps des tests:
                   print_r($result);
                  //----------
              		return($result['actif'] == 0) ? true : false;
              	}
              
          2. ça me retourne
            Array ( [error] => Ton compte a été supprimé ) 
            
            1. Modérateur
              Et le PRINT de la fonction Banni ??
          3. donc le print_r de la fonction Banni() me retourne le membre avec toutes ses colonnes
            ça devarit me retourner
            [actif] => 0 en principe
            mais ça me retourne juste [actif] =>
            alors que dans ma BDD j'ai pour ce membre [actif] => 1
            1. Modérateur
              Ben oui mais dans ta requête tu as filtré sur UNIQUEMENT actif = 1 ...
              Il te suffit de faire :
              SELECT actif 
              FROM  tb_adherent
              WHERE pseudo = :pseudo
              
          4. ça me retourne avec cette requète
            SELECT actif 
            FROM  tb_adherent
            WHERE pseudo = :pseudo
            

             Array ( [id_adherent] => [prenom] => [pseudo] => gilbertchia [aucune_gestion] => [membre] => [sortie] => [cours] => [calendrier] => ) ? Array ( [actif] => 
            
            1. Modérateur
              Ca ce n'est pas le print du BANNI à mon avis....

              Pour en être sûr .. modifie encore la fonction ainsi :
              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? '' : "aucun resultat pour ce user :". $this->pseudo  ."<br>";
                   print_r($result);
                   echo "</pre>";
                  //----------
                return($result['actif'] == 0) ? true : false;
              }
              
              
          5. j'ai juset une erreur de syntax je ne là vois pas
            Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /home/cliquede/www/classes/Connexion_class.php on line 44
            
            1. Modérateur
              Un copier/coller de ton code actuel de ton fichier Connexion_class.php nous aiderait à situer l'erreur........

              EDIT : J'ai trouvé
                   echo "<pre> BANNI ==>" . $result? '' : "aucun resultat pour ce user :". $this->pseudo  ."<br>";
                   print_r($result);
                   echo "</pre>";
              

              il manquait un point devant le $result
          6. tout le même message

            Ton compte a été supprimé

            ca me retourne tout les champs correspondant au membre mais pour le champ actif toujour vide alors qu'il devrait être à 0 enfin je crois

            [actif] =>
            1. Modérateur
              Tu ne peux pas avoir que ça comme message venant du code que je t'ai fait mettre dans ta fonction Banni().
              Ce n'est pas possible.
              Es-tu sûr de tout avoir bien copier/coller ???

              ta fonction Banni() doit ressembler à ça actuellement :
              (je vais encore y faire une petite modification au cas où)
              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;
              }
              
          7. voilà la totalité du message comme je tedisais il y a toutes les colonnes

            Array ( ) ? okArray ( [id_adherent] => 23 [nom] => [prenom] => Nicolas [email] => [naissance] => 0000-00-00 [fixe] => [mobile] => [adresse] => [lieu_dit] => [code_postal] => [ville] => [pseudo] => nicolasfalq [password] => 2131b4ad78e24566535955bfd3c76b4316756e9a [actif] =>  [debut] => 1991 [fin] => ) 
            
            1. Modérateur
              Peux tu... nous montrer ton code ( celui que tu utilises actuellement et que je t'ai fait modifier) ?????
              Car ce n'est pas possible au vu des modifs que j'y ai mis que tu ais ce message !!!
              N'as tu rien d'autre qui s'affiche dans ta page ? (un peu plus haut ??)
          8. c'est quand même fou en local tout fonctionne super avec les mêmes fichiers que sur mon serveur et la même BDD
            Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] => 0 [membre] => 1 [sortie] => 1 [cours] => 1 [calendrier] => 1 )
            
            1. Modérateur
              <blcok> et la même BDD </block>
              Je ne pense pas que tu ais exactement la même chose en local ET sur le serveur....
              la preuve ...
              [id_adherent] => 60 # [id_adherent] => 23 .... rien que là .. tu as déjà une différence .....
          9. donc si je désactive la methode Bann() j'arrive à me connecter mais j'ai pas les Sessions
            Array ( [id_adherent] => 60 [prenom] => Gilbert [pseudo] => gilbertchia [aucune_gestion] =>  [membre] =>  [sortie] =>  [cours] =>  [calendrier] => 
            

            j'arrive bien sur mon compte avec toutes mes infos
            c'est juste pour faire un rappel en fait
            1. Modérateur
              Donc... je te redemande .....
              Peux tu nous poster TON CODE modifié que l'on essaye de voir ce qui ne fonctionne pas ?????
          10. 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é...........
          11. 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. 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. ca me retourne
                Array ( ) ? okArray ( [actif] =>  ) verif =
                Array ( [error] => Ton compte a été supprimé ) 
                
                • 1
                • 2