login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cannot modify header information (Opgelost)

Offline Abbas - 17/08/2009 13:11
Avatar van AbbasGouden medaille

Crew .NET
Hoi,

Let niet op de titel, ik weet dat er al ontelbare topics hierover zijn. Ik heb dan ook het forum al uitgespit maar ik kom er niet uit. Hier is mijn probleem:

Ik heb een index-pagina opgebouwd uit div-elementen en in een bepaalde div worden de pagina's geinclude. Eentje daarvan bevat een inlogformulier. Nu als ik het formulier invul en doorstuur krijg ik dus die meest gehate melding...

De structuur van mijn bestanden:

index.php
  1. <?php
  2. require_once 'functions.php';
  3. ?>
  4. <!DOCTYPE... >
  5. <html ... >
  6. ...
  7. Verschillende divjes
  8. ...
  9. <div>
  10. <?php
  11. require("eenPagina.php");
  12. //bijvoorbeeld die pagina met formulier
  13. ?>
  14. </div>
  15. </body>
  16. </html>

eenPagina.php
  1. <form>
  2. <?php
  3. if(POST en submitKnop)
  4. {
  5. //aanroep inlog-functie in "functions.php"
  6. if(!Correct)
  7. //foutmelding
  8. else
  9. header("Location: eenPagina.php");
  10. }
  11. if(POST en logUitKnop)
  12. //aanroep uitlog-functie in "functions.php"
  13.  
  14. if(!Ingelogd)
  15. //Formulier
  16. else
  17. //Uitlogknop
  18. ?>
  19. </form>

functions.php
  1. function Inloggen(parameters)
  2. {
  3. //Controles en dergelijke en DB-werk
  4. if(allesInOrde)
  5. {
  6. setcookie("blabla", "someValue");
  7. return true;
  8. }
  9. else
  10. {
  11. return false;
  12. }
  13. }
  14.  
  15. function IsIngelogd()
  16. {
  17. if(cookieInOrdeEnAndereZooi)
  18. return true;
  19. return false;
  20. }

De foutmeldingen:

Warning: Cannot modify header information - headers already sent by (output started at C:\Mapje\index.php:17) in C:\Mapje\functions.php on line 88
==> setcookie("blabla", "someValue");

Warning: Cannot modify header information - headers already sent by (output started at C:\Users\titjes\Desktop\Blog\Blog\index.php:17) in C:\Users\titjes\Desktop\Blog\Blog\admin.php on line 14
==> header("Location: eenPagina.php");

Ik zie echt nergens iets wat ik verkeerd doe. Alvast vriendelijk bedankt!
titjes

5 antwoorden

Gesponsorde links
Offline Koen - 17/08/2009 13:18
Avatar van Koen PHP expert Je weet toch ook dat je header information altijd moet aanpassen voor enige HTML output?  Je zal je pagina structuur moeten aanpassen zodanig dat je die headers aanpast voor de html output 

Je kan ook output buffering gebruiken, maar dat is ten strengste af teraden, zet ob_start(); bovenaan je pagina.
Offline Stijn - 17/08/2009 13:21
Avatar van Stijn PHP expert Zet onder je header(...); exit();. Dat van die setcookie() kan je oftewel oplossen met ob_start(); techniek. Waar gebruik je die functie Inloggen()?
Offline Abbas - 17/08/2009 13:35 (laatste wijziging 17/08/2009 13:36)
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
Je zal je pagina structuur moeten aanpassen zodanig dat je die headers aanpast voor de html output
Heb je enig idee hoe dan? Ik ben niet echt zo'n PHP-dude zoals je wel weet.. 
Citaat:
Zet onder je header(...); exit();
Heb ik eronder staan in m'n echte code. De functie Inloggen() wordt aangeroepen in "eenPagina.php". Staat in de gegeven code hoor! 

En ob_start() wil ik niet gebruiken omdat het een lelijke bastaard-oplossing is.. 
Offline Stijn - 17/08/2009 13:40
Avatar van Stijn PHP expert Jij bent ook lelijk maar daar zeggen wij toch ook niets over . Je hebt meerdere oplossingen.

Oplossing 1: Je verwerkt je formulier bovenaan je doctype en zorgt dat header en cookies gezet zijn voor je met HTML output naar de gebruiker slingert. Bij PHP moet je nog ietsje nadenken hé .

Oplossing 2: Je stopt die verwerking van je formulier in een aparte PHP file zonder HTML output en als het formulier goed verwerkt is, redirect je naar een succes pagina en bij fout naar een fout pagina hé.

Uw koning sprak 
Offline Abbas - 17/08/2009 14:12
Avatar van Abbas Gouden medaille

Crew .NET
Ok, ik heb je tweede oplossing gebruikt en het werkt nu. De verwerking van het formulier gebeurt nu in de functions.php en daar wordt alles van headers en cookies en stuff gedaan en geen fouten meer! Heel erg bedankt koningin
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.344s