Warning: Cannot modify header information - headers already sent by

Tags:    php

Får følgende fejl efter at have tilføjet en header (location) til mit system ved oprettelse af brugere, som skulle sende nogle bestemte værdier tilbage hvis der er fejl i indtastningen. Systemet virkede fint før, men vil gerne have fejlene til at blive sendt tilbage til formen for at få det til at stå ud fra det pågældende input felt osv.

Fold kodeboks ind/udKode 


Her er den del der skal sende værdierne tilbage til formen:

Fold kodeboks ind/udKode 


indeholdet af $error variablerne bliver tildelt når fejl i indtastning opdages.

Der er ingen whitespaces.. i hvert fald ikke før og efter <?php og ?>



Håber nogen kan hjælpe



Header-funktionen kan ikke ændres efter du er begyndt at sende data ud til browseren (da den, som navnet antyder, ændrer i headeren af http svaret).

Du må derfor ikke have nogle kald til echo funktionen og lignende før du kalder header-funktionen.



En løsning kunne desuden også være at tilføje die(' '); under header()-funktionen, så den stopper eksekveringen.



En løsning kunne desuden også være at tilføje die(' '); under header()-funktionen, så den stopper eksekveringen.

Nej?

Headeren er det første som bliver sendt til browseren. Den indeholder forskellige parametre, der bliver brugt i kommunikationen mellem klient og server. Headeren er altid det første det bliver sendt! Parametrene i headeren (som f.eks. Location) kan kun ændres ved, så længe headeren ikke er sendt. I det samme øjeblik dit PHP script sender noget data til browseren (f.x. en ECHO eller et fejloutput) så bliver headeren sendt.

Hele fejlmeddelsen er baseret på, at der bliver forsøgt at pille ved en parameter i headeren. Men headeren er allerede sendt!

Så for, at vende tilbage til mit "Nej?" som jeg startede med. Så kan jeg ikke se hvordan, det skulle hjælpe at stoppe scriptet efter fejlen..



Indlæg senest redigeret d. 26.08.2010 10:00 af Bruger #955

Så for, at vende tilbage til mit "Nej?" som jeg startede med. Så kan jeg ikke se hvordan, det skulle hjælpe at stoppe scriptet efter fejlen..


Det vil ikke løse den konkrete fejl, men det kan bestemt være en god idé at stoppe scriptet, hvis en fejl er opstået.




Så for, at vende tilbage til mit "Nej?" som jeg startede med. Så kan jeg ikke se hvordan, det skulle hjælpe at stoppe scriptet efter fejlen..


Det vil ikke løse den konkrete fejl, men det kan bestemt være en god idé at stoppe scriptet, hvis en fejl er opstået.

Jeg er enig i, at det er en god idé. Måske jeg udtrykte mig lidt misvisende, men idéen med at stoppe scriptet blev indledt med: "En løsning kunne desuden også være.. ". Der er en smule vej imellem idé og løsning, især i dette tilfælde.
Jeg ville blot påpeje det, da det ikke hjælper ham med problemet. Tværtimod, skaber det måske forvirring?



Indlæg senest redigeret d. 26.08.2010 11:04 af Bruger #955
Du/i havde ret i det med echo's.. havde nogle unødvendige udskrifter i koden før headeren, som jeg skulle have slettet før det kunne fungere. Bl.a. også i menu.php, som jeg prøvede at udkommentere.
Problemet er dermed løst

Tak for hjælpen alle ;)



Stefan: Jeg har tidliger haft problemer med at den brokkede sig over at de allerede var afsendte, hvis ikke jeg fik den til at stoppe scriptet efter header-funktionen. Men det kan godt være, jeg bare har haft et andet problem på samme tid. Men alligevel tak for at du rettede mig.

Men uanset hvad er det stadig bedst at gøre. Hvis vi siger, et script er som følgende:

Fold kodeboks ind/udKode 


Man skulle tro, den redirectede med det samme, men det er ikke tilfeldet. Den laver (i hvert fald på nogle servere) resten først, hvorfor jeg altid sørger for at afslutte den, når den alligevel redirecter.




Den laver (i hvert fald på nogle servere) resten først, hvorfor jeg altid sørger for at afslutte den, når den alligevel redirecter.


Det håber jeg bestemt, at den gør på alle servere, for det er den korrekte opførsel.



t