Cookies vs. Sessions i et brugersystem?

Tags:    programmering

Hej,

Jeg har fået lavet et rigtig smart brugersystem hvor man kan oprette en bruger og logge sig på. Det kører med cookies, så brugeren kan valgfrit vælge "autologin" funktionen. Det hele virker bare fantastisk.

Nu har jeg så bare fundet ud af, at man i sin browser kan deaktivere cookies. Dét er slet ikke godt for mit loginsystem, som jo kører med cookies (både uden og med autologin).

Mit spørgsmål: Hvordan skal jeg ændre koden, så jeg evt. kan flette SESSIONS ind? Altså jeg kan godt registrere brugeren en session, men hvordan skal jeg så hente hans/hendes brugeroplysninger i en fremtidig visbruger.php - skal det være baseret på hans cookie eller session?

Min kode ser således ud:
Fold kodeboks ind/udKode 


På forhånd tak.



8 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Da cookies holder længere end en session - eller du kan sætte den til det ville jeg gemme brugeren oplysninger i en cookie og i session.

Din cookie er så kun til fall-back så hvis session ikke findes så kan vi lede efter en cookie der måske findes.

Det er lidt mere advanceret men det holder og det virker meget bedre.



Det er jo meget godt... :)

Men sessions er afhængig af cookies, Serveren sender et unikt ID til en cookie på klienten, som klienten skal sende med hver forespørgelse for at kunne identificere sig på serveren. Hvis brugeren har slået cookies fra, vil sessions så heller ikke virke.
Dette er der så imidlertid et fix til: serveren skal konfigureres til at sende session IDet til URLen, altså så alle URLer på en hjemmeside indeholder session IDet.

Derfor den bedste løsning er: hvis brugeren har slået cookies fra, skal han informeres herom, og derfor at siden ikke vil kunne fungere korrekt.



Du kan jo tjekke ved hjælp af en if sætning om du kan sætte en cookie. :)



Ok, det var også det jeg tænkte jeg ville gøre.

Lige endnu et spørgsmål. Hvis brugeren (logget ind med autologin) lukker browseren, så mister han sin session til næste gang han åbner hjemmesiden. Hvordan laver jeg så en session til brugeren anden gang han åbner hjemmesiden? Er det så bare om at lave noget som tjekker om han har en cookie, og hvis ja så give ham en session? (se nedenfor)

Fold kodeboks ind/udKode 




Præcis - sessions dør når browseren bliver lukket eller når deres timeout tid er nået ved inaktivitet.



.Net kan selv finde ud af om det er en cookieless browser, og benytte sessionid i url adresserne, så det må også kunne konfigureres på en php løsning.

Og ja enig, ingen cookies, ingen session :)



.Net kan selv finde ud af om det er en cookieless browser, og benytte sessionid i url adresserne, så det må også kunne konfigureres på en php løsning.

Og ja enig, ingen cookies, ingen session :)


Hmm... Har du et eksempel på hvordan det kan gøres? Så meget erfaring har jeg ikke indenfor programmering :-)

Eller er det ligegyldigt? Jeg ved ikke hvor mange der ikke kører med cookies...måske gør mobiltelefoner det ikke?



Nåja :D

Anyway, jeg tror jeg nedprioriterer dette. Jeg har lige fundet ud af at selv bold.dk ikke tilbyder login hvis man har cookies disabled.



t