Gå til innhold

Hvordan bruke sessions best?


Anbefalte innlegg

Hei,

her på fredag skulle jeg kode noe med brukere og så kom jeg på at jeg aldri har brukt sessions. Til vanlig sitter jeg bak et rammeverk som tar seg av alt slikt eller bak HTTPAuth med bare et par brukere som ikke skilles fra hverandre.

 

Så lurer jeg altså på om måten jeg valgte å kode er anbefalt og sikker.

 

Jeg kodet et lite MVC-system hvor jeg øverst i en abstrakt kontrollerklasse jeg så utvider ( extends ) kjører session_start();. Dette skjer altså for hver sidevisning. Jeg sjekker etter en brukerid i $_SESSION, og om den finnes laster jeg brukerinformasjon fra database med den id som primary key i brukertabellen. Om den ikke er satt, om verdien ikke er av forventet datatype eller om bruker ikke finnes i databasen blir altså ikke et brukerobjekt lastet inn og når views blir rendret vil menyer ol. være for uinnloggede brukere. Når en bruker går til loginsiden er det et form med brukernavn og passord, når dette blir POSTet og disse stemmer mot en bruker i databasen henter jeg inn brukerobjektet og setter brukerid i $_SESSION. Dersom en bruker velger å logge ut kjører jeg session_destroy();

 

Kort fortalt:

Dersom brukerid i $_SESSION, hent bruker fra database.

Dersom POST fra innlogging som stemmer i database, sett brukerid i $_SESSION

Dersom logout, session_destroy();

 

Har noen kommentarer til dette?

Lenke til kommentar
Videoannonse
Annonse

Pleier også å endre til FALSE. Gjør samme nytten. Så skjekker jeg heller om

 

if(isset($_SESSION['online']))

{

 

og

 

if ($_SESSION['online'] == TRUE)

{

 

}

}

 

Bare for dobbel sikkerhet. Liten sjans for hacking da. Ellers bruker jeg cookies hvis det er snakk om loginfunksjoner

Endret av TheClown
Lenke til kommentar
N00b meg, men er trippel === nødvendig? Hva er forskjellen på === & == ?

=== gjør at '1' og 1 ikke er det samme.

 

$var = 1;
if( $var === '1' )
{
// Denne blir aldri true
}
elseif( $var === 1 )
{
// Denne blir
}
elseif( $var === TRUE )
{
// Og denne
}

!== er da det motsatte av ===. Man kan også bruke strcmp() istede for ===.

 

http://no.php.net/manual/en/language.opera....comparison.php

Lenke til kommentar
Det virker som om jeg ikke har gjort noen brøler, så da takker jeg for alle svar. :)

 

Ellers bruker jeg cookies hvis det er snakk om loginfunksjoner.

Hva lagrer du i den cookien da? En randomverdi du også holder serverside? En slangs nonce?

 

Jeg pleier å ha 3 cookies (copy&paste funksjoner jeg har lagd en gang i tiden). En til passord, en til brukerID (ikke brukernavn fordi disse kan endres) samt en som markere at brukeren er online.

 

Jeg hadde planer om å endre sistenevnte til en hash av en eller annen form som kan øke sikkerheten noe.

 

|EDIT| Takk for den Martin, da lærte jeg det også

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