Vérifier si le pseudo existe

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - Modifié par papyclic le 7/04/2016 à 23:19
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 12 avril 2016 à 20:15
Bonjour, Je souhaite mettre en place une connexion pour que les membres puissent se connecter.
j'ai commencé par faire cette requête qui me parait logique mais qui fonctionne pas.
J'ai créé une fonction si un champ est vide
Une autre fonction si le pseudo existe dans la BDD
Et puis la fonction globale de vérification
Avec tout ça cela me renvoie toujours "Ce compte n'existe pas"
Pouvez-vous s'ils vous plait me donner un coup de mais, me dire ce qui ne va pas. En vous remerciant d'avance.
Cordialement
private function ChampsVide() {
  return(empty($this->pseudo) || empty($this->passwd)) ? true : false;  
 }

 private function PseudoExist() {
  $sql = "SELECT *
     FROM cdc_Personnes
     LEFT JOIN cdc_Adherer
      ON cdc_Personnes.idpers = cdc_Adherer.idpers
       WHERE pseudo = :pseudo
       AND now() between ddebut AND dfin";
  $requete = $this->bdd->prepare($sql);
  $requete->execute(array('pseudo' => $this->pseudo));
  $donnees = $requete->fetch();
 }
 public function VerifConnexion() {
  if($this->ChampsVide()) {
   $erreur = "Veuillez remplir tous les champs";
  } else if($this->PseudoExist()) {
   $erreur = "success";
  } else {
   $erreur = "Ce compte n'existe pas";
  }
  return $erreur;
 }

8 réponses

papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
8 avril 2016 à 07:01
Bonjour
J'avais oublié de mettre si le pseudo existe par rapport au mot de passe saisie en fait.
return ($donnees) ? $donnees['passwd'] : false;
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
8 avril 2016 à 11:46
Bonjour
Je souhaite rajouter une fonction à savoir si je banni un membre, en ce connectant avec ses bon identifiants il doit ne plus pouvoir se connecter.
Dans le premier post j'ai
  • si les champs sont vide
  • si le pseudo existe

et là je voudrais du style
  • ton compte a été supprimé

Pouvez-vous m'aider pour ma dernière fonction s'ils vous plait, je vous remercie c'est sympa,
Comme elle est actuellement je passe directement à la condition
"Ce compte n'existe pas" au lieu de "Ton compte a été supprimé"
	private function Banni() {
		$sql = "SELECT *
				FROM cdc_Personnes
				LEFT JOIN cdc_Adherer
				ON cdc_Personnes.idpers = cdc_Adherer.idpers
                               WHERE pseudo = :pseudo
		AND now() between ddebut AND dfin";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$donnees = $requete->fetch();
		return false;
	}
	public function VerifConnexion() {
		if($this->ChampsVide()) {
			$erreur = "Veuillez remplir tous les champs";
			
		} else if($this->PseudoExist()) {
			if($this->passwd == $this->PseudoExist()) {
				if(!$this->Banni()) {
				
					$erreur = "success";
					
				} 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
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
8 avril 2016 à 14:35
Salut,

Si ton code affiche le message 'Ce compte n'existe pas', c'est donc que la méthode PseudoExist() retourne false.
Vérifie que la requête sql de la fonction PseudoExist() s'exécute correctement et que le résultat est conforme aux données en base.

Bonne journée
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
8 avril 2016 à 14:57
Bonjour, En fait la méthode PseudoExiste s'exécute correctement et le résultat est bien conforme aux données qui est en BDD.

C'est la méthode Banni qui ne s'exécute pas comme elle devrait, d'ailleurs elle ne joue pas son role.

Actuellement un compte d'membre Banni si il essaie de ce connecter ça retourne "Ce compte n'existe pas" au lieu de "Ton compte a été supprimé"
Sinon si une connexion avec de faux identifiants essaie de ce connecter la méthode PseudoExiste joue complétement son rôle.

Merci si tu peux m'aider un peu.
0

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

Posez votre question
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
8 avril 2016 à 15:23
Désolé d'insister mais le message 'Ce compte n'existe pas' ne devrait s'afficher que lorsque la condition $this->PseudoExist() (ligne 18) retourne false.
Puisque la condition $this->PseudoExist() (ligne 18) retourne false, on ne rentre pas dans le bloc de code suivant et la méthode Banni() n'est donc pour l'instant pas appelée. Ajoute quelques echo pour suivre plus facilmeent le fil d'exécution :
public function VerifConnexion() {
	if($this->ChampsVide()) {
		$erreur = "Veuillez remplir tous les champs";
	} else if($this->PseudoExist()) {
		echo '$this->PseudoExist() retourne true : On vérifie si il est banni...';
		
		if($this->passwd == $this->PseudoExist()) {
                        echo 'Appel de la fonction Banni()';

			if(!$this->Banni()) {
				$erreur = "success";
			} 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 {
                echo '$this->PseudoExist() retourne false : la fonction Banni() n\'est pas appelée';
		$erreur = "Ce compte n'existe pas";
	}
	return $erreur;
}
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
9 avril 2016 à 19:07
Bonjour
J'ai vraiment essayé de comprendre, mais sans résultat. Je me permet de remettre mes deux méthodes si tu peux me trouver la solution à ce mystérieux problème. Malgrès les echos je n'arrive pas à résoudre mon soucis, peut-être la méthode banni n'est pas correct??
Je te remercie sincérement de ton aide si tu peux.
Cordialement
	private function PseudoExist() {
		$sql = "SELECT *
					FROM cdc_Personnes
					LEFT JOIN cdc_Adherer
						ON cdc_Personnes.idpers = cdc_Adherer.idpers
							WHERE pseudo = :pseudo
							AND now() between ddebut AND dfin";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$donnees = $requete->fetch();
		return ($donnees) ? $donnees['passwd'] : false;
	}

	private function Banni() {
		$sql = "SELECT *
					FROM cdc_Personnes
					LEFT JOIN cdc_Adherer
						ON cdc_Personnes.idpers = cdc_Adherer.idpers
							WHERE pseudo = :pseudo
							AND now() between ddebut AND dfin";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$donnees = $requete->fetch();
		return false;
	}
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
10 avril 2016 à 10:35
Bonjour
Voilà ou j'en suis en fait.

Si il y a le bon Login et le bon Password (connexion OK)
Si il y a le bon Login et le bon Password mais ce compte à été supprimé ("Ton compte a été supprimé")
Si il y a un Login existant avec un Password faux ("Mauvais mot de passe...ou Mauvais login...Merci de recommencer")
Si il y a un Login qui n'existe pas ("Ton compte a été supprimé") au lien de ("Ce compte n'existe pas") simplement cette erreur.
Merci voici une récap de mes deux méthodes
	private function PseudoExist() {
		$sql = "SELECT *
					FROM cdc_Personnes
					LEFT JOIN cdc_Adherer
						ON cdc_Personnes.idpers = cdc_Adherer.idpers
							WHERE pseudo = :pseudo
							AND now() between ddebut AND dfin";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$donnees = $requete->fetch();
		return ($donnees) ? $donnees['passwd'] : true;
	}

	private function Banni() {
		$sql = "SELECT *
					FROM cdc_Personnes
					LEFT JOIN cdc_Adherer
						ON cdc_Personnes.idpers = cdc_Adherer.idpers
							WHERE pseudo = :pseudo
							AND now() between ddebut AND dfin";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$donnees = $requete->fetch();
		return($donnees) ? false : true;
	}
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
11 avril 2016 à 13:50
Je vois que tu as changé le retour de la fonction PseudoExist() mais l'ancien code n'était pas correct ?
return ($donnees) ? $donnees['passwd'] : false;

--> si la requête retourne un résultat, on retourne le mot de passe sinon false

Concernant la méthode Banni, la requête sql de cette méthode est identique à la requête de la méthode PseudoExist. Ne devrait-il pas y avoir une clause WHERE supplémentaire pour vérifier que l'utilisateur est banni ? Par exemple "WHERE pseudo = :pseudo AND banni = 1" ?
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
12 avril 2016 à 20:15
Bonjour
En fait les membres sont ceux dont la date d'aujourd'hui est comprise entre la valeur ddebut et la valeur dfin d'où le filtre entre deux dates.
AND now() between ddebut AND dfin"
sinon les membres on été banni.
Peux tu me donner ton avis si je peux ajouter une clause WHERE dans la méthode Banni.
En fait j'ai changé le retour de la fonction car je tâtonne en fait.
Merci de ton aide.
0