Jeg har skrevet lidt om nogle måder at undgå det på på
http://kezze.dk/artikler.php.php (desværre offline i skrivende stund):
Problemer med headers:
Mange har spurgt mig hvad de skal gøre når de får denne fejl:
Warning: Cannot add header information - headers already sent by (output started at
fil.php:7) in fil.php on line 9
De har typisk lavet et dokument som dette:
<?php
printf("%s",pack("c*",(floor(30031/366)),sqrt(7056),bindec(1000110),octdec(115)));
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
?>
Der er to løsninger: Den pæne og den beskidte.
Den pæne løsning:
Sørg for at din header()-funktion kommer før alt output. Sørg generelt for at gøre
det på den måde!
<?php
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
printf("%s",pack("c*",(floor(30031/366)),sqrt(7056),bindec(1000110),octdec(115)));
?>
Den beskidte løsning:
Hvis du er i dårligt humør eller bare er en slamkoder kan du dog kigge lidt på
"output control"-funktionerne i PHP:
Det, som gør denne gruppe funktioner brugbare er, at de fx. kan få outputtet gemt i
serverens hukommelse og først blive sendt ud til klienten når siden er genereret helt
færdig.
Jeg vil dog advare mod overdrevent brug af disse funktioner, da de gør siderne ret
langsomme og det absolut ikke kan kategoriseres som pæn kode.
<?php
ob_start();
printf("%s",pack("c*",(floor(30031/366)),sqrt(7056),bindec(1000110),octdec(115)));
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
ob_end_flush();
?>
(denne metode er ikke værd at bruge tid på)
--
Mvh,
Kristian Risager Larsen -
http://kezze.dk - mailto:kezze@kezze.dk
"I have taken more good from alcohol than alcohol has taken from me." - W. Churchill