login  Naam:   Wachtwoord: 
Registreer je!
 Forum

header(); functie

Offline Dement - 30/08/2005 18:32
Avatar van DementNieuw lid ik heb een vraag over de header functie
ik heb een script waar als de cookie aangemaakt is je word door verzonde naar een andere pagina , het werkt wel maar dan komt er altijd zo van warning: cannot modify header information output already sent. ik heb al van alles gehoord dat hij bove alle output moet maar dan werkt het script toch niet 0_o

what's wrong ?

8 antwoorden

Gesponsorde links
Offline b4nkr0bz0r - 30/08/2005 18:34
Avatar van b4nkr0bz0r PHP gevorderde bovenaan
ob_start();
zetten
Offline Frederic - 30/08/2005 18:35
Avatar van Frederic PHP ver gevorderde En ook onze eigen SiteMasters heeft een FAQ
Misschien zelfs Google?
Offline b4nkr0bz0r - 30/08/2005 18:37
Avatar van b4nkr0bz0r PHP gevorderde chill Fréderic...
Offline Gerard - 30/08/2005 19:24
Avatar van Gerard Ouwe rakker Fréderic heeft groot gelijk, eerst het FAQ doorlezen en eventueel zelf zoeken. Daarna pas anderen gaan aanspreken met problemen.

Dit probleem staat namelijk letterlijk in het FAQ
Offline Frederic - 30/08/2005 21:24
Avatar van Frederic PHP ver gevorderde
Citaat:
chill Fréderic...
Zoek iemand die me ongelijk geeft met m'n reply .
De headers allready sent fout is een zoooveel voorkomende, die vraag zou eigenlijk gewoon niet meer gesteld mogen worden 
Offline Lemon - 30/08/2005 21:44 (laatste wijziging 30/08/2005 21:46)
Avatar van Lemon PHP expert Zorg ervoor dat je <? of <?php op de allereerste lijn staat van je pagina.

Dus ook geen html code of een lege lijn op die pagina.

die < moet letterlijk het eerste char zijn in uw document.

De reden waarom het niet werkt is heel simpel.

Stel je wilt naar een webpagina gaan. Dan stuur je headergegevens op met je request enz. Daarna stuurt de server ook header stuff terug, en daarna de data (de pagina inhoud).

de header() functie past de header aan die de server terugstuurd zodat je direct naar een andere pagina gaat of bv een filetype instelt.

Php parsed zijn pagina voordat de server headerdata terugstuurt. Hierdoor kan je dus header info aanpassen ;).

Maar als je echo't of html code hebt staan. Dan stuurt php die data al onmiddelijk door. En daardoor kan je geen nieuweheader data sturen naar de client.

Bankrobzor zijn oplossing is een 'oplossing' maar met een paar probleempjes ;)

met ob_start(); enable je een buffer. Alle html data wordt dan in die buffer geplaatst. Ook je echo's enz. En als de pagina geparsed is zal php eerst header info sturen, en daarna die buffer tonen.

Nadelen van dit is, je krijgt een serieuse memory overhead op je server.
En als je een lange tabel hebt van neem nu 50k rijen met data in. Dan kan het zijn dat de client een timeout krijgt omdat de client geen gegevens ontvangt van de server.


De beste methode is gewoon zorgen dat je geen enkele html toont of echo't voor je initiele scripts enz.

resource:
http://php.belnet.be/manual/nl/function.header.php
Offline Frederic - 31/08/2005 09:50
Avatar van Frederic PHP ver gevorderde aanvulling:
daarom kan je beter boven iedere pagina zetten:
  1. <?php
  2. function GaNaar('locatie'){
  3. header("location:".$locatie);
  4. } ?>

en in de code zelf doe je dan ipv de header:
  1. <?php
  2. if(blablabla){
  3. GaNaar('index.php?Pagina=error');
  4. } ?>
Offline nemesiskoen - 31/08/2005 12:41
Avatar van nemesiskoen Gouden medaille

PHP expert
Waar haal je die onzin vandaan?
Wat is het verschil of je nu de header functie aanroept, of een functie die exact hetzelfde doet. Een functie is gewoon een stuk code en heeft niets met output verzending en header verwijzing te maken. Deze wordt gewoon gebruikt als code en aangeroepen als code. En zal dus de header functie in werking treden bij AANROEPING en niet bij DECLARATIE van de functie.
Dit:
  1. <?php
  2. function outputOm($location){
  3. header("location:".$location);
  4. }
  5. ?>
  6. OUTPUT
  7. mamlalk,aezlmf,alfa
  8. <?php
  9. outputOm("http://www.sitemasters.be");
  10. ?>

geeft weldegelijke een headers allready sent error.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.263s