Drôle d'entête

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
AllanTK
Salamandre
Messages : 38
Inscription : 06 août 2003, 23:43

Drôle d'entête

Message 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));
Dernière modification par AllanTK le 09 mai 2004, 20:17, modifié 5 fois.
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message 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:
AllanTK
Salamandre
Messages : 38
Inscription : 06 août 2003, 23:43

Message 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.
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message 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:
AllanTK
Salamandre
Messages : 38
Inscription : 06 août 2003, 23:43

Message 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
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message 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é :(
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités