Gå til innhold

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


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet

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 ;)

Skrevet (endret)

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

Skrevet

På alle sider hvor du skal bruke sessions må den session-start-saken ligge i toppen av det dokumentet. Dersom du ikke inkluderer noe logginn-php som bruker sessions i index.php skal du ikke ta med sessions øverst der.

Skrevet

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");

Skrevet
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?

Skrevet

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 ;)

Skrevet
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:

Skrevet

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?

Skrevet

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?

Skrevet

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

Skrevet

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

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