Re: [Phplib-users] php4 session fix, and some thoughts
Brought to you by:
nhruby,
richardarcher
From: Giancarlo <gia...@na...> - 2003-01-23 17:11:35
|
Is this too semple? untested. maybe one should use $_SESSION instead of $GLOBALS. ## Load the auto_init-File, if one is specified. $sess->register('phplib_sess_in'); #1 if ($GLOBALS['phplib_sess_in'] == 1) { #2 $sess->in =1; #3 } #4 if (($sess->auto_init != "") && !$sess->in) { $sess->in = 1; $GLOBALS['phplib_sess_in'] = 1; #5 if (substr($sess->auto_init,0,1) == '/') include($sess->auto_init); else include($_PHPLIB["libdir"] . $sess->auto_init); if ($sess->secure_auto_init != "") { $sess->freeze(); } } > > ------------------------------------------------------------------------ > > --- session4.inc 2003-01-20 18:52:26.000000000 -0600 > +++ session4.inc.fixed 2003-01-20 18:53:27.000000000 -0600 > @@ -11,6 +11,19 @@ > * @access public > * @package PHPLib > */ > + > +class CurrentSession { > + var $ai_done = false; > + > + function set_ai_done($val) { > + $this->ai_done = $val; > + } > + > + function get_ai_done() { > + return $this->ai_done; > + } > +} > + > class Session { > > > @@ -43,8 +56,8 @@ > * Marker: Did we already include the autoinit file? > * > * @var boolean > - */ > - var $in = false; > + */ > +# var $in = false; > > > /** > @@ -147,6 +160,20 @@ > * > * @see name() > */ > + > + function get_auto_init_done() { > + $sob = "sob_".session_id(); > + global $$sob; > + return $$sob->get_ai_done(); > + } > + > + function set_auto_init_done($val) { > + $sob = "sob_".session_id(); > + global $$sob; > + $$sob = $_SESSION[$sob]; > + $$sob->set_ai_done($val); > + } > + > function Session() { > $this->name($this->name); > } // end constructor > @@ -170,6 +197,14 @@ > > $ok = session_start(); > $this->id = session_id(); > + > + if (!isset($_SESSION["sob_".session_id()])) { > + $sob = "sob_".session_id(); > + global $$sob; > + $$sob = new CurrentSession; > + $this->register($sob); > + } > + > > // If register_globals is off -> restore session variables to global scope > if(!(bool) ini_get('register_globals')) { > > > ------------------------------------------------------------------------ > > --- page4.inc 2003-01-20 17:21:23.000000000 -0600 > +++ page4.inc.fixed 2003-01-20 17:37:24.000000000 -0600 > @@ -51,8 +51,8 @@ > } > > ## Load the auto_init-File, if one is specified. > - if (($sess->auto_init != "") && !$sess->in) { > - $sess->in = 1; > + if (($sess->auto_init != "") && !$sess->get_auto_init_done()) { > + $sess->set_auto_init_done(1); > include($_PHPLIB["libdir"] . $sess->auto_init); > if ($sess->secure_auto_init != "") { > $sess->freeze(); |