[PHP] levensduur van sessie te kort

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
ik het volgende script:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?

ini_set('session.name', 'mss');
ini_set('url_rewriter.tags', 'area=href,frame=src,input=src,form=,fieldset=');

session_start();

echo session_id() ."<br /><br /><br /><br />
<a href='". $_SERVER['PHP_SELF'] ."?page=". rand() ."'>go to next page</a><br />";

?>


en de volgende sessie instellingen (in PHP 4.3.3):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Directive            Local Value    Master Value
session.auto_start        Off        Off
session.bug_compat_42        On        On
session.bug_compat_warn        On        On
session.cache_expire        180        180
session.cache_limiter        nocache        nocache
session.cookie_domain        no value    no value
session.cookie_lifetime        0        0
session.cookie_path        /        /
session.cookie_secure        Off        Off
session.entropy_file        no value    no value
session.entropy_length        0        0
session.gc_divisor        100        100
session.gc_maxlifetime        1440        1440
session.gc_probability        1        1
session.name            PHPSESSID    PHPSESSID
session.referer_check        no value    no value
session.save_handler        files        files
session.save_path        /tmp        /tmp
session.serialize_handler    php        php
session.use_cookies        On        On
session.use_only_cookies    Off        Off
session.use_trans_sid        On        On


het probleem is dus als volgt:

Volgens de instellingen moet de sessie minimaal 1 browsersessie meegaan. Maar als ik het bovenstaande script gebruik verandert de sessie ID afentoe. Als je een paar keer achter elkaar op de link klikt, behoudt hij de ene keer even (lees: tussen de 10 en 20 pageviews) de sessie ID en de andere keer verandert het ID per pageview (of wat meer, dat wisselt).

Ik heb het getest op 4 verschillende PCs allemaal met Windows XP SP1, waar zover ik weet de instellingen in de afgelopen dagen niet zijn verandert (afgezien van spyware, dat op 1 van de 4 staat). Volgens mijn admin zijn de instellingen van de server ook niet verandert.

iemand een clue?

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

http://nl3.php.net/manual...php#ini.session.save-path
Opmerking: Windows users have to change this variable in order to use PHP's session functions. Make sure to specify a valid path, e.g.: c:/temp.
:)

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
het is *unix.

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

Martin.Duane schreef op 25 augustus 2004 @ 16:27:
Ik heb het getest op 4 verschillende PCs allemaal met Windows XP SP1
dat van *unix zei je er niet bij.

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
ja, sorry, ik heb het getest met 4 verschillende PC, terwijl het script op een unix server draait.

Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
De ingebouwde sessie-manager van PHP is zowiezo vrij brak. Je kunt je eigen sessie-class schrijven of op hotscripts.com even rondneuzen voor wat leuks.

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 22:25

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
BoukeHaarsma schreef op 25 augustus 2004 @ 22:37:
De ingebouwde sessie-manager van PHP is zowiezo vrij brak. Je kunt je eigen sessie-class schrijven of op hotscripts.com even rondneuzen voor wat leuks.
Ehm, sorry, maar waarom beweer je dat? Kan je voorbeelden geven :) ?

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
idd, waar basseer je dat op??

het is namelijk niet zo snel gedaan een vrij grote sessie based site om te schijven naar sessie class based....

  • badeendjuh
  • Registratie: Oktober 2003
  • Laatst online: 17-09 14:49
Martin.Duane schreef op 26 augustus 2004 @ 00:31:
idd, waar basseer je dat op??

het is namelijk niet zo snel gedaan een vrij grote sessie based site om te schijven naar sessie class based....
Het kan reuze mee vallen de sessiehandler te vervangen hoor, ikzelf heb deze class als uitgangspunt genomen om als sessiehandler te dienen, en het enigste verschil is dat je
PHP:
1
include("session.class");

i.p.v.
PHP:
1
session_start();

gebruikt om je sessie te starten.

[ Voor 4% gewijzigd door badeendjuh op 26-08-2004 09:18 ]


  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
I don't see the benefit.

in de class die jij gebruik staat:

PHP:
1
2
3
4
5
6
<?
....
// Start the session
session_start(); 
.....
?>


dus dan gebruik je toch weer PHP's sessies, alleen sla je ze op in een database...

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 22:25

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Martin.Duane schreef op 26 augustus 2004 @ 15:52:
I don't see the benefit.

in de class die jij gebruik staat:

PHP:
1
2
3
4
5
6
<?
....
// Start the session
session_start(); 
.....
?>


dus dan gebruik je toch weer PHP's sessies, alleen sla je ze op in een database...
Ik denk dat hij een soort eigen sessie handler heeft gemaakt. Kan me niet voorstellen dat er in die class session_start() voorkomt

Acties:
  • 0 Henk 'm!

  • badeendjuh
  • Registratie: Oktober 2003
  • Laatst online: 17-09 14:49
Martin.Duane schreef op 26 augustus 2004 @ 15:52:
I don't see the benefit.

in de class die jij gebruik staat:

PHP:
1
2
3
4
5
6
<?
....
// Start the session
session_start(); 
.....
?>


dus dan gebruik je toch weer PHP's sessies, alleen sla je ze op in een database...
Je hebt gelijk, session_start() word nogsteeds gebruikt. Alleen is daarvoor al aan php bekend gemaakt dat hij de sessie acties moet afhandelen met de funties uit die class.

Dat gebeurt met dit stukje code:
PHP:
1
2
3
4
5
6
session_set_save_handler (array(&$this, '_open'),
                          array(&$this, '_close'),
                          array(&$this, '_read'),
                          array(&$this, '_write'),
                          array(&$this, '_destroy'),
                          array(&$this, '_gc'));

session_start() representeerd hier dus niet meer de handler van php, maar die van deze class.
Pagina: 1