[php] Session verdwijnt

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Ik weet dat er een boel topics over zijn te vinden met de search, maar ze beslaan of niet mijn probleem, of er wordt geen oplossing gevonden.

Ik heb een site waarop mensen inloggen...
Ze loggen in en er wordt een sessie aangemaakt.
Zodra ze de browser sluiten moet hun werk weg zijn en dus staat "session.cookie_lifetime" op 0.

Dat deel werkt allemaal...

Het probleem zit hem in het volgende:
In het systeem moeten soms handelingen worden verricht die behoorlijk wat tijd vergen..
Voorbeeld:

1. een gebruiker logt in
2. een gebruiker krijgt een brief voor zijn neus die hij aan dient te passen
3. de gebruiker submit de aangepaste brief.

Nu wil het zo zijn dat er soms wel een uur kan zitten tussen stap 2 en 3..
Er is dus geen communicatie met de server; er gebeurt alleen clientside wat..

De sessie moet nu echter wel behouden blijven, omdat de gebruiker pas na dat uur submit, en dan dus niet opnieuw zou moeten inloggen.

Nu dacht ik dat het een kwestie was van de "session.gc_maxlifetime" op meer dan de default 1440 sec (is 24 minuten) zetten, maar zelfs bij een setting van 8 uur (28800s) blijkt de sessie dan niet meer te bestaan..

Zie ik wat over het hoofd? Wat gaat er fout?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Zie ik wat over het hoofd? Wat gaat er fout?
Wordt de browser ondertussen afgesloten?

Het makkelijkst lijkt het mij om een koekje te plaatsen. Dan kun je bovendien iemand ingelogd laten.

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Ik heb hetzelfde probleem gehad. De oplossing die ik uiteindelijk gebruikt heb is een vrij ranzige, maar werkt wel perfect. Een PHP scriptje dat een gifje van 1 transparante pixel output... en begint met session_start(). Die in je pagina zetten en elke x seconden verversen met een javascriptje. Als je wil kan ik de code wel even opzoeken.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

session.gc_maxlifetime integer

session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage' and cleaned up.

If you are using the default file-based session handler, your filesystem must keep track of access times (atime). Windows FAT does not so you will have to come up with another way to handle garbage collecting your session if you are stuck with a FAT filesystem or any other fs where atime tracking is not available. Since PHP 4.2.3 it has used mtime (modified date) instead of atime. So, you won't have problems with filesystems where atime tracking is not available.
Is het dat misschien?

Zie ook: http://docs.php.net/en/session.configuration.html

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
De browser wordt dus niet afgesloten..

In principe tik je gewoon een uur wat in een tekstveld in de browser, en tijdens dat uur expired je sessie blijkbaar.

Ja ik kan wel een cookie setten voor langer, maar dat is symptoombestreiding, in principe zou het systeem toch moeten doen wat ik er van verwacht? met de settings die ik aangaf, of zie ik zoals ik al zei iets over het hoofd?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Kan dat niet alleen in php.ini? Anders zou PHP per sessie bij moeten houden hoelang hij nog mag duren. Als je het zelf gaat hosten kan het dus wel, maar anders kan dit een probleem opleveren.

[ Voor 13% gewijzigd door GlowMouse op 11-05-2005 16:46 ]


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Ik denk het niet, heb namelijk PHP 4.3.11 draaiend op een linux systeem...

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
douweh schreef op woensdag 11 mei 2005 @ 16:46:
Ik denk het niet, heb namelijk PHP 4.3.11 draaiend op een linux systeem...
Hij bedoelt dat je waarschijnlijk session.gc_maxlifetime moet hebben in plaats van session.cookie_lifetime.

Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
DizzyWeb schreef op woensdag 11 mei 2005 @ 16:42:
Ik heb hetzelfde probleem gehad. De oplossing die ik uiteindelijk gebruikt heb is een vrij ranzige, maar werkt wel perfect. Een PHP scriptje dat een gifje van 1 transparante pixel output... en begint met session_start(). Die in je pagina zetten en elke x seconden verversen met een javascriptje. Als je wil kan ik de code wel even opzoeken.
Dit zou inderdaad een oplossing kunnen zijn, maar wederom dat is eigenlijk symptoom bestrijding. Ik vind het moeilijk om te geloven dat het een bug in php zou zijn, en denk dus dat ik waarschijnlijk iets over het hoofd zie.. maar wat?

Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
GlowMouse schreef op woensdag 11 mei 2005 @ 16:49:
[...]

Hij bedoelt dat je waarschijnlijk session.gc_maxlifetime moet hebben in plaats van session.cookie_lifetime.
Die set ik dus ook!

Heeft mijn provider voor me in de php.ini aangepast staat dus op 28800, cookie_lifetime staat op 0, omdat de cookie(en dus ook de sessie) wel moet verdwijnen wanneer de browser onverhoopt afgesloten mocht worden.

Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Een "kick" noemen ze zoiets?

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
Heb je de (misschien wel ranzige) methode van Dizzyweb al geprobeerd?

Het lijk mij gewoon een goeie methode :)

edit:
Echt netjes is het dan misschien niet, maar je bent dan wel van je probleem af :)

[ Voor 31% gewijzigd door Huppie op 12-05-2005 14:52 ]

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Nee nog niet geprobeerd,
en zal ook heus wel werken (mits ik een random waarde mee stuur als querystring om t cachen tegen te gaan).. maar dit mag toch niet de bedoeling zijn?

Mijn vraag is inmiddels meer; maak ik een denkfout, of houdt php zich niet aan zn eigen regels?
Pagina: 1