Script Zine, webmaster help in English and Dutch
TUTORIALS SCRIPTS FORUM CONTACT
Tutorial pages:« 1 »
wmikke
Headers already sent - Posted on: 11-01-2005 at 16:58

Admin

Dit artikel gaat niet over de uitleg van een functie maar over de uitleg van een foutmelding. En dan wel over deze foutmelding:

Quote:
Warning: Cannot add header information - headers already sent by
(output started at index.php:3) in bestand.php on line 1


Wat betekend de foutmelding
De foutmelding zegt dat er output is geweest voor een bepaalde lijn. Op die lijn staat meestal een van deze functies:

setcookie();
header();
session_start();

Een voorbeeld van een fout script kan zijn:

Code
1
2
3
4
<?php 
echo "He, jij hoort hier niet, ik ga je nu redirecten!"
header("Location: redirect.html"); 
?> 




Onduidelijker kan ook, je kunt bijvoorbeeld per ongeluk een spatie of enter voor je php code hebben staan. Dit valt nauwelijks op, maar php ziet dit wel als output.

Code
1
2
3
<?php 
 session_start
() ; 
?> 




In beide gevallen hebben we iets naar de browser gestuurd voordat we er nog iets aan de headers willen veranderen.

De oplossing
Er zijn twee manieren om het probleem op te lossen. De beste manier is er voor te zorgen dat je geen gegevens verzend voor dat je de bovenstaande functies aanroept. Je moet er dus rekening mee houden dat dit eerst behandeld wordt en dan de rest pas. Het is een kleine aanpassing die toch wel een hele grote fout kan oplossen.

Voorbeeld:
Code
1
2
3
4
<?
session_start();
echo 
"En nu de rest van de pagina";
?>




Mogelijkheid twee is output buffering. Via output control kan je de output naar de browser vasthouden totdat je een bepaald commando geeft. Je kunt dan je hele script door de headers aanpassen zonder foutmeldingen te krijgen. Aan het einde stuur je alle inhoud van de buffer in een keer.
Voorbeeld:

Code
1
2
3
4
5
6
7
8
<?php 
ob_start
(); 
echo 
"Een stukje tekst"

setcookie("cookiename""cookiedata"); 

ob_end_flush(); 
?> 




Output buffering is eigenlijk meer het probleem omzeilen dan het eigenlijk oplossen. Het is dus zeker aan te raden om tijdens het scripten de eerste oplossing te gebruiken.
Tutorial pages:« 1 »

Printable version

 
 

© Script Zine 2003-2008 - Script Zine Design - Hosting by: Mihosnet
Recommend: IE 6