Gå til innhold

Problemer med "Header already sent" [Løst]


Anbefalte innlegg

Jeg vet hva i prinsippet "Header already sent" betyr for noe. Men jeg lurer på om siden må struktureres på spesiell måte for å unngå problemet?

 

Siden min består av index.php hvor jeg inkluderer banner, meny, innhold osv. Og da jeg vil at mine passord beskyttet sider skal bli inkludert i "innhold div'n", men som sagt så får jeg bare denne feilmeldingen.

 

 

Noen som har noen tips, eller kan peke meg i riktig retning?

 

 

Edit: Skriveleif

Endret av IRRupt
Lenke til kommentar
Videoannonse
Annonse

Litt kode kan jo hjelpe, men jeg tror feilene kanskje kan ligge i at du har for mye kode i fila du inkluderer. I include skal du bare ha koden som ligger mellom <body> & </body> taggene, altså ikke <head> elns..

 

Det høres ut som om at den prøver å sende metainformasjon to ganger, (tenker da på doctype, mimetype, xml lang, meta tagger, pluss annet snadder)

Endret av Zethyr
Lenke til kommentar

Bruker du kanskje sessions? Du må i så fall skriv "session_start" som den absolutt øverste linja i dokumentet ditt, med unntakk av DocType, som jo egentlig ikke er en del av dokumentet, på en måte. Jeg har iallefall fått den erroren de gangene jeg har glemt det ;)

Lenke til kommentar

altså, hvis man får "header already sendt" så tyder det på at noe som skal ligge først ikke gjør det. Ting som session må komme FØR du sender ut noen form for html.

 

Edit: det betyr derimot ikke at det må være på første linje. Tror jeg iallfall...

Endret av Atpn
Lenke til kommentar
Det høres ut som om at den prøver å sende metainformasjon to ganger, (tenker da på doctype, mimetype, xml lang, meta tagger, pluss annet snadder)

 

Det var det jeg tenkte først, men det er altså ikke :no:

 

Bruker du kanskje sessions? Du må i så fall skriv "session_start" som den absolutt øverste linja i dokumentet ditt, med unntakk av DocType, som jo egentlig ikke er en del av dokumentet, på en måte. Jeg har iallefall fått den erroren de gangene jeg har glemt det 

 

Skal jeg ha "session_start" øverst i index.php også? Har kun brukt det passordbeskyttede siden så langt.

Lenke til kommentar
Du kan bruke ob buffering. Da kan du velge selv når alt skal bli sendt ut osv ;) Kan være en løsning om du feks bruker mye header("location: blalba");

Det har jeg lest om. Men vil ikke siden ta lengre tid å laste dersom jeg bruker ob buffering?

Lenke til kommentar

Nei, når siden lastes er php alt ferdig med sin del.

 

Med ob buffering så legger den alt som går i en buffer, før det sendes til browseren. Dette gjør slik at du selv kan tømme, slette og starte den på nytt, alt etter hva du vil skal vises på siden ;)

Lenke til kommentar
Nei, når siden lastes er php alt ferdig med sin del.

 

Med ob buffering så legger den alt som går i en buffer, før det sendes til browseren. Dette gjør slik at du selv kan tømme, slette og starte den på nytt, alt etter hva du vil skal vises på siden ;)

Ok da skal jeg gjøre et forsøk :thumbup:

Lenke til kommentar

Ok da funker innloggingen sånn noenlunde. Hvis jeg skriver full URL til en passordbeskyttet side så funker det, men menyen min funker ikke.

 

I det jeg skal kalle opp .../index.php?side=gallery så funker det rett og slett ikke. Jeg havner tilbake på index.php.

 

Noen som aner grunnen til det?

Lenke til kommentar

Det er koden nedenfor benytter i div'n som jeg vil skal endre innhold:

 

<?PHP

if($side == "index") {

    include("index.php");

}

else if($side == "") {

    include("layout/news.php");

}

 

Er det noen som kan hjelpe en stakkars?

Lenke til kommentar

Fra manualen:

/* verify the validity of GET var page
if not set, do a default case        */
if(isset($HTTP_GET_VARS['page']))
{
$p = $HTTP_GET_VARS['page'];
}
else
{
$p = 'index';
}

switch($p)
{
case 'index':
require('welcome.php');
break;

case 'news':
require('news.php');
break;

case 'what you want':
require('the file you want');
break;

default:
exit('Wrong parameter for file inclusion');
}

?>

 

En elegant måte å gjøre det på synes jeg.

 

-torms

Lenke til kommentar

Om du ikke har definert $side som $_GET['side'] eller du ikke har på register_globals så vil ikke scripetet virke.

 

switch ($_GET['side']) {

case 'nyheter':

include './nyheter.php';

break;

/* ny case for hver side */

default:

include './index.php'; // eller whatever

}

[code]

 

burde gjøre susen ;)

 

PS: utestet

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...