Beste mensen,

Ik heb een vraagje op de functies ob_start() en session_start(). Ik heb begrepen dat deze aan het begin van een script moeten staan. Maar moeten ze echt als allereerste staan, of moeten ze voor er enige "html" output wordt gebruikt staan.

Dat wil zeggen: in heb een bestand index.php, daarin wil ik alleen "<?php require algemeen.php"; ?> in zetten en dan algemeen.php starten met:
<?php ob_start(); session_start(); ... etc ... ?>

Gaat dat werken?

Dank voor een reactie,

J.
Probleem is, soms blijkt pas tijdens de dynamische opbouw van een pagina hoe die pagina er precies uit gaat zien. Daarbij zou een "lager niveau" binnen zo'n pagina van invloed kunnen zijn op de samenstelling van een "hoger niveau" van eenzelfde pagina. Dit zorgt voor wat kip-ei problemen. Een slim gebruik van output buffering kan hier uitkomst bieden. Ik zie ook niet helemaal hoe je hier omheen kunt indien je site een hiƫrarchische interne opbouw heeft tenzij je alles "vooruit" uitrekent en/of (redundant) opslaat.

Het gebruik van output buffering zou echter geen carte blanche moeten zijn om al je code maar door elkaar te gooien.

"Kan het kwaad" is niet echt een handige vraag. Output buffering is een middel, geen doel. Je slikt toch ook geen paracetamol als je geen hoofdpijn hebt? Je gebruikt het als je het nodig hebt en vermijd het als je het niet nodig hebt. En je moet nogmaals kunnen onderbouwen waarom. En niet "anders valt mijn applicatie uit elkaar" :).

Als je applicatie simpelweg niet werkt als je ob_start() achterwege laat en je weet niet precies waarom dan is dit waarschijnlijk omdat je dingen op de verkeerde plaats hebt staan en niet omdat de architectuur van je applicatie deze flexibiliteit (naar aanleiding van een overwogen en verdedigbaar plan) nodig heeft.
@Thomas,

Dank voor je reactie. Het probleem zit hem - wat ik me van een paar jaar geleden kan herinneren - in een gastenboek en een contactformulier dat ik heb overgenomen van elders en in mijn pagina heb proberen te integreren. Het is dus een medicijn tegen hoofdpijn en niet omdat ik het zo leuk vond.
Ik meen me te herinneren dat een ob_start() en ob_end_flush() gebruikt werden om dat er een gruwelije bug in de begin versie van php5 zat. Je komt het nog wel tegen op de diverse sites. Oplossing errst het php verhaal & daarna het html verhaal.

Reageren