Header()

pontarose Messages postés 151 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
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 3742 Statut Membre 1 011
 
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