Problème Header PHP

Résolu
XecK Messages postés 386 Date d'inscription   Statut Membre Dernière intervention   -  
XecK Messages postés 386 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
mon code PHP ne marche pas comme je le souhaite :

$reponse = $bdd->prepare('SELECT * FROM Adherent WHERE nom = :nom AND prenom = :prenom');
$reponse->execute(array('nom' => $nom, 'prenom' => $prenom));

while ($donnees = $reponse->fetch())
{
if ($donnees['mdp']==$mdp)
{

$_SESSION['statut']=$donnees['fonction'];

$_SESSION['nom']=$nom;

$_SESSION['prenom']=$prenom;

$_SESSION['id']=$donnees['idAdherent'];

$_SESSION['connecte']="on";

header("Location: message.php?err=Connecté");
}
else
{
header("Location: message.php?err=Mot%20de%20passe%20incorrect");
}
}
$reponse->closeCursor();
header("Location: message.php?err=Utilisateur%20inexistant");


Ce n'est pas un problème de variable, ni de condition, mais un problème de redirection : Si je rentre les bonnes données, la session ($_SESSION) est bien mise à jour, On rentre donc bien dans le if, je devrais être redirigé vers la page message.php?err=Connecté.
Pourtant, je suis redirigé vers la page Location: message.php?err=Utilisateur%20inexistant.

Une idée ?
A voir également:

1 réponse

Utilisateur anonyme
 
Bonsoir

Deux idées.

La premières, sans rapport direct avec ton problème, serait de faire aussi AND mdp=:mdp dans ta requête. C'est un peu incohérent de faire vérifier certaines informations (nom et prenom) par mysql, et d'autres (le mot de passe) par une boucle php.

La seconde, pour ton problème proprement dit. Tu n'as pas mis de exit() après chacun de tes headers. Résultat, le dernier est toujours envoyé au client.
Car il ne faut pas perdre de vue que ce n'est pas l'instruction header qui fait la redirection. L'instruction header envoie des en-têtes au navigateur du visiteur. S'il y a plusieurs en-têtes qui disent de faire une redirection, le navigateur du client va retenir la dernière. Il faut dont toujours faire un exit après un header('Location: pour être sûr qu'il n'y en aura pas d'autre.
1
XecK Messages postés 386 Date d'inscription   Statut Membre Dernière intervention   54
 
Merci beaucoup pour cette réponse, j'ai finalement fais un double if :
if ($donnees['mdp']==$mdp)
{
header("Location: message.php?err=Connecté");
}
else if (isset($donnees['mdp']))
{
header("Location: message.php?err=Mot%20de%20passe%20incorrect");
}
else
{
header("Location: message.php?err=Utilisateur%20inexistant");
}

Mais je pense que cela marche aussi avec exit, je pensais à ce genre de problème, mais je ne savais pas comment le résoudre, donc merci pour exit...

PS Désolés pour le double poste, celui-ci n'est pas dans le bon forum^^
0