Gå til innhold

Skrive til SESSION-variable


Anbefalte innlegg

Jeg sitter her og sliter litt med noen (for meg) uforklarlige problemer med sessions. Jeg har en side, hvor det skal være en del informasjon til alle, samt et "administratorpanel" som kun spesielle brukere får se. Videre ønsker jeg ikke å avkreve vanlige brukere passord/brukernavn på noen som helst måte, FØR de prøver å gå inn i Administratorpanelet. Og når korrekt brukernavn/passord er skrevet inn, skal også disse brukerene få vandre fritt fra om tilbake mellom vanlige sider/administratorpanelet uten å bli avkrevd brukernavn/passord igjen.

 

Filene er som følger :

index.php ("hovedfil") :

denne filen er på en måte hele rammen for siden. Den slenger opp en logo øverst, viser meny og innhold avhengig av hvilke linker brukeren har klikket på. Alt blir gjort med include("sideX.php");.


if(!PHPSESSID)

{

// Starter en session hvis den ikke allerede eksisterer

session.start();

session.register('loginstatus);

}

...

...

 

includedir/administratorpanel.php :


// Sjekke brukernavn & passord. Om det stemmer:

$_SESSION['loginstatus'] = 1;



ellers

$_SESSION[loginstatus'] = 0;

...



// Login suksess. Viser "hemmelige siden"

if($_SESSION['loginstatus'] == 1)

{

...

Siden for autentiserte

...

}

// feilet loggin eller ikke forsøkt å logge inn. Viser "vanlig side"

else if($_SESSION['loginstatus'] == 0 || !$_SESSION['loginstatus'])

{

...

Siden for ikke-autentiserte

...

}

 

 

Men av en eller annen grunn får jeg ikke skrevet noe som helst til $_SESSION['loginstatus']-variablen fra includedir/administratorpanel.php, kun fra index.php. Og etter flere timer prøving/feiling og søking på mang en rar .php-side; er det bare sånn det er? eller begynner mine "search-skillz" å svikte meg?

Lenke til kommentar
Videoannonse
Annonse

Hmm, jeg trodde session_start måtte kjøres uansett før man gjorde noe som helst som var relatert med sessions.

 

Fra manual:

session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie.
Lenke til kommentar

Også litt mer :)

 

Caution

 

If you want your script to work regardless of register_globals, you need to use the $_SESSION array. All $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where register_globals is disabled.

 

Caution

 

If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister().

 

Les mer på http://no.php.net/manual/en/ref.session.php

 

Uansett, du kan ikke både bruke både session_register og $_SESSION på den måte du gjør. (Hvertfall ifølge manual)

 

Du kan like greit droppe session_register og bare bruke $_SESSION['loginstatus'] = etellerannet over hele koden din istedet.

Lenke til kommentar

Fikk det til nå. Feilen lå, som du sa, i at jeg ikke "resumet" sessionen. Det var kun første gangen at session_start(); ble kjørt. Videre går det faktisk fint å bruke $_SESSION['loginstatus'] samtidig med at jeg registrerer session-variablen 'loginstatus' med session_register('loginstatus');.

 

Så i bunn og grunn fjernet jeg den øverste if-setningen i index.php, og så funka hele greia. Tenke seg til ... lurt av et eksempel a gett :roll:

 

Jaja... Nå funker alt, og jeg er glad. Tusen takk for hjelpen :)

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