Avatar billede moddi100 Seniormester
25. september 2008 - 21:09 Der er 31 kommentarer og
2 løsninger

Sessions vs Cookies

Hej

Jeg har længe været lidt i tvivl om hvad der er praktisk og mest sikrest at bruge til validering af login.

Jeg kan godt lide at man kan sætte levetiden på cookies, så de f.eks. dør ud efter 15 min inaktivitet. (Ved ikke om dette også kan laves med sessions, kan det er jeg meget interesseret)

Cookies kan forfalskes, ved jeg udmærket.
Sessions kan vel også blive brugt af andre script på den websever jeg kører på? Eller er det kun på mit domæne jeg har adgang??

Jeg kunne godt tænke mig at høre jeres mening om hvad i helst vil bruge.

- Morten
Avatar billede w13 Novice
25. september 2008 - 21:16 #1
Sessions bliver, så vidt jeg ved, også lagres i en form for cookies, så det skulle gerne være det samme. =) Sessions kan også "hijackes", men du mindsker risikoen for dette betydeligt ved at sætte:

session_regenerate_id();

lige efter din:

session_start();
Avatar billede moddi100 Seniormester
25. september 2008 - 21:18 #2
Kan det passe, at session_regenerate_id() gemmer dette id som en cookie, der identificerer brugeren, så han tildeles de rigtige sessions?
Avatar billede erikjacobsen Ekspert
25. september 2008 - 21:32 #3
Cookies (og dermed sessions) virker kun for samme domæne.
Levetid i sessioner kan enten sættes på serveren, default normalt 20 minutter, eller du kan sætte en tid i en sessionvariabel.
Avatar billede erikjacobsen Ekspert
25. september 2008 - 21:32 #4
(fortsættelse) og dermed selv kontrollere tiden.
Avatar billede moddi100 Seniormester
25. september 2008 - 21:33 #5
erikjacobsen -> Hvordan sætter jeg sessions levetid i det enkelte script?
Avatar billede erikjacobsen Ekspert
25. september 2008 - 21:40 #6
I php.ini hvis det er din egen server, eller webhotellet tillader en lokal php.ini, og ellers (hvis det virker):

ini_set('session.gc_maxlifetime',(3600*24*365)); // et år (hvis browseren ikke lukkes)
Avatar billede kinderaeg Nybegynder
26. september 2008 - 13:22 #7
@erikjacobsen
"Cookies (og dermed sessions) virker kun for samme domæne."

Det er ikke nødvendigvis helt korrekt, og kommer lidt an på, hvordan dit hotel er sat op.
Det er rigtigt, at hvis du læser en session for en bruger, så får du kun de oplysninger der er lagt i sessionen af dit domæne, men hvis serveren er sat op til at gemme alle sessions samme sted på serveren, uanset domæne (og det har jeg faktisk oplevet hos et hotel, ingen nævnt, ingen glemt), så kan alle brugere af serveren i princippet læse og skrive til hinandens sessions. Men det er forhåbentlig de færreste steder der forekommer den slags rod i opsætningerne.
Er råd kunne være at lave dit eget session-bibliotek og gemme dine sessions der:

ini_set('session.save_path','./sessions');
Avatar billede moddi100 Seniormester
26. september 2008 - 13:57 #8
Hvad bør jeg give et sådan session-bibliotek af rettigheder?
Avatar billede kinderaeg Nybegynder
26. september 2008 - 14:14 #9
Det kommer nok lidt an på hvor du smider den, men et bud kunne være 0770
Avatar billede moddi100 Seniormester
26. september 2008 - 14:24 #10
Skal lige tjekke om jeg må ligge mappen uden for www, ellers bliver det i den.
Avatar billede moddi100 Seniormester
26. september 2008 - 14:32 #11
Denne ini_set('session.gc_maxlifetime', 60) retunerer 1440, altså den gamle værdi.
Så vidt jeg ved, burde levetiden nu være sat til 60 sekunder = 1 minut?

Men jeg kan bare se at sessions lever videre, hvis jeg åbner en testside og ikke røre den igen i 2 min, eksistere sessions stadigvæk. Betyder det så at jeg ikke har tilladelse til at ændre denne indstilling??
Avatar billede kinderaeg Nybegynder
26. september 2008 - 14:35 #12
Det kan være du skal sætte frekvensen af garbage-collection op, hvis der ikke er så meget trafik på din side
Avatar billede moddi100 Seniormester
26. september 2008 - 14:36 #13
Der er ingen trafik på den side/domæne jeg tester på.
Avatar billede moddi100 Seniormester
26. september 2008 - 14:46 #14
Burde jeg ikke kunne se nogle filer i den mappe jeg har sat som session-bibliotek?
Avatar billede kinderaeg Nybegynder
29. september 2008 - 07:53 #15
Ja, når du laver en session, oprettes en session-fil i din save_path, og denne slettes først igen ved garbage-collection, og hvis det kun er dig der tester på siden, og garbege-collection'en ikke udføres så ofte, kan dette være grunden til at din session overlever længere end den burde.
Avatar billede moddi100 Seniormester
29. september 2008 - 14:41 #16
Men hvorfor kan jeg så ikke se nogle filer i den pågældende mappe jeg har sat i save_path?
Avatar billede kinderaeg Nybegynder
29. september 2008 - 14:53 #17
Tjah, det er jo lidt svært at sige, når jeg ikke har ret meget at gå ud fra, men kunne det være fordi du har skrevet din sti forkert?
Husk at du skal sætte stien før du kører session_start() ;)
Avatar billede moddi100 Seniormester
29. september 2008 - 14:55 #18
> Husk at du skal sætte stien før du kører session_start()

Vidste jeg godt, men havde self glemt at gøre det...
Avatar billede moddi100 Seniormester
29. september 2008 - 16:07 #19
Men hvad siger I? Hvad synes i bedst om til loginsystemer cookies eller sessions?
Avatar billede w13 Novice
29. september 2008 - 17:19 #20
Klart Sessions. Ser ingen grund til at bruge cookies.
Avatar billede kinderaeg Nybegynder
30. september 2008 - 07:54 #21
Enig
Avatar billede moddi100 Seniormester
25. oktober 2008 - 23:26 #22
Smider i hver især et svar allesammen?
Avatar billede w13 Novice
26. oktober 2008 - 01:07 #23
Hvis du synes, jeg fortjener nogen points, er her et svar.
Avatar billede moddi100 Seniormester
26. oktober 2008 - 09:05 #24
Jeg synes session_regenerate_id() var et meget godt input :D
Avatar billede kinderaeg Nybegynder
27. oktober 2008 - 07:54 #25
Svar
Avatar billede moddi100 Seniormester
27. oktober 2008 - 19:29 #26
Mon man kan logge et svar ud af erikjacobsen?
Avatar billede arne_v Ekspert
27. oktober 2008 - 19:37 #27
Hvis du kigger ud af vinduet og du ser et par grise flyve forbi, eller hvis du kigger
i kalenderen og der er 2 søndage i næste uge så .................
Avatar billede moddi100 Seniormester
27. oktober 2008 - 19:51 #28
Ja lad os dog kigge efter, han får en frist til på onsdag den 29....
Avatar billede w13 Novice
27. oktober 2008 - 19:57 #29
Han takker altid nej. =)
Avatar billede moddi100 Seniormester
27. oktober 2008 - 19:58 #30
Så er jeg fræk og deler dem ud nu. Så må han bare sige hvis han nu ønsker point.
Avatar billede moddi100 Seniormester
27. oktober 2008 - 19:59 #31
Vær så god og tak for hjælpen :D
Avatar billede w13 Novice
27. oktober 2008 - 20:01 #32
Tak for points! :)
Avatar billede moddi100 Seniormester
27. oktober 2008 - 20:16 #33
Jeg siger bare tak for hjælpen :D
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