-
Header Http ob_start()
Bonjour
Je developpe une appli en php 5 en respectant MVC2
Dans ma couche presentation je veux faire des redirections en utilisant
<? php
Header('Location: mapage.php?action=toto');
?>
J'ai une erreur d'execution " header deja envoyé"
Apres des recherches avec mon ami Google, j'ai trouve la fonction ob_start qui bufferise les entetes http jusqu'a l'appele de la fonction ob_end_flush()
Puis je mettre ob_start dans tous mes fichiers ?
Que se passe t'il si je met des ob_start ds plusieurs pages php distinctes sans jamais appeler ob_end_flush ?
Et quand dois je appeler ob_end_flush ?
exemple:
<? php
ob_start();
Header('Location: mapage.php?action=toto');
// si je met ob_end_flush ici la la redirection est deja effectue
?>
merci de vos reponses
-
L'avantage de la bufferisation c'est que tu traite tes informations dans le sens que tu veux avec des header, des session_start des set_cookie un peu partout. Et seulement à la fin tu flush.
Donc dans tous les fichiers qui affichent quelque chose oui tu peux mettre des ob_start (même dans les autres même si c'est pas très util)
à prioris chaque execution de page est distincte donc si tu n'appelle pas flush avant la fin tu perd les données bufferisée.
Et donc flush s'appelle en général à la fin. En tout cas après tout ce qui est header, set_cookie ou session_start.