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 -
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 ?
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:
- Problème Header PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- 400 bad request request header or cookie too large - Forum Windows
- Retour a la ligne php ✓ - Forum PHP
- Php alert ✓ - Forum PHP
1 réponse
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.
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.
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^^