Verifier le login et le mot de passe pour l'accès

Fermé
DalJaam Messages postés 2 Date d'inscription jeudi 15 mai 2014 Statut Membre Dernière intervention 16 mai 2014 - 16 mai 2014 à 22:06
 Utilisateur anonyme - 17 mai 2014 à 07:53
Bonjour à tous.

je souhaites vérifier si l'utilisateur à bien rentre un bon adresse émail et le mot de passe après inscription pour se connecter.

avec ce code:



<?php

// On vérifie si toutes les données ont été bien envoyé
if (!empty($_POST['adresse_email']) AND !empty($_POST['password']))
{
// Si oui on se connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}

catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

// Insertion du message à l'aide d'une requête préparée

$req = $bdd->prepare('SELECT prenom, nom FROM inscription WHERE adresse_email=? AND password=? ');
$req->execute(array($_POST['adresse_email'], $_POST['password']));

while ($donner=$req->fetch())
{
echo '<strong>Bonjour</strong> '.$donner['prenom'],$donner['nom'];
}
}
// Si non affiche un message d'erreur
else
{
echo ' Adresse email ou mot de passe invalide ';
}
$req->closeCursor();
?>


1- si l'utilisateur entre le bon adresse émail et mot de passe, il se connecte.

2- Mais si l'utilisateur entre un mauvais adresse émail et mot de passe, une page blanche apparait.

Or avec le else dans le code cela devrait afficher normalement:



<?php
else
{
echo ' Adresse email ou mot de passe invalide ';
}
$req->closeCursor();
?>


Merci de m'aider à trouver le problème.
A voir également:

1 réponse

Utilisateur anonyme
17 mai 2014 à 07:53
Bonjour

Ton 'else' ne correspond pas à une mauvais adresse email ou à un mauvais mot de passe. Il correspond au if (!empty... qui teste si le formulaire a été rempli et non pas ce qu'il y a dedans.

C'est le résultat du SELECT qui te rend quelqu'un si les identifiants font corrects ou pas : il te rend une réponse ou aucune.
Pour tester s'il y a une réponse, il faut voir si le fetch te renvoie une ligne (il y a quelqu'un) ou false (il n'y a personne). Il faut donc utiliser un if plutôt qu'un while :
if ($donner=$req->fetch())
{
  echo '<strong>Bonjour</strong>  '.$donner['prenom'],$donner['nom'];
}
else {
  echo ' Adresse email ou mot de passe invalide ';
}

Quant au else que tu as déjà mis, tu devrais remplacer le message par "Veuillez remplir le formulaire" ou quelque chose comme ça
0