Avatar billede oergaard Nybegynder
15. maj 2008 - 09:38 Der er 9 kommentarer og
1 løsning

Hvad er er galdt med denne SWITCH sætning?

I min index.php har jeg en switch switch sætning, som i bund og grund skal udvælge hvad der skal vises i browseren.

I grove træk ser den ud som følgende:
------------------------
session_start();

if(!isset($_SESSION['page'])) { $_SESSION['page'] = ''; }

switch($_SESSION['page']) {
  case 'frontpage':
    echo 'forside';
    break;
  default:
    session_destroy();
    include('login.php');
    break; }
------------------------

I login.php sætter jeg $_SESSION['page'] til 'frontpage' og redirecter til index.php. På trods af dette, afvikles default.

Hvis jeg fjerner linjen session_destroy(); virker koden perfekt. Men idet default også skal bruges når man logger af, er der behov for session_destroy();.

Hvad gør jeg forkert?
Avatar billede oergaard Nybegynder
15. maj 2008 - 09:46 #1
Hvis jeg sætningen sætningen som følgende virker det også perfekt, men forstår stadig ikke hvorfor ovenstående ikke virker.

------------------------
switch($_SESSION['page']) {
  case 'frontpage':
    echo 'forside';
    break;
  case 'logoff':
    session_destroy();
    include('login.php');
    break;
  default:
    include('login.php');
    break; }
------------------------
Avatar billede w13 Novice
15. maj 2008 - 09:46 #2
Hvad udskrives der, hvis du udskriver $_SESSION['page'] ?
Avatar billede oergaard Nybegynder
15. maj 2008 - 10:07 #3
Når session_destroy(); er med i deafult, udskrives der ikke noget. Hvis den ikke er med i default udskrives der: "frontpage".
Avatar billede olebole Juniormester
23. maj 2008 - 22:40 #4
<ole>

"Når session_destroy(); er med i deafult, udskrives der ikke noget. Hvis den ikke er med i default udskrives der: "frontpage"." >> Det tvivler jeg på, er korrekt  =)

Hvad sker der, hvis du skriver:

if(!isset($_SESSION['page'])) { $_SESSION['page'] = ''; }

switch($_SESSION['page']) {
  case 'frontpage':
    echo 'forside';
    break;
  default:
    session_destroy();
    include('login.php');
    break; }

print strlen($_SESSION['page'])." :: ".$_SESSION['page'];

Skriver den så "9 :: frontpage"?

/mvh
</bole>
Avatar billede oergaard Nybegynder
24. maj 2008 - 14:41 #5
Hej Ole

Jo det er nu rigtigt det jeg siger, da $_SESSION['page'] sættes til 'frontpage' i login.php - det er i bund og grund det der er skyld i hele problemet.

session_destroy(); afvikles uanset om $_SESSION['page'] er sat eller ej.
Avatar billede olebole Juniormester
25. maj 2008 - 00:22 #6
Jamen, det var vist heller ikke det, jeg spurgte om. Om den er sat eller ej, er uinteressant for både dig og mig. Den afvikles med 112% højglansforkromet statsgaranti ikke, hvis værdien er 'frontpage'!

Derfor spurgte jeg, som jeg gjorde - og derfor undrer jeg mig over, hvorfor du ikke svarer på dét  =)
Avatar billede oergaard Nybegynder
03. juli 2008 - 08:36 #7
Jeg beklager mit lange fravær.

Jeg løste problemet, som jeg skrev: 15/05-2008 09:46:13, og mente egentlig at have lukket spørgsmålet efter min sidste kommentar til olebole.

w13 og olebole> smider i ikke et svar, så kan i dele pointene, som tak for deltagelsen :-)
Avatar billede w13 Novice
06. juli 2008 - 23:26 #8
Fine with me! :)
Avatar billede oergaard Nybegynder
14. juli 2008 - 22:15 #9
Lukker her, beklager Olebole :-)
Avatar billede olebole Juniormester
14. juli 2008 - 22:19 #10
- no sweat  ;o)
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