Output avant Header

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Output avant Header

par Rei Itchido » 05 juil. 2007, 13:45

Ok merci pour ces infos.

par sadeq » 05 juil. 2007, 13:36

Dans la doc, ceci est à lire:
Normalement, les données de session, de cookie ou d'en-tête HTTP (header) dans un script PHP doivent être envoyées avant que le script ne génère une quelconque sortie (echo, print, include HTML, bloc HTML,...). Si cela n'est pas possible dans votre application, vous pouvez activer ce que PHP appelle la "bufférisation de sortie", à l'aide de la variable output_buffering.

Lorsque la "bufférisation" de sortie est activée, PHP stocke le résultat de votre script dans une mémoire tampon spécifique et ne l'envoie que lorsqu'il en reçoit explicitement l'instruction. Cela vous permet d'envoyer des en-têtes HTTP et des données de cookie même au milieu ou à la fin de votre script. Sachez toutefois que cette technique diminue légèrement les performances.
output_buffering = Off

Source: http://www.zdnet.fr/builder/programmati ... 790,00.htm

par Rei Itchido » 05 juil. 2007, 13:25

Ok, merci Hubert :)

par Hubert Roksor » 05 juil. 2007, 12:49

Là comme ça je ne saurais pas dire, il n'y en a pas vraiment. Mais il n'y a pas vraiment non plus d'avantages donc j'aurais tendance à le laisser sur off pour "attrapper" les erreurs plus facilement.

par Rei Itchido » 05 juil. 2007, 11:56

Ha oui effectivement.
Il était à 0 dans le 2ème et à 4096 dans le 1er.

Quelles peuvent être les inconvenients à autoriser l'output_buffering?

par Hubert Roksor » 05 juil. 2007, 11:29

Il se pourrait que "output_buffering" soit sur "on" dans ton php.ini. Ça correspond à l'utilisation d'ob_start() et ça retarde l'envoi des données.

Output avant Header

par Rei Itchido » 05 juil. 2007, 11:12

Bonjour à tous,

Je viens de remarquer qqchose qui me perturbe un peu :)

Logiquement, rien ne doit être envoyé au browser avant un header sous peine d'avoir un beau
Cannot modify header information - headers already sent by ...
Je viens d'installer une relativement vieille version d'EasyPhp (la version 1.7 - qui contient Apache 1.3.27 avec PHP 4.3.3 - ) et qu'elle n'est pas ma surprise de pouvoir faire
<?php
echo "test";
header("Location: test.php");
?>
ou
<?php
echo "test";
session_start();
?>
En installant la dernière version d'EasyPhp (la version 1.8 avec Apache 1.3.33 et PHP 4.3.10), j'ai bien une erreur.

Je me demande ce qui fait que je n'ai pas de message d'erreur dans le 1er cas...
Une configuration spéciale d'Apache? De PHP?