Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1656 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Headers et headers_sent (Résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Headers et headers_sent (Résolu)

n°1911633
illeriane
Posté le 04-08-2009 à 14:42:53  profilanswer
 

Bonjour,
 
Je travail actuellement sur une application relativement complexe (vis a vis de mon expérience dirons-nous) et je suis confronté a une difficulté que je ne comprend pas: le warning "header already sent ..." bien classique.
 
Dans les situations auxquelles j'ai été confronté par le passé, il s'agissait d'un saut de ligne, espace ou encore un affichage quelconque dans les lignes précédant le header de redirection, mais cette fois, je ne trouve pas. Pour m'aider dans cette recherche, j'ai trouvé sur le net la fonction headers_sent qui permet de vérifier si le header a déjà été envoyé et de récupérer également le fichier et la ligne a laquelle la faute est commise.  
 
Le résultat est que malgré que j'ai supprimé l'ensemble des espaces/sauts de lignes en début et en fin de fichiers (inclus et du fichier concerné) et après avoir vérifié que aucun affichage (echo et autres fonctions) ne s'etait glissé dans mon code avant le header, le warning persiste, mais n'indique pas le fichier ni la ligne, et la fonction headers_sent($f,$l) renvoie true mais $f est null et $l vaut 0.
 
Je suis sur un serveur WAMP (php5.2.8) et j'ai fais quelques tests: j'ai essayé dans l'ordre:

  • Faire un simple header de redirection dans les règles -> OK.
  • Emmètre des caractères avant le header -> redirection effectuée tout de même.
  • Emmètre beaucoup de caractères avant le header -> redirection effectuée tout de même.


Les mêmes tests en utilisant la fonction headers_sent($f,$l) de la façon suivante:  
 

Code :
  1. if(headers_sent($f,$l))
  2.  {
  3.   echo('<br />'.$f.'<br />'.$l);
  4.  }
  5.  else
  6.  {
  7.   header('Location: ./catalog/index.php');
  8.  }


ont donné les mêmes résultats.
 
J'ai alors désactivé l'output buffering de mon php.ini  
 
Les résultats étaient concluant a savoir:
 

  • Faire un simple header de redirection dans les règles -> OK.
  • Emmètre des caractères avant le header -> Pas de redirection. + affichage du nom du fichier et de la ligne.
  • Emmètre beaucoup de caractères avant le header -> Pas de redirection.  + affichage du nom du fichier et de la ligne.


Je n'ai pas réussi a reproduire l'erreur que j'ai sur mon appli a part sur l'appli en elle même (un osCommerce, c'est assez difficile a décortiquer en petits bouts :s )
 
Avez vous une idée de l'origine de ce problème (a savoir l'envoie de header mais impossible de savoir ou)?
 
Merci de votre aide.


Message édité par illeriane le 04-08-2009 à 16:46:28
mood
Publicité
Posté le 04-08-2009 à 14:42:53  profilanswer
 

n°1911638
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 04-08-2009 à 14:53:42  profilanswer
 

es-tu en UTF-8 ? Si oui, tes fichiers sont-ils avec ou sans BOM ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1911639
illeriane
Posté le 04-08-2009 à 14:56:24  profilanswer
 

Bonjour,
Je ne suis pas en UTF-8, et mes fichiers sont (donc) sans BOM.

n°1911687
illeriane
Posté le 04-08-2009 à 16:45:51  profilanswer
 

Bonjour,
 
Après quelques temps de recherches, il se trouve que dans une fonction appelée avant l'appel a header(), il y avait un flush();.
Après quelques test, il s'avère que le flush() doit envoyer le header() même si aucune information n'est transmise. Fermant ainsi le header (d'ou le warning) mais comme aucune information n'est envoyé(a part le header), la fonction headers_sent($f,$l) ne trouve pas quoi placer dans $f et $l.
 
Bon a savoir. (d'autant qu'il semblerais que ce ne soit le cas que si php est en mode module Apache et pas an CGI.)
 
Cordialement.
 
Adrien.

n°1911823
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 05-08-2009 à 10:07:24  profilanswer
 

intéressant, et merci d'avoir donné la solution ... ;)


---------------
NewsletTux - outil de mailing list en PHP MySQL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Headers et headers_sent (Résolu)

 

Sujets relatifs
[résolu] Warning: Call-time pass-by-reference has been deprecated[Résolu] Un bouquin en ASP ?
VB Lancer un .bat tout juste créé [Resolu]socket pas thread safe sous linux ? si en fait (resolu)
[RESOLU] erreur pendant le chargement un fichier XML[Résolu]Bouton <Précédent> <Suivant> Pagination
[Java] interférences entre OpenDialog et impression de jFrame (résolu)[RESOLU] Problème de requête et mysql_num_rows
pb avec le"Cannot modify header information - RESOLU"Cannot send session cache limiter - headers already sent" [Resolu]
Plus de sujets relatifs à : Headers et headers_sent (Résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR