Permalänk
Medlem

Inställningar i PHP?

God kväll (Eller kanske natt?).

Finns det möjligtvis någon inställning i PHP som gör att man kan använda header() även om det finns output före?

All hjälp uppskattas.

MvH/Boerworz

Permalänk
Medlem
Permalänk
Medlem

Ah, tackar. Dock förstod jag inte så mycket.. Skulle du kunna förklara vad jag skall göra för att ändra inställningen?

MvH/Boerworz

Permalänk
Medlem

ob_start(); // din kod ob_flush();

Output sker inte innan ob_flush()

Permalänk
Medlem

Aha, så det finns ingen inställning som gör så att den "ignorerar" output bara? Så att man slipper ändra i själva koden?

MvH/Boerworz

Permalänk
Medlem

ignorera output? Output är ju innehållet på webbsidan... Vill du inte ha någon output så ta bort koden som genererar den - men då får du ingen webbsida.

Annars så är det output buffering som är lösningen... Eller smart upplägg på koden, men som nybörjare så ska det vara lite kaos, det reder ut sig med åren.

Men för att vara exakt: Nej, du kan ALDRIG skicka en header efter att output har matats iväg, för då är alla headers redan skickade och det är liksom kört. Headers är bland annat filinformation som alltid skickas innan innehållet så att mottagaren (en webbläsare i dett fall) fattar vad det är som ska tas emot. Därför kan innehåll aldrig komma föra en header.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Boerworz
Aha, så det finns ingen inställning som gör så att den "ignorerar" output bara? Så att man slipper ändra i själva koden?

MvH/Boerworz

Det var precis det jag visade nyss. Lägg till ob_start() i början av din kod och ob_flush() i slutet så kan du skicka header med outputen som sker vid ob_flush()... jag vet inte vad du vill åstadkomma om du inte förstår.

Permalänk
Medlem

Du kan helt enkelt sätta "output_buffering = On" i php.ini så buffrar den alla filer.

Permalänk
Medlem

Tjofras, Precis vad jag sökte.

Ni andra, tackar för er hjälp också. Jag har skrivit min kod så att det inte är någon output före headern, dock råkade jag ut för ett problem när jag bytte till Mac från PC.
Mina filer var sparade i ISO-8859-1 (Eller något liknande) på PCn, vilket resulterade i att när jag flyttade de till Macen så blev alla åäö konstiga, så jag var tvungen att spara om de i UTF-8.
Och på grund av det här så blev det ett osynligt (Man ser det om man skriver ut filens innehåll med kod) tecken som inte går att ta bort. Det här tecknet räknas som output, vilket resulterar i att mina headers inte fungerar.
Det är som att filen har blivit "infekterad" med tecknet, för det enda sättet att "ta bort" det, är att flytta koden till en ny fil och radera den gamla filen.
Blev kanske lite luddigt alltihopa..

Det här var den bästa lösningen jag kan komma på tills jag har ändrat alla filer.. Men just nu vill jag bara fortsätta med hemsidan.

MvH/Boerworz

Permalänk

Det tecknet du får ut är BOM (Byte Order Mark) som vissa editorer lägger till i filer som är sparade i just UTF. Detta bör man stänga av i sin editor för att slippa problem i framtiden. Om du lyckas stänga av det, testa spara om filen i den editorn, med lite tur så är det såpass smart att den strippar bort bom'en så du slipper skapa nya filer och flytta över källkoden.