Gestion d'erreur:Warning: Cannot modify header information - headers already sen

Signaler
Messages postés
15
Date d'inscription
lundi 15 août 2005
Statut
Membre
Dernière intervention
26 septembre 2005
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour à tous,

Je ne cais pas me jetter par la fenêtre, mais 'est pas loin.......
Jusqu'ici, mon code fonctionnait mais j'ai désinstaller easyphp 1.7 pour installer le 1.8. Depuis, lorsque je tente de loguer un utilisateur, je recois le message d'erreur suivant:
Warning: Cannot modify header information - headers already sent by (output started at c:\documents and settings\grégoire\mes documents\vivi\epfc\ei\ei\contact.php4:21) in c:\documents and settings\grégoire\mes documents\vivi\epfc\ei\ei\login.php4 on line 27.
Pourtant, le "loguage" fonctionne, une session s'ouvre.
Comme on peut se loguer sur quasi toutes les pages,
l'erreur est pointée sur la première ligne comportant un

15 réponses

Messages postés
15
Date d'inscription
lundi 15 août 2005
Statut
Membre
Dernière intervention
26 septembre 2005

j'ai oublié de préciser que l'erreur dans ma page login est pointée sur la ligne suivante:
setcookie('nom',$data['nom']);
Messages postés
91
Date d'inscription
samedi 30 mars 2002
Statut
Membre
Dernière intervention
11 octobre 2005

ta fonction setcookie ne doit pas etre précédée d'une fonction qui affiche un texte.
Messages postés
15
Date d'inscription
lundi 15 août 2005
Statut
Membre
Dernière intervention
26 septembre 2005

Merci de m'avoir répondu,
Je ne comprends pas ta réponse, je te mets la ligne précédente:
// On vérifie que son mot de passe est correct
if ($password == $data['mdp']){
$loginOK = true;
setcookie('nom',$data['nom']);
$cookie=$data['nom'];//l'utilisateur est logé
Messages postés
91
Date d'inscription
samedi 30 mars 2002
Statut
Membre
Dernière intervention
11 octobre 2005

je te parle pas uniquement de la ligne précédente, mais de tout ce qui est avant ton setcookie. Quand le navigateur client récupere une page il recupere en premier les headers (cookies, sessions) puis le contenu de ta page. Alor si tu melange le contenu de ta page et les headers c normal qu'il te mette une erreur. Tu ne dois rien afficher avant ton setcookie
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



cherche "headers already sent" sur le moteur de recherche, tu
constateras que la question qui revient le plus souvent est la tienne
:-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
15
Date d'inscription
lundi 15 août 2005
Statut
Membre
Dernière intervention
26 septembre 2005

Merci du conseil.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Et encore cet excellent article (à mon sens) de Frédéric Bouchery :

http://frederic.bouchery.free.fr/?2005/04/04/43-headers-already-sent-jai-perdu-la-tete
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
bien rédigé, clair et propre, mais il ne parle pas trop des méthodes de résolution (genre bufferisation de sortie)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Non c'est vrai. Il en parle juste un peu, et renvoie à un autre de ses
articles :
http://frederic.bouchery.free.fr/?2004/08/10/9-Echo-Lapin-Ou-Tortue

mais là non plus il n'insiste pas.

En même temps, il a ses idées bien arrêtées sur un paquet de choses, en
php...lol...donc bon. C'est un choix qui lui est propre je pense.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
j'ai pu constater ça aussi effectivement :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
de plus je vois que "http://frederic.bouchery.free.fr/?2004/08/10/9-Echo-Lapin-Ou-Tortue"



il se goure sur la concaténation et le "multi paramètres" (comme il l'appelle...)



la concaténation est plus gourmande et moins rapide contrairement à ce qu'il écrit :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Ben en fait ça dépend des tests...j'ai vu pas mal de bench, et il
semblerait que la concaténation l'emporte parfois, en effet. Sauf,
comme il le dit, lorsque on balance beaucoup d'echo avec concaténation,
et dans ce cas, c'est inversé. Je suppose que c'est justement à cause
d'un problème de mémoire. Ca consomme plus, mais c'est plus rapide à la
base, mais si ça consomme trop...ça ralentit.

Je suppose hein, je n'ai jamais fait de bench moi-même, jamais poussé en tous cas.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
D'ailleurs pour avoir vu des lignes de code de ce monsieur, je peux te dire qu'il utilise les virgules, dans les echo ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
En tout cas j'ai fait plusieurs bench avec les virgules (benchs
différents bien sûr) et les virgules l'emportaient à chaque fois,
j'aimerais donc bien voir un exemple précis ou les points l'emportent,
parce que ça m'intéresse :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Je tâcherai de retrouver es bench que j'ai trouvé, mais pas de garantie, lol, c'était il y a longtemps.