Nare sessie-error
ik dacht: alles werkt, ik ga van de gratis naar de betalende server, deze zijn geheel afzonderlijke servers van elkaar, op de gratis server werkte alles volledig, maar nu, op de betalende versie, ok, alles werkt, maar volgend bericht verschijnt op elke pagina:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ankelpq61/domains/horse-utopia.be/public_html/beginpaard.php:15) in /home/ankelpq61/domains/horse-utopia.be/public_html/beginpaard.php on line 29
Op lijn 29 staat gewoon: session_start();
Is dit een beperking van de server?
Kan ik dit oplossen?
Deze vraag zien we maandelijks echt tientallen keren verschijnen. Dit is zover de meest bekende PHP error die er bestaat, als je even op Google had gekeken had je je oplossing in no-time gevonden.
Het probleem is dat er al data is verzonden naar de client. De server kan dit maar 1x doen. De error zegt eigenlijk dat je data wil verzenden, terwijl dat al is gebeurt en dat het dus niet opnieuw kan. Je kunt ook session_start() altijd het beste bovenaan in de code zetten, voor mijn part op lijn 1.
Kristof Hendrickx op 04/09/2013 14:08:23:
... ik dacht: alles werkt, ik ga van de gratis naar de betalende server, ...
Voor alle duidelijkheid: die nieuwe server heeft gelijk.
Als die gratis server daar geen warnings voor stuurde, deed die server zijn werk niet.
Dus, als je ons vraagt: is er een truukje waardoor - zonder veel te wijzigen - alles terug werkt zonder foutmeldingen, zeggen we "liever niet".
Je zal de structuur van je .php bestanden totaal moeten omgooien.
Daar willen we mee helpen.
Het zal wat werk vergen.
Als je dat ziet zitten: toon ons de code, en we leggen het uit.
Kris Peeters op 04/09/2013 14:42:02:
Dus, als je ons vraagt: is er een truukje waardoor - zonder veel te wijzigen - alles terug werkt zonder foutmeldingen, zeggen we "liever niet".
Liever niet, inderdaad. Maar voor een truc waarmee je niet twee maar drie vliegen in één klap slaat, mogen we toch wel een uitzondering maken ;)
Begin het script met:
Gewijzigd op 04/09/2013 14:50:32 door Ward van der Put
Ik blijf bij mijn stelling
Het gaat natuurlijk ook om de logische volgorde in je programma:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
session_start(); // gebruik je sessions? dan is het nu tijd om deze te initialiseren
include 'library.php'; // als eerste include je de bibliotheken daarin staat geen enkele echo!
// plaats hier je php code
$text = 'Hallo wereld';
// als laatste komt je output:
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<p><?php echo $text; ?></p>
</body>
</html>
session_start(); // gebruik je sessions? dan is het nu tijd om deze te initialiseren
include 'library.php'; // als eerste include je de bibliotheken daarin staat geen enkele echo!
// plaats hier je php code
$text = 'Hallo wereld';
// als laatste komt je output:
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<p><?php echo $text; ?></p>
</body>
</html>
Gewijzigd op 04/09/2013 15:57:06 door Frank Nietbelangrijk
Ik denk niet dat bibliotheken bij mijn website van toepassing zijn, ik moet namelijk regelmatig wat op de uitvoer zetten.
Ik had wel gelezen volgens tutorials dat bij de sessie aanmaken een session_start() moest, en als je deze op een andere pagina aan wil halen deze opnieuw moet beginnen met session_start()
Deze pagina's zijn volledig afzonderlijk van elkaar.
Ik vind ook maar 1 maal in dat document session_start() (zoekfunctie gebruikt, handmatig gezocht, nog iemand anders laten zoeken: niets
Kristof Hendrickx op 04/09/2013 16:23:43:
Ik vond dit vooral raar omdat het op de gratis server er niet was, maar wil dit zeker op een correcte manier oplossen.
Dat zegt dan meer over die gratis server...
Kristof Hendrickx op 04/09/2013 16:23:43:
Ik vind ook maar 1 maal in dat document session_start() (zoekfunctie gebruikt, handmatig gezocht, nog iemand anders laten zoeken: niets
Goed lezen. De foutmelding heeft NIETS te maken met het aantal keren session_start op een pagina.
Harry hogeveen op 04/09/2013 14:20:14:
Het probleem is dat er al data is verzonden naar de client. De server kan dit maar 1x doen. De error zegt eigenlijk dat je data wil verzenden, terwijl dat al is gebeurt en dat het dus niet opnieuw kan. Je kunt ook session_start() altijd het beste bovenaan in de code zetten, voor mijn part op lijn 1.
Kan dit van een externe pagina zijn dat er data is verzonden?
bij het inloggen word namelijk data in de sessie gezet waarbij dan deze moet uitgelezen worden op deze pagina's.
Voor de rest zit er een post-functie in de login, maar dit draagt niet over naar een andere pagina dan de loginpagina.
Kristof Hendrickx op 04/09/2013 17:05:30:
buiten 2 include's waar html bestanden ge-include worden staat in principe de session_start() op de eerste regel, deze staat namelijk als eerste regels van het php-gedeelte.
Het staat wel of niet op de 1e regel. In principe kan niet.
Je include html bestanden. Grote kans dat je (daarmee dus) output genereert.
Kris geeft al aan dat je moet kijken naar de structuur van de pagina's.
Gewijzigd op 04/09/2013 17:20:32 door Victor G
de site is niet volledig php, ook html, daardoor begin ik al met lijnen html, standaardlijnen, waartussen 2* een include staat met ook weer enkel html, dit heb ik nu nogmaals gecontroleert, de eerste echte php is dus waar session_start() staat.
Ik denk niet dat je met html ervoor kan zorgen dat die waarschuwing erop komt.
Als je nu bedoelt: include opzich genereert output (de code: include()), dan ga ik wel met je akkoord, alhoewel ik hier mijn twijfels aan heb.
Voor mij is het niet: ok, ik zet het regeltje daar en het werkt, voor mij is het: ik zet het regeltje daar want het moet voor dat staan omwille van dat.
Ik stel jullie hulp zeker op prijs, ik heb nu bovenaan de pagina een aangemaakt en dit blijkt te werken, maar kunnen jullie nu uitleggen hoe dit komt?
Betekent dit dat een include iets uitstuurt waardoor de sessie denkt dat er al iets is uitgestuurd, er staat niets php in de include bestanden.
Gewijzigd op 04/09/2013 17:50:01 door Kristof Hendrickx
Kristof Hendrickx op 04/09/2013 17:43:26:
Ik denk niet dat je met html ervoor kan zorgen dat die waarschuwing erop komt.
Quote:
Ik word hier zo moe van. Heb je de opmerkingen hierboven gelezen? Heb je met Google gezocht wat de foutmelding betekent én waardoor die wordt veroorzaakt?
Zoals Kris al aangaf: je zult moeten kijken naar de structuur van je pagina's.
Betekent eerst PHP en dan output (met HTML (in combinatie met variabelen vanuit PHP)).
De manier waarop jij het doet is niet goed.
Maar ach, het werkt.
Kristof Hendrickx op 04/09/2013 17:43:26:
Voor mij is het niet: ok, ik zet het regeltje daar en het werkt, voor mij is het: ik zet het regeltje daar want het moet voor dat staan omwille van dat.
Zoals Kris al aangaf: je zult moeten kijken naar de structuur van je pagina's.
Betekent eerst PHP en dan output (met HTML (in combinatie met variabelen vanuit PHP)).
De manier waarop jij het doet is niet goed.
Maar ach, het werkt.
Obelix en Idefix op 04/09/2013 17:57:41:
Kristof Hendrickx op 04/09/2013 17:43:26:
Ik denk niet dat je met html ervoor kan zorgen dat die waarschuwing erop komt.
Dit vind ik om volgende reden onhandig: dan staat alle output in het rood en alle html-code, synwrite ziet dit niet als code als dit in een echo staat.
Vandaar dat ik de standaard dingen op deze manier erin zet.
Jullie zeggen: google it, maar denk eens na over: mss heeft hij gezocht en na de uitleg die hij vond nog geen verklaring gevonden, want zo is het!
Aangezien het niets anders dan html is dat ervoor staat kan dit toch niets te maken hebben met de fout dacht ik?
Ik vraag nogmaals: kan dit met de includes te maken hebben?
Ik heb de indruk dat jullie gewoon zelf het antwoord niet hebben, maar wees dan eerlijk ...
Nog een reden om de structuur niet al te veel aan te passen: het gaat niet om 1 pagina
Quote:
Ik word hier zo moe van. Heb je de opmerkingen hierboven gelezen? Heb je met Google gezocht wat de foutmelding betekent én waardoor die wordt veroorzaakt?
Zoals Kris al aangaf: je zult moeten kijken naar de structuur van je pagina's.
Betekent eerst PHP en dan output (met HTML (in combinatie met variabelen vanuit PHP)).
De manier waarop jij het doet is niet goed.
Maar ach, het werkt.
Kristof Hendrickx op 04/09/2013 17:43:26:
Voor mij is het niet: ok, ik zet het regeltje daar en het werkt, voor mij is het: ik zet het regeltje daar want het moet voor dat staan omwille van dat.
Zoals Kris al aangaf: je zult moeten kijken naar de structuur van je pagina's.
Betekent eerst PHP en dan output (met HTML (in combinatie met variabelen vanuit PHP)).
De manier waarop jij het doet is niet goed.
Maar ach, het werkt.
Dit vind ik om volgende reden onhandig: dan staat alle output in het rood en alle html-code, synwrite ziet dit niet als code als dit in een echo staat.
Vandaar dat ik de standaard dingen op deze manier erin zet.
Jullie zeggen: google it, maar denk eens na over: mss heeft hij gezocht en na de uitleg die hij vond nog geen verklaring gevonden, want zo is het!
Aangezien het niets anders dan html is dat ervoor staat kan dit toch niets te maken hebben met de fout dacht ik?
Ik vraag nogmaals: kan dit met de includes te maken hebben?
Ik heb de indruk dat jullie gewoon zelf het antwoord niet hebben, maar wees dan eerlijk ...
Nog een reden om de structuur niet al te veel aan te passen: het gaat niet om 1 pagina
Kristof Hendrickx op 04/09/2013 18:09:39:
Dit vind ik om volgende reden onhandig: dan staat alle output in het rood en alle html-code, synwrite ziet dit niet als code als dit in een echo staat.
Vandaar dat ik de standaard dingen op deze manier erin zet.
Vandaar dat ik de standaard dingen op deze manier erin zet.
Geen idee wat je hiermee precies wilt zeggen.
Als je alle HTML-code in een echo zet; kan ik je afraden. Is niet nodig.
Houdt vooral vol met het opbouwen volgens een onlogische structuur. Vroeg of laat (eigenlijk nu dus al) kom je jezelf wel tegen.
Kristof Hendrickx op 04/09/2013 18:09:39:
Jullie zeggen: google it, maar denk eens na over: mss heeft hij gezocht en na de uitleg die hij vond nog geen verklaring gevonden, want zo is het!
Aangezien het niets anders dan html is dat ervoor staat kan dit toch niets te maken hebben met de fout dacht ik?
Aangezien het niets anders dan html is dat ervoor staat kan dit toch niets te maken hebben met de fout dacht ik?
Kennelijk begrijp je niet wat met 'output' wordt bedoeld.......
Kristof Hendrickx op 04/09/2013 18:09:39:
Ja en nee. Hangt er van af wat er in de includes gebeurt. Jij hebt er HTML in staan. Hierboven staat reeds dat dat de oorzaak zal zijn (en in de resultaten van Google staat dat ongetwijfeld ook).Ik vraag nogmaals: kan dit met de includes te maken hebben?
Kristof Hendrickx op 04/09/2013 18:09:39:
Ik heb de indruk dat jullie gewoon zelf het antwoord niet hebben, maar wees dan eerlijk ...
Vooral zo doorgaan.
Kristof Hendrickx op 04/09/2013 18:09:39:
Nog een reden om de structuur niet al te veel aan te passen: het gaat niet om 1 pagina
Je bent net begonnen met scripten. Leer het jezelf aub goed aan. Beter ten halve gekeerd dan ten hele gedwaald. En hanteer niet het idee: 'ach het werkt, dus het zal wel goed zijn'. Echt, vroeg of laat breekt het je op.
De keuze is aan jou.