Signaler

Vérification de l'authenticité du compte

Posez votre question Amnexia 8Messages postés samedi 19 novembre 2016Date d'inscription 21 avril 2017 Dernière intervention - Dernière réponse le 21 avril 2017 à 09:42 par jordane45
Bonjour, j'essaye de faire plusieurs requêtes pour vérifier sur ma table si l'utilisateur, à le bon mot de passe et ndc, son mail est valide, et s'il est bannis, malheureusement mon code ne fonctionne pas, aidez moi svp.


if(isset($_POST['form_connexion']))
{
	$pseudoconnect = htmlspecialchars($_POST['pseudoconnect']);
	$passconnect = hash("sha512",($_POST['passconnect']));
	$banconnect = htmlspecialchars($_GET['banconnect']);
	$confirmeconnect = htmlspecialchars($_GET['confirmeconnect']);
	if(!empty($pseudoconnect) AND !empty($pseudoconnect))
	{
		$requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ? AND pass = ?");
		$requser->execute(array($pseudoconnect, $passconnect));
		$userexist = $requser->rowCount();
		if($userexist == 1)
		{
			$requser2 = $bdd->prepare("SELECT * FROM membres WHERE confirme = ?");// confirme = 1 = email confirmer \\
			$requser2->execute(array($confirmeconnect));
			$userexist2 = $requser2->rowCount();
			if($userexist == 1)
			{
				$requser3 = $bdd->prepare("SELECT * FROM membres WHERE ban = ?");// ban = 1 = non bannis \\
				$requser3->execute(array($banconnect));
				$userexist3 = $requser3->rowCount();
				if($userexist == 1)
				{
					$userinfo = $requser->fetch();
					$_SESSION['id'] = $userinfo['id'];
					$_SESSION['pseudo'] = $userinfo['pseudo'];
					$_SESSION['mail'] = $userinfo['mail'];
					header("Location: profil.php?id=".$_SESSION['id']);
				}
				else
				{
					$erreur = "Votre compte à été bannis !";
				}
			}
			else
			{
				$erreur = "L'email n'a pas été validé !";
			}
		}
		else
		{
			$erreur = "Mauvais identifiant inscrit !";
		}

	}
	else
	{
		$erreur = "Tous les champs doivent être complétés !";
	}
}





table :

http://static.ccm2.net/www.commentcamarche.net/pictures/d5xMJc935MCTD9eH2LX7gVIHBQl4iFOG6HVXgxwYxwaDJVvRJW9HxDlN32HMCsCj-eeeeee-s-.png
Afficher la suite 
Utile
+0
plus moins
Bonjour,

Une seule requête suffit ...
SELECT * FROM membres WHERE pseudo = ? AND pass = ?


De là ... ta requête te retourne les infos (si le pseudo et le password sont bon.. ) de l'utilisateur.
Donc tu as directement les infos correspondantes à l'utilisateur :
- id
- pseudo
- mail
- confirme
- ban


NB: Comme indiqué dans la doc .. il faut éviter d'utiliser RowCOunt.
Il est préférable de faire un fetchAll de ta requête puis d'y faire un COUNT.

$sql = "SELECT * FROM membres WHERE pseudo = ? AND pass = ?";
$datas = array($pseudoconnect, $passconnect);
try{
   $prep= $bdd->prepare($sql);
   $prep->execute($datas);
   $a_result = $prep->fetchAll();
   $nbResult =  !empty($a_result) ? count($a_result) : 0;
}catch(Exception $e){
  echo " Erreur : " . $e->getMessage();
}


$userexist = $nbResult;
if($userexist == 1) {

  $userinfo = $a_result[0];
  $id =  $userinfo['id'];
  $confirme=  $userinfo['confirme'];
  $ban=  $userinfo['ban'];
  $mail=  $userinfo['mail'];

 if($ban == 1 ){
  if($mail == 1 ){
    $_SESSION['id'] = $id;
    $_SESSION['pseudo'] = $pseudoconnect
    $_SESSION['mail'] = $mail;
    header("Location: profil.php?id=".$id);
    exit();
  }else{
    $erreur = "L'email n'a pas été validé !";
  }
 }else{
     $erreur = "Votre compte à été bannis !";
 }
}else{
   $erreur = "Mauvais identifiant inscrit !";
}




Pense également à activer la gestion des erreurs PDO
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

.






Cordialement, 
Jordane                                                                 
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !