Gå til innhold

multiple headers, false virker ikke....


Anbefalte innlegg

feilmelding:

Warning: Cannot modify header information - headers already sent by (output started at /www/docs/stian/mime.php:30) in /www/docs/stian/style1/content/shoutbox.php on line 112

 

 

linje 28 og 29 i mime:

       header("Content-Type: $mime;charset=$charset");
       header("Vary: Accept");

 

linje 3 og 112 i shoutbox.php:

if ($file != "index") { header("Location: http://stian.bang.dot.no/", false); }
header("Location: $link");

 

jeg har prøvd å sette inn , false slik:

header("Location: $link", false);

 

men virka ikke som det skulle, fikk fortsatt feilmeldingen.

,false skulle force multiple headers...

Lenke til kommentar
Videoannonse
Annonse

Grunnen er at du kan ikke sende nye headers etter du har sendt headers.

Headers må alltid sende før du printer noe til siden.

 

Dette kan du løse med og sørge for å sende alle headers samtidig, eller, så kan du benytte deg av output buffering

 

<?php
//EKS 1 - Sende headers uten at du har printa til standard output funker
 //gjør noe med php her uten å printe noe på siden
 header("Cache-Control: no-store, no-cache, must-revalidate");
 header("Location: http://www.dittdomene.no/");
   exit;
?>

<?php
//EKS 2 - Sende headers etter du har printa til standard output funker ikke
 //sender en header før vi printer noe
 header("Cache-Control: no-store, no-cache, must-revalidate");

 //gjør noe med php her også printer vi noe til siden
 echo '10 * 10 = '. 10*10;
   //sender ennå en header
   header("Location: http://www.dittdomene.no/");
     exit;
?>

<?php
//EKS 3 - Sende headers etter du har printa til standard output som funker
 //ved og bruke output buffering, kan vi sende headers etter vi har printa noe.
 ob_start();

 //sender en header før vi har printa til standard output  
 header("Cache-Control: no-store, no-cache, must-revalidate");

//gjør noe med php her
 
 //printer noe
 echo '10 * 10 = '. 10*10;
   
 //sender en header etter vi har printa til standard output
   header("Location: http://www.dittdomene.no/");
     
 //sender bufferen tilbake
 ob_end_flush();
 exit;
?>

 

Så med

ob_start();

øverst på siden og

ob_end_flush();

nederst på siden vil du kunne sende headers etter du har printa noe på siden.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...