Page 1 sur 1

Drôle d'entête

Publié : 09 mai 2004, 17:58
par AllanTK
Je développe sous PHP en utilisant quelques particularités:

Code : Tout sélectionner

<?php
ob_start('callback'); // Fonction de callback

?><h1>Hello World</h1>
<p>Contenu divers, sans balise d'entete (html, head, body).</p>
<p>Texte....</p>

<?php
function callback($buffer)
{
  /* divers traitement sur les donnés
       dont l'ajout des balises html, head, body
  [...]
  */

  $buffer = ob_gzhandler($buffer,9);

  return $buffer;
}

ob_end_flush();
?>
Quand je regarde mes headers avec LiveHTTP Header, je trouve des entêtes bizarres que je n'ai jamais envoyé avec header(), les connaissez-vous ?
Transfer-Encoding: chunked
X-Pad: avoid browser bug
Sinon, je ne reçois aucun contenu lorsque je place ceci après la compression du $buffer:

Code : Tout sélectionner

header('Content-Length: '.strlen($buffer));

Publié : 09 mai 2004, 18:22
par chBok
Décris ce que tu souhaites faire, car là, tu as l'air d'employer des chemins détournés. Tu souhaites contrôler l'envoi de pages compressées ? muummm :roll:

Publié : 09 mai 2004, 20:11
par AllanTK
La fonction callback() ajoute les balises <html> <head> et <body> au contenu stocké dans le buffer et à la fin compressent. Cette fonction est lancé lors du ob_end_flush() qui se trouve tout à la fin de la page php (due à ob_start('callback')) .
Mes pages s'affichent correctement mais je reçois des entêtes bizarres :-/.

EDIT: J'ai modifié quelques lignes de mon code plus haut pour que ça paraisse plus clair.

Publié : 09 mai 2004, 22:59
par chBok
ok, je connais les fonctions ob_start(), etc. C'est pratique dans certains cas, mais souvent on peut s'en passer.
As tu essayé de "forcer" l'envoi de l'entête avec un header () ?
Sinon, pourquoi ne pas faire plus simple comme :

Code : Tout sélectionner

<?php
ob_start();
echo "blabla";
...
$buffer = ob_get_contents(); //récupère le contenu sans html body
ob_end_clean(); //plus besoin ;)

echo "..."; //affichage des entêtes html
echo $buffer;
echo "..."; //affichage des pieds de pages
?>
Enfin, si c'est applicable à ton problème. :wink:

Publié : 10 mai 2004, 07:24
par AllanTK

Code : Tout sélectionner

<?php
ob_start();
echo "blabla";
...
$buffer = ob_get_contents(); //récupère le contenu sans html body
ob_end_clean(); //plus besoin ;)

echo "..."; //affichage des entêtes html
echo $buffer;
echo "..."; //affichage des pieds de pages
?>
Je ne peux pas appliquer cette structure car en fait la fonction callback ne se contente pas d'ajouter des balises mais aussi avec le contenu qu'elle reçoit, elle pourrait le metttre en cache, utiliser les etags, etc... (pour l'instant ce n'est pas fait, c'est pour ça que je n'ai pas montré le code).

En fait, je cherche surtout à comprendre c'est pourquoi ces entêtes byzarres interviennent, et j'agirais en conséquence :).

J'ai trouvé un lien en allemand pour le X-pAD, mais vu que ma 2e langue est l'espagnol :( :

VO: http://selfforum.teamone.de/archiv/2002/7/16695/
VF Google: http://translate.google.com/translate?u ... uage_tools

Publié : 10 mai 2004, 12:02
par chBok
D'accord, tu as besoin de la fonction callback pour faire tes traitements.
Je ne pourrais pas t'aider sur ces entêtes. Je n'ai jamais constaté le problème sur les scripts que j'ai pu réalisé.

désolé :(