Erreur php

Résolu
2012 -  
 2012 -
Bonjour, j'ai un problème par rapport mes cookies php, je reçoit cet erreur
Warning: Cannot modify header information - headers already sent by

mon code est :

__________________
....
if($remember == "yes"){
$var= base64_encode("g4enm2c0c4y3dn3727553$id");
setcookie('idCookie', $var, time() + 365*24*3600);
setcookie('passCookie', $pass, time() + 365*24*3600);
}

.....

_________________
Merci pour votre aide.

1 réponse

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Certaines fonctions agissent sur les en-têtes HTTP de la réponse.
C'est par exemple le cas des fonctions setcookie(), session()...

Or lorsque PHP tombe sur une instruction de sortie (type « echo », mais aussi l'affichage d'une erreur, ou une zone de texte en dehors de <?php et ?>), il commence à envoyer la réponse. Les en-têtes étant, par définition, envoyées en premier, PHP est obligé de générer et envoyer les en-têtes HTTP dès qu'il tombe sur une instruction de sortie.

Résultat, si, plus bas dans le code, une fonction demande explicitement de modifier les en-têtes, PHP est coincé : il les a déjà envoyées et ne peut donc plus les modifier.
D'où ton message d'erreur, assez explicite quand on a compris le fonctionnement : « Cannot modify header information - headers already sent ».

Pour trouver ton problème, maintenant, il s'agit de trouver l'endroit où les en-têtes ont été envoyées.
Normalement, le message d'erreur que tu as tronqué donne le numéro de ligne.

Sans voir le code correspondant, il est difficile de répondre, mais les pièges typiques sont :

- Un message d'erreur envoyé plus haut dans ta page ;

- Une zone (ligne blanche, caractère, etc.) situé en dehors des balises <?php et ?>. Par exemple, si ta première balise <?php est située sur la deuxième ligne de ton script, le moteur PHP commencera par envoyer au navigateur le contenu de ta première ligne, même si elle est vide !

- Le piège pénible : si ton fichier est encodé en UTF-8 standard, il contiendra au tout début quelques caractères (appelés BOM) qui sont invisible dans ton éditeur de texte ! Et pourtant PHP les voit et les enverra comme faisant partie de la réponse. La solution est d'encoder en « UTF-8 sans BOM » (aussi appelé « UTF-8 as ANSI »)

Bon courage,

Xavier
0
2012
 
Merci beaucoup pour votre bon explication.
0
2012
 
Merci beaucoup je résolu mon problème, je utiliser utf-8 sans bom a la place de utf-8.
0
2012
 
Super!!!
0