[php]session weg na sluiten browser

Pagina: 1
Acties:
  • 491 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben bezig om sessions te gaan gebruiken, in ieder geval een poging tot het leren er van.. (-:

Ik kan er nu lekker mee om gaan, maar altijd binnen hetzelfde browser window. Als men hem sluit dan gaat de sessie info verloren.
Wat ik wil is dat als ik mn naam op geef voor bijvoorbeeld een sessie, dat deze altijd onthouden wordt. Dus iets als een cookie.
Maar hoe kan ik dan de cookies omzeilen? Ik wil best gebruik maken van een database (mysql) maar ik zou niet weten hoe dat moet.. Ik zou wel kunnen checken aan de hand van een IP, maar ik weet niet of dat wel zo handig is.

Dus concreet, wat ik zou willen maken is een systeem die kijkt of ie me kent, zo niet vraagt ie om mn naam en zowel dan laat ie mn naam zien.
En ook (vooral) nadat een browser gesloten wordt en vervolgens weer geopend!
Of ben ik gebonden aan cookies?

Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 08:33

Pelle

🚴‍♂️

Cookies ja.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Je kunt de cookies in dit geval niet omzeilen met een database?

Acties:
  • 0 Henk 'm!

  • Dionisus19
  • Registratie: Mei 2002
  • Laatst online: 27-03-2024

Dionisus19

Blah != Meuk

Zou wel kunnen... Maar dan moet je UserIP opvragen bijvoorbeeld....
Maar hoe wil je dat doen als er 2 mensen achter een proxy op 1 ip zitten?
Of als je provider dmv DCHP adressen uitdeelt? ;)
Vandaar (onder andere) dat cookies ideaal zijn :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dionisus19 schreef op 13 May 2003 @ 15:01:
Zou wel kunnen... Maar dan moet je UserIP opvragen bijvoorbeeld....
Maar hoe wil je dat doen als er 2 mensen achter een proxy op 1 ip zitten?
Of als je provider dmv DCHP adressen uitdeelt? ;)
Vandaar (onder andere) dat cookies ideaal zijn :)
Ja precies, dat was ook een beetje mijn conclusie al. Maar ik denk, wellicht is het wel mogelijk en zo ja hoe dan.. maar ik ben bang dat ik toch met cookies ga werken!

Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55
ivy: Wat is er tegen cookies?? Is ideaal en naar mijn weten een van de weinig echte oplossingen :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

sessie-cookie-levensduur aanpassen is toch mogelijk?

Acties:
  • 0 Henk 'm!

Verwijderd

SessionID in cookie
SessionID en IP in database

inloggen = SessionID syncen
uitloggen = cookie trashen, db clearen
valid session ? als SessionID's overeenkomen EN het ip address klopt, dan heb je een geldige sessie, indien niet niet :)

[ Voor 4% gewijzigd door Verwijderd op 13-05-2003 15:32 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

ACM schreef op 13 May 2003 @ 15:07:
sessie-cookie-levensduur aanpassen is toch mogelijk?
Dat lost het probleem toch niet op? :) Is je sessie nog steeds afgelopen als je je browser sluit. Tenminste afgelopen.. je krijgt een nieuwe session ID van je browser in de nieuwe browsers-sessie natuurlijk..

Wat Melvin zegt is een goeie manier om met cookies te werken... maar wel cookies :)

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Volgens mij kan dit alleen met koekies of al je bezoekers moeten een vast IP adres hebben (wat ook weer problemen geeft wanneer meerdere computers op 1 IP adres internetten).

Sessies lopen altijd af wanneer jij je browser sluit.

Even verder over die vaste IP's:
Wanneer je zoveel mogelijk unieke waarden (die niet veranderen) van de bezoeker zijn computer opslaat kun je.... ach laat maar... koekies lijkt mij het beste...

Acties:
  • 0 Henk 'm!

  • Marcel van Veen
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:48
Uit http://www.php.net/manual/en/ref.session.php:
session.cookie_lifetime specifies the lifetime of the cookie in seconds which is sent to the browser. The value 0 means "until the browser is closed." Defaults to 0.See also session_get_cookie_params() and session_set_cookie_params().
Uit http://www.php.net/manual...on-set-cookie-params.php:
void session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure]]])
Set cookie parameters defined in the php.ini file. The effect of this function only lasts for the duration of the script.
Een stukje code bovenaan elk script zou je sessie dus 30 dagen actief moeten houden:
PHP:
1
session_set_cookie_params(30*24*60*60);

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
PHPMarcel schreef op 13 mei 2003 @ 16:16:
Uit http://www.php.net/manual/en/ref.session.php:


[...]
Uit http://www.php.net/manual...on-set-cookie-params.php:


[...]


Een stukje code bovenaan elk script zou je sessie dus 30 dagen actief moeten houden:
PHP:
1
session_set_cookie_params(30*24*60*60);
Hoe weet PHP dat een sessie bij een bepaalde computer hoort? Volgens mij maakt PHP dan toch een cookie aan bij de gebruiker. Zet je beveiliging van je browser maar zo dat je cookies per stuk moet accepteren...

Misschien dak niet gliek heb... kiek moar..

Acties:
  • 0 Henk 'm!

  • Marcel van Veen
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:48
Slagroom schreef op 13 May 2003 @ 16:20:
[...]

Hoe weet PHP dat een sessie bij een bepaalde computer hoort? Volgens mij maakt PHP dan toch een cookie aan bij de gebruiker. Zet je beveiliging van je browser maar zo dat je cookies per stuk moet accepteren...

Misschien dak niet gliek heb... kiek moar..
Dat weet PHP door een cookie bij te houden op de client-PC. In deze cookie staat het ID van de PHP-sessie die door de server wordt bijgehouden. Bij elke pagina-request stuur de browser die cookie (met daarin dus de ID) mee en zo weet PHP welke sessie bij welke 'computer' hoort...

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bosmonster schreef op 13 May 2003 @ 15:46:
Dat lost het probleem toch niet op? :) Is je sessie nog steeds afgelopen als je je browser sluit. Tenminste afgelopen.. je krijgt een nieuwe session ID van je browser in de nieuwe browsers-sessie natuurlijk..

Wat Melvin zegt is een goeie manier om met cookies te werken... maar wel cookies :)
Een cookie is een cookie.
Of ie nu door php's session-systeem gebruikt wordt of door jezelf. PHP kan (net als jijzelf) niet zien of de browser afgesloten was of niet, als deze gewoon de cookie opnieuw meestuurt.

Dus als jij de browser de sessioncookie voor 30 dagen laat opslaan (en let dan op de sessie-garbage-collector tijd), dan zal de sessie ook 30 dagen kunnen blijven bestaan. (mits je niet zelf de sessionid verandert en de session-GC van php niet langs komt)

[ Voor 6% gewijzigd door ACM op 13-05-2003 17:52 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

ACM schreef op 13 May 2003 @ 17:51:
[...]

Een cookie is een cookie.
Of ie nu door php's session-systeem gebruikt wordt of door jezelf. PHP kan (net als jijzelf) niet zien of de browser afgesloten was of niet, als deze gewoon de cookie opnieuw meestuurt.

Dus als jij de browser de sessioncookie voor 30 dagen laat opslaan (en let dan op de sessie-garbage-collector tijd), dan zal de sessie ook 30 dagen kunnen blijven bestaan. (mits je niet zelf de sessionid verandert en de session-GC van php niet langs komt)
Die logica snap ik even niet. Je browser ditcht toch autmatisch je sessioncookie bij afsluiten? Dat kan ik nergens clientside instellen. Bovendien lijkt me dat nogal ongewenst om een alternatieve clientsetting te moeten gebruiken om je site te laten werken...

Bovendien maakt iedere browsersessie een nieuwe sessie aan en kun je dus makkelijk meerdere sessies naast elkaar draaien. Om je een voorbeeld te geven in IE:

Stel ik heb IE open en doe ctrl-N (nieuw venster) dan open ik een nieuw venster in dezelfde browsersessie. Run ik mn snelkoppeling naar iexplore nog een keer dan krijg ik gewoon naast mn bestaande sessie een nieuwe. Aan dat gedrag is niks te veranderen en lijkt me ook precies zoals sessies behoren te werken :?

Na een bepaalde tijd van inactiviteit delete de server je sessioncookie, dit kun je inderdaad instellen. Maar de browser zelf kapt ook de sessie als die afgesloten wordt (of alle browservensters in die sessie dan). Aan dat laatste is niks te doen, dus jouw oplossing werkt dan alleen als je je browser nooit afsluit ;)

Dat is dus het verschil tussen sessies en cookies, ook al gebruikt de sessie een cookie om gegevens op te slaan, in weze zijn het 2 compleet verschillende technieken.

[ Voor 16% gewijzigd door Bosmonster op 13-05-2003 18:20 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bosmonster schreef op 13 mei 2003 @ 18:16:
Die logica snap ik even niet. Je browser ditcht toch autmatisch je sessioncookie bij afsluiten?
De browser krijgt een cookie van de server (PHP's sessie cookie).
De browser weet echt niet dat dat specifiek een sessie-cookie is, alleen dat het een cookie met levensduur 0 (ditch na browsersluiten) is.
Als de browser dezelfde cookie met levensduur 86400*30 krijgt, zal de browser die nog 30 dagen lang mee blijven sturen...
Die levensduur kan je instellen in je php-code.
Dat is dus het verschil tussen sessies en cookies, ook al gebruikt de sessie een cookie om gegevens op te slaan, in weze zijn het 2 compleet verschillende technieken.
Fout, in dit geval is er juist absoluut geen verschil :) (tenzij de sessiehandler de url-rewriting-truc gebruikt)

[ Voor 23% gewijzigd door ACM op 13-05-2003 18:24 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ah ik snap :)

Gegevens van een sessie worden wel in de serversidecookie opgeslagen, dus op zich is een langere sessie wel een stuk veiliger dan een clientside cookie (ook al kun je daar natuurlijk weer hetzelfde mee emuleren :P)
Pagina: 1