Erreur php
Résolu
2012
-
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.
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.
A voir également:
- Erreur php
- Erreur 0x80070643 - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
1 réponse
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
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
2012
Merci beaucoup pour votre bon explication.
2012
Merci beaucoup je résolu mon problème, je utiliser utf-8 sans bom a la place de utf-8.
2012
Super!!!