headers already sent
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>-</title>
<link href="style_layout.css" rel="stylesheet" type="text/css" />
</head>
<?php
include ('config.php');[/code]
Nu wil ik hier een session_start(); in hebben, ik dacht, deze zet ik helemaal bovenaan, nog voor het doctype, maar zelfs dat levert een foutmelding op, waar moet ik deze zetten?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>-</title>
<link href="style_layout.css" rel="stylesheet" type="text/css" />
</head>
<?php
include ('config.php');[/code]
Nu wil ik hier een session_start(); in hebben, ik dacht, deze zet ik helemaal bovenaan, nog voor het doctype, maar zelfs dat levert een foutmelding op, waar moet ik deze zetten?
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
Dan weet ik niet of session_start() de fout veroorzaakt. Heb je niet iets van een header() functe in config.php?
Headers already sent by geeft ook aan op welke lijn de output als is begonnen.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
//goed
?>
<?php
echo 'lol';
session_start();
//fout (let op de spatie voor <?php, en op de echo)
?>
session_start();
//goed
?>
<?php
echo 'lol';
session_start();
//fout (let op de spatie voor <?php, en op de echo)
?>
zelfs een spatie of enter is al output.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Adsupply - Affiliate Programma</title>
<link href="style_layout.css" rel="stylesheet" type="text/css" />
</head>
<?php
include ('config.php');[/code]
Dit levert deze foutmelding op:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/admin/domains/adsupply.nl/public_html/index.php:1) in /home/admin/domains/adsupply.nl/public_html/index.php on line 2
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Adsupply - Affiliate Programma</title>
<link href="style_layout.css" rel="stylesheet" type="text/css" />
</head>
<?php
include ('config.php');[/code]
Dit levert deze foutmelding op:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/admin/domains/adsupply.nl/public_html/index.php:1) in /home/admin/domains/adsupply.nl/public_html/index.php on line 2
erwin schreef op 05.05.2008 12:08:
Ob douw je in je vriedin, niet in php.
@topicstarter, blijkbaar heb je nog een teken voor session_start staan. Gebruik je dreamweaver ofzo? Plak het anders eens in kladblok, kijk of er nog een teken voor staat, haal het weg, en sla het op.
erwin schreef op 05.05.2008 12:08:
Nee! Dit is enkel een smerig lapmiddel, daar los je het eigenlijke probleem niet mee op! Bovendien is deze functie helemaal niet voor dit doeleinde bedoelt...Waarschijnlijk staan er voor de php openingstag nog enkele onzichtbare tekens in je document (google maar eens op 'utf-8 bom'). Probeer dus de code vanaf de PHP openingstag eens te kopieren naar een nieuw php bestand en dat uit te voeren. Wellicht dat het dan wel werkt.
@ Erwin: Jij bent er zeker zo eentje die ook de lampjes op je dashbord afplakt als je je eraan irriteerd?
nooit
nu niet
morgen niet
niet na de koffie
NOOIT
ob_start(); werkt anders wel die fout weg, ook als de fout niet kan worden gevonden. Deze functie zit niet voor niets nog steeds in PHP5 ;-)
Ook de reden dat Paris Hilton en Britney nog leven
Zorg dat je script goed in elkaar zit en dat er voor functies als header() en session_start() nog geen output verzonden is naar de browser, dan heb je dat hele probleem niet...
ps. Dat ob_start() nog steeds in PHP5 aanwezig is, is omdat het soms gewenst is om van output buffering gebruik te maken. Maar het oplossen van je headers already sent foutmeldingen is dus niet zo'n geval.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
niet zien != weg
Lekker dan, die output die je niet kunt zien, ik werk inderdaad met dreamweaver, dat wel.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sVar = 'Een variabele';
$sAndereVar = 'Een andere variabele';
// <-- Nutteloze spaties
session_start();
?>
$sVar = 'Een variabele';
$sAndereVar = 'Een andere variabele';
// <-- Nutteloze spaties
session_start();
?>
Niets in dit hele blok heeft namelijk output naar de browser tot gevolg. Zet je echter een spatie voor de php openingstag, tja dan loopt het hele zooitje in de soep ;-)
ps. Even voor de goede orde: ik loop nu natuurlijk niet te promoten om session_start() ergens op de helft van je script te zetten. Het is veel slimmer en overzichtelijker om dat gewoon aan het begin te houden!
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Ohja, klopt. :X Bedoelde inderdaad VOOR de <?php tag.. Maar toch is het wel raadselachtig zo'n soort situatie als die van Stefan van Iwaarden.
UTF-8 BOM die in het document aanwezig geweest zou kunnen zijn.
Je moet het probleem eerder tegengekomen zijn om het te herkennen, maar in dit soort situaties is het vaak vrij snel duidelijk: een foutloze PHP code geeft toch een headers already sent foutmelding ;-)
Het probleem wordt mogelijk veroorzaakt door de Je moet het probleem eerder tegengekomen zijn om het te herkennen, maar in dit soort situaties is het vaak vrij snel duidelijk: een foutloze PHP code geeft toch een headers already sent foutmelding ;-)
Stefan van Iwaarden schreef op 05.05.2008 19:29:
Lekker dan, die output die je niet kunt zien, ik werk inderdaad met dreamweaver, dat wel.
Dat heb ik wel eens vaker gezien....
Macromedia verteld zelf ook wat over BOM.