Toon posts:

[PHP] sessie vastzetten, op IP of met COOKIE?

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben dus bezig met het nieuwe ccmod.com systeem te scripten.
ik loop alleen tegen een klein probleempje aan :(

dit is de situatie:

Gebruiker klikt op login > mooie loginbox, daar geeft de user zijn username+password > via mysql en MD5 word gekeken of de username + password kloppen, zoja, sessie starten met userid+username > user kan leuk spelen op site > user logt uit(logof of venster sluiten) en klaar.

nu is mijn vraag:

hoe kan ik er voor zorgen dat een user zig maar 1x hoeft aan te melden, en dat hij dan altijd is aangemeld is?
moet dat met een cookie gedaan worden?
of kan je een sessie zo instellen dat hij altijd doordraait(max 1 maand kan user niet aanwezig zijn, daarna stopt de sessie)?

offtopic:
en hoe kan ik er voor zorgen dat een user zich op een andere lokatie kan afmelden(net als op GoT)?

Verwijderd

Verwijderd schreef op 14 augustus 2002 @ 21:31:
hoe kan ik er voor zorgen dat een user zig maar 1x hoeft aan te melden, en dat hij dan altijd is aangemeld is?
ja en nee. Met cookies kun je bepalen of de user ingelogd is of niet. Sommige mensen staan alleen geen cookies toe, of gooien ze na een tijdje weg, en dan moeten ze alsnog opnieuw inloggen.
moet dat met een cookie gedaan worden?
ja
of kan je een sessie zo instellen dat hij altijd doordraait(max 1 maand kan user niet aanwezig zijn, daarna stopt de sessie)?
leuke theorie :), maar er zijn nog te veel mensen met een dynamic ip
offtopic:
en hoe kan ik er voor zorgen dat een user zich op een andere lokatie kan afmelden(net als op GoT)?
[/quote]

je zou in elke cookie een datum/timestamp kunnen zetten waarop de cookie aangemaakt is.
Op het moment dat een user aangeeft dat ie op elke computer uit wil loggen (a la GoT), zet je in de db een aparte timestamp. User komt vervolgens met PC2 op je site, 'hey, timestamp in db is later dan timestamp in cookie, uitloggen die gast'.
(Ik verzin dit ff gauw ter plekke. Mocht een beter idee hebben, enlighten me :) )

moet dit forum nou echt zo veel regels plaatsen na een quote??

Verwijderd

Topicstarter
ik lul ff tussendoor:....
Verwijderd schreef op 14 augustus 2002 @ 21:40:
[...]

ja en nee. Met cookies kun je bepalen of de user ingelogd is of niet. Sommige mensen staan alleen geen cookies toe, of gooien ze na een tijdje weg, en dan moeten ze alsnog opnieuw inloggen.

als ze het niet opslaan hebben ze gewoon een probleem dat ze iedere keer moetten inloggen, das hun probleem

[...]

ja


[...]

leuke theorie :), maar er zijn nog te veel mensen met een dynamic ip
dat is wel zo, niet echt veilig

[...]

je zou in elke cookie een datum/timestamp kunnen zetten waarop de cookie aangemaakt is.
Op het moment dat een user aangeeft dat ie op elke computer uit wil loggen (a la GoT), zet je in de db een aparte timestamp. User komt vervolgens met PC2 op je site, 'hey, timestamp in db is later dan timestamp in cookie, uitloggen die gast'.
(Ik verzin dit ff gauw ter plekke. Mocht een beter idee hebben, enlighten me :) )

niet stom bedacht.
maar als je je dan inlogt, dan moet je dus 2x een user in de db zetten.
dan krijg je een tabel met:

id(autocount)
userid
ip
timestamp

dan iedere keer gewoon de andere verwijderen toch?
klinkt slim.

of zorgen dat je maar op 1 plek kan aanmelden(alla msn style), dus aanmelden op plek 2, plek 1 er uit.


moet dit forum nou echt zo veel regels plaatsen na een quote??

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 14 augustus 2002 @ 21:40:
[...]

ja en nee. Met cookies kun je bepalen of de user ingelogd is of niet. Sommige mensen staan alleen geen cookies toe, of gooien ze na een tijdje weg, en dan moeten ze alsnog opnieuw inloggen.
Dat is toch een keuze van de mensen zelf?
leuke theorie :), maar er zijn nog te veel mensen met een dynamic ip
Mooie opmerking, maar het is niet echt relevant. Aangezien een sessie niet gelockt is aan een ip maar aan een session-cookie.
Normaal is een session-cookie vluchtig. Deze word alleen opgeslagen in het geheugen van de browser. In dit cookie staat een session ID, deze refereert naar de gegevens op de server.

Verder is het mogelijk om de properties van het session-cookie te veranderen dat hij reageert zoals normale cookie.
Met PHP kan je dit doen via session_set_cookie_params

Ook zijn is het mogelijk om een sessie door te geven via een URL.
je zou in elke cookie een datum/timestamp kunnen zetten waarop de cookie aangemaakt is.
Op het moment dat een user aangeeft dat ie op elke computer uit wil loggen (a la GoT), zet je in de db een aparte timestamp. User komt vervolgens met PC2 op je site, 'hey, timestamp in db is later dan timestamp in cookie, uitloggen die gast'.
(Ik verzin dit ff gauw ter plekke. Mocht een beter idee hebben, enlighten me :) )
Persoonlijk zou ik het anders doen.
Maak een sessie tabel waarin het code_id, user_id en of de user is ingelogd (eventueel zou je ook nog extra sessie info kunnen opslaan)
Zodra een user in logt geef hem een cookie met server generated code_id en een cookie met user id. Als de user terug komt kan je hem valideren aan de hand van de code_id en user_id uit de sessie tabel.

Als de user een sessie wil beeindigen kan je aan hand van de user-id sessie lopen beeindigen of niet.
(Volgens mij maakt React ook gebruik van dit systeem, als ik de cookie tenminste mag geloven.. )

Programmer - an organism that turns coffee into software.


Verwijderd

Verwijderd schreef op 15 augustus 2002 @ 02:01:
niet stom bedacht.
maar als je je dan inlogt, dan moet je dus 2x een user in de db zetten.
nee dat hoeft niet. De timestamp in de db wordt alleen gebruikt om een tijd aan te geven waarna de user sowieso opnieuw moet inloggen.

ff een voorbeeld, user logt met pc1 in (tijd 13:00u). In de cookie op pc1 wordt naast userinfo, de huidige tijd vastgelegd. Op pc2, waar ie al ingelogd was, geeft ie aan dat ie elke computer waar ie ingelogd is, wil uitloggen. De timestamp in de db wordt bijgewerkt naar nu. Vanaf dat moment zijn alle vastgelegde timestamps in de cookies dus van eerdere tijden dan in de db en kun je bepalen de user aan de hand daar van uit te loggen.
LuCarD schreef op 15 augustus 2002 @ 09:26:
[...]
Persoonlijk zou ik het anders doen.
Maak een sessie tabel waarin het code_id, user_id en of de user is ingelogd [...]
Zodra een user in logt geef hem een cookie met server generated code_id en een cookie met user id. Als de user terug komt kan je hem valideren aan de hand van de code_id en user_id uit de sessie tabel.
zo kan het idd ook. Beide manieren maken gebruik van een waarde om te vergelijken, ik timestamp, jij server-generated code.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 15 augustus 2002 @ 10:17:


zo kan het idd ook. Beide manieren maken gebruik van een waarde om te vergelijken, ik timestamp, jij server-generated code.
Grootte voordeel is:
• dat je het wachtwoord niet bij client op zijn systeem opslaat.
• Meerdere sessies kan hebben

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
uhhh, jah helemaal :?
Pagina: 1