Condition PHP

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 28 déc. 2014 à 23:45
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 30 déc. 2014 à 18:33
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
29 déc. 2014 à 14:52
	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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 déc. 2014 à 15:13
.... 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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
29 déc. 2014 à 15:19
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Utilisateur anonyme
29 déc. 2014 à 15:30
+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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 déc. 2014 à 09:31
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
29 déc. 2014 à 12:11
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
29 déc. 2014 à 12:25
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 déc. 2014 à 13:01
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
29 déc. 2014 à 14:22
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 déc. 2014 à 14:48
Remontre ta CLASS complete
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
29 déc. 2014 à 19:56
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
Modifié par papyclic le 29/12/2014 à 20:18
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
30 déc. 2014 à 12:34
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
30 déc. 2014 à 12:57
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
30 déc. 2014 à 18:33
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