Condition PHP

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

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

10 réponses

papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
	public function Verif() {
		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();

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


et mon script que je veux intégrer
		if($result['actif']==0) {
			$erreur = "compte supprimé";
			return $erreur;
		} else {
			return 'success';
		}
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
.... ce n'est pas ta class complete...
Là.. tu nous redonnes juste le bout de code que tu veux mettre et la fonction que tu utilises....
Moi je te demande la class USER .. celle qui contient TOUTES tes méthodes (dont celles que je t'ai déjà aidé à faire ) !!
0
Utilisateur anonyme > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Bonjour,

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

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

cdt
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
+1
C'est bien pour ça que je lui demande de nous redonner sa class complète car c'est ce que j'avais commencé à lui faire....
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

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

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

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

		if($result['actif']==0) {
			$erreur = "compte supprimé";
			return $erreur;
		} else {
			return 'success';
		}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Je ne comprend pas où tu bloques......

Ta portion de code semble être correcte... il te suffit de la mettre dans ton elseif...
} elseif($result) {

			if($this->password == $result['password']) {
                           if($result['actif']==0) {
	                           		$erreur = "compte supprimé";
	                           		return $erreur;
	                           	} else {
	                           		return 'success';
	                           	}
			
			} else {
				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
				return $erreur;
			}
		} 
0

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

Posez votre question
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour
Ben en fait je n'arrive pas à l'inclure à l'interieur pour que ça fonctionne.
Je ne comprend pas.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Remontre ta CLASS complete
0
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour
Voici ma class complète
<?php
class Connexion_class {
		
    private $pseudo;
    private $password;
	private $actif;
	
	private $bdd;
	
	public function __construct($pseudo, $password, $actif) {
		
		$password 	= Security::hash($password);

		$this->pseudo 	    = $pseudo;
		$this->password 		= $password;
		$this->actif 		= $actif;
		
		$this->bdd = bdd();
	}
	
	public function Verif() {
		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();

		if(empty($this->pseudo) || empty($this->password)) {
			$erreur = 'Veuillez remplir tous les champs';
			return $erreur;
		
		} elseif($result) {
			if($this->password == $result['password']) {
				return 'success';
			} else {
				$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
				return $erreur;
			}
		} else {
			$erreur = "Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ? Dans ce cas désolé...";
			return $erreur;
		}
	}
	
	public function Session() {
		$requete = $this->bdd->prepare('SELECT * FROM tb_adherent WHERE pseudo = :pseudo');
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();
		$_SESSION['id_adherent'] = $result['id_adherent'];
		$_SESSION['prenom'] = $result['prenom'];
		$_SESSION['pseudo'] = $this->pseudo;
		return 1;
	}
}
?>
0
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
et voici mes vérifications
<?php
if(isset($_POST['pseudo']) AND isset($_POST['password'])) {
    
    $pseudo     = isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
    $password = isset($_POST['password']) ? Security::clean($_POST['password']) : '';
 $actif  = isset($_POST['actif']) ? $_POST['actif'] : '';
    
    $connexion = new Connexion_class($pseudo, $password, $actif);
    $verif = $connexion->Verif();
 $verif = $connexion->Verif2();
    
    if($verif == 'success') {
        if($connexion->Session()) {
            
            if(isset($_POST['remember'])) {
                $value = Security::crypt($verif->pseudo) . '_' . Security::crypt($verif->password);
                setcookie('mon_site', $value, time() + 3600 * 24 * 3);
            }
        }
            header('Location: index.php?body=compte_profil&type=compte');
            
    } else {
        $erreur[] = $verif;
    }
}
if (isset($erreur)) {
 echo output_errors($erreur);
}
?>


Merci vraiment de votre aide
0
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour
J'ai créé une fonction pour les membres bannis
<?php
class Connexion_class {
		
    private $pseudo;
    private $password;
	private $actif;
	
	private $bdd;
	
	public function __construct($pseudo, $password, $actif) {
		
		$password 	= Security::hash($password);

		$this->pseudo 	    = $pseudo;
		$this->password 		= $password;
		$this->actif 		= $actif;
		
		$this->bdd = bdd();
	}
	
	public function Verif() {
		$requete = $this->bdd->prepare('SELECT * FROM  tb_adherent WHERE pseudo = :pseudo');
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();

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

	
	public function Session() {
		$requete = $this->bdd->prepare('SELECT * FROM tb_adherent WHERE pseudo = :pseudo');
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();
		$_SESSION['id_adherent'] = $result['id_adherent'];
		$_SESSION['prenom'] = $result['prenom'];
		$_SESSION['pseudo'] = $this->pseudo;
		return 1;
	}
}
?>

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

ça me parrait pas très organiser mais à priori les membres banni ne peuvent plus se connecter mais ça me retourne comme erreur success
Merci à vous de m'aider un peu.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Ta class pourrait plus ressembler à ça :

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



Et ta page de vérification :

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

?>



0
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour,
Vraiment un très grand merci ça fonctionne à merveille comme je le souhaitais.
Je te souhaite de très bonne fête de fin d'année.
Cordialement.
Merci encore
0