Avatar billede blackunicorn Nybegynder
02. maj 2010 - 15:18 Der er 7 kommentarer og
1 løsning

problemer med header

Jeg får denne warning når jeg er logget ind..

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/mydomain.com/include/switch.php:42) in /home/www/mydomain.com/include/session.php on line 46

Er der nogen der har en idé til hvad der kan være galt ?

Her er min switch.php

<?php
function category_content()
{
    $page = $_GET["page"];
    $content = "";

    switch($page)
    {
case 'details':
    include('details.php');
    break;

case 'userinfo':
    include('userinfo.php');
    break;

case 'useredit':
    include('useredit.php');
    break;

case 'result':
    include('processform.php');
    break;

case 'mybasket':
    include('basket.php');
    break;

case 'basketupdate':
    include('basketupdate.php');
    break;

default:
    include('frontpage.php');

    }

    $content .= "\n";

    return $content;
}
?>
Avatar billede repox Seniormester
02. maj 2010 - 15:23 #1
Du har output (HTML, tomme linier, linieskift) inden du bruger header() funktionen.

Det må du ikke.
Avatar billede blackunicorn Nybegynder
02. maj 2010 - 18:17 #2
Det er i forbindelse med login jeg har header() funktionen..

<?php
if($session->logged_in){

// Sidens indhold //

} else {
header("Location: login.php");
}
?>

Er der en anden måde at gøre det på så ?
Avatar billede repox Seniormester
02. maj 2010 - 18:46 #3
Mja, gør således:
if(!$session->logged_in)
{
  header("Location: login.php");
  exit;
}


Det skal komme før alt andet output overhovedet.

Problemet er nok din placering af koden - også selvom du bruger mit forslag.

Du må flytte kontrollen til et tidligere sted på siderenderingen. Ved hjælp af det eksempel jeg har lavet minimerer du også kodeforbruget ved ikke at skulle lave else conditions.

F.eks.:
<?php
  include("session.php");
  $session = new sessionobject();
  if(!$session->logged_in)
  {
    header("Location: login.php");
    exit;
  }

  inlcude("html_start.php");
  blah blah...
?>
Avatar billede blackunicorn Nybegynder
02. maj 2010 - 20:48 #4
Har prøvet på følgende måde, men får bare en blank side, istedet for at blive omdirrigeret til login.php

<?php
  include("include/session.php");
  $session = new sessionobject();
  if(!$session->logged_in)
  {
    header("Location: login.php");
    exit;
  }

  include("start.php");
?>
Avatar billede blackunicorn Nybegynder
02. maj 2010 - 20:54 #5
Jeg har fjernet følgende kode fra index.php, og gemt den som start.php

Og har så fulgt ovenstående eksempel og gemt den som index.php

if($session->logged_in){

} else {
header("Location: login.php");
}
Avatar billede repox Seniormester
03. maj 2010 - 08:45 #6
Jaeh, det der med
$session = new sessionobject();
er vel ikke den korrekte måde at instansiere objektet på? Det var bare lidt pseudokode for at du skulle kunne implementere løsningsforslaget ud fra det.
Avatar billede blackunicorn Nybegynder
03. maj 2010 - 18:53 #7
Jeg fjernede linien $seesion = new sessionobject();
Og nu virker det. Tak for hjælpen endnu engang repox :)

læg et svar så du kan få dine point :)
Avatar billede repox Seniormester
03. maj 2010 - 18:55 #8
Det fik du her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester