Header()

Fermé
pontarose Messages postés 150 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 23 avril 2010 - 21 sept. 2007 à 11:21
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 21 sept. 2007 à 11:57
Bonjour,
J'ai un problème pour utiliser la fonction header() en php.
Je veux qu'on accède a mon formulaire par login et mot de passe.

si les champs login et mot de passe sont remplis,
je cherche le mot de passe correspondant au login entré par l'utilisateur (c'est çà dire que je vérifie si le couple login/mot de passe existe dans ma base de donnée).
si le login ne correspond pas au mot de passe alors j'ecris error login/password et je voudrais retourner vers la page qui me permet d'entrer mon login et mot de passe
si le login existe pas alors j'écris erreur de login et je voudrais a ce moment la retourner vers la page qui me permet d'entrer mon login et mot de passe

En fait au lieu de réafficher mon formulaire j'aimerais utiliser la fonction haeder [je fais header('Location:formulaire.html');]mais probleme j'obtiens la message suivant :
Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/xxx/connection.php:13) in /home/mcorrea/site/verif_login.php on line 91

1 réponse

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
21 sept. 2007 à 11:57
Bonjour,

Si tu changes de page, pourquoi écrire quelques chose ? Ca ne se verrait pas ;)

Le truc, c'est que la fonction header() modifie l'en-tête de la réponse http. Or cette en-tête doit être la première chose renvoyée au navigateur client (sinon, ce ne serait plus une en-tête, logique non ? :p)

Quand tu fais ton echo "mot de passe invalide"; , tu envoies quelque chose au navigateur. Donc php génère immédiatement l'en-tête http, l'envoie, puis envoie le message. Et, logiquement, quand tu demandes à modifier cette en-tête il te répond qu'elle a déjà été envoyée...


Bref, pour résoudre ton problème, le plus simple serait d'envoyer un paramètre à ta page de formulaire, pour que ce soit elle qui, en reconnaissant ce paramètre, affiche la ligne "mot de passe invalide".

Xavier
0