Connexion serveur distant impossible

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 4 mars 2015 à 11:11
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 5 mars 2015 à 11:24
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 11:51
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 12:18
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 12:34
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!

0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 12:47
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 12:54
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)...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 13:08
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);
}
?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 4/03/2015 à 13:23
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;
 }

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 13:25
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);
}
?>

0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 13:20
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....
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 13:27
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;
	}
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 13:39
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;
	}
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 13:41
ça me retourne
Array ( [error] => Ton compte a été supprimé ) 
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 13:47
Et le PRINT de la fonction Banni ??
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 13:56
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
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 14:01
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 14:08
ç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] => 
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 4/03/2015 à 14:47
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;
}

0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 14:19
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
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 4/03/2015 à 14:25
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 14:39
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] =>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 4/03/2015 à 15:38
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;
}
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 14:55
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] => ) 
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 15:35
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 ??)
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 15:36
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 )
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 15:37
<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 .....
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 15:40
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
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 4/03/2015 à 15:43
Donc... je te redemande .....
Peux tu nous poster TON CODE modifié que l'on essaye de voir ce qui ne fonctionne pas ?????
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 15:43
Array ( ) ? okArray ( [actif] =>
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 15:46
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;
	}
}
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 mars 2015 à 15:58
Tes variables de session sont encore dedans ?
Tu n'as donc pas procédé à toutes les modifications que je t'ai donné...........
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 15:57
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 16:18
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);
}
?>
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
4 mars 2015 à 16:19
ca me retourne
Array ( ) ? okArray ( [actif] =>  ) verif =
Array ( [error] => Ton compte a été supprimé ) 
0