Bug #14566 Updated: Session variables become read only

From: Date: Wed, 16 Jan 2002 16:57:59 +0000
Subject: Bug #14566 Updated: Session variables become read only
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-77262@lists.php.net to get a copy of this message
ID: 14566
User updated by: dward@maidencreek.com
Reported By: dward@maidencreek.com
Old Status: Feedback
Status: Open
Bug Type: Session related
Operating System: Solaris 7
PHP Version: 4.1.0
New Comment:

The workaround to use $_SESSION['var'] is not viable right now as most
places we use the global $var to access the variable and there is too
much code to change this immediately.  In trying to set the global $var
=& $_SESSION['var'] on one of the variables that has a problem, it
seems that the reference is still being lost by something in PHP 4.1.1
(still tracking by what) which did not lose the reference in PHP
4.0.6.

We are using a user save handler and have checked that it is saving
what it receives into the database.


Previous Comments:
------------------------------------------------------------------------

[2002-01-14 22:03:31] yohgaki@php.net

BTW, my last comment works for you?

To register,
$_SESSION['var'] = 1234;

To unregister
unset($_SESSION['var']);

What is your session save handler? files/mm/user/other?


------------------------------------------------------------------------

[2002-01-14 12:42:17] christian@metamerge.com

I get the same problem on Solaris 8. Code that worked fine in PHP 4.0.6
does not work anymore with 4.1.1:

 - new vars are registered correctly into the session
 - already defined session vars cannot be modified

My register_globals setting is on.

------------------------------------------------------------------------

[2002-01-06 22:20:20] yohgaki@php.net

This comment is work around for the bug.
Do not use session_register(), but use only $HTTP_SESSION_VARS or
$_SESSION to register/unregister session vars. 

To register,
$_SESSION['var'] = 1234;

To unregister
unset($_SESSION['var']);

Then your script should work.

------------------------------------------------------------------------

[2001-12-18 12:55:34] dward@maidencreek.com

register_globals is on.

I have been trying to narrow everything down to a simple test case, but
have not yet been able to.

It now appears that something acts differently in 4.1.0 that changes
the reference of the global variable to something different than the
HTTP_SESSION_VARS[] variable which did not do so in 4.0.6.

A workaround is to set HTTP_SESSION_VARS[varname] =& GLOBALS[varname]
before the end of the script.

------------------------------------------------------------------------

[2001-12-17 15:55:08] derick@php.net

Can you post your script, and tell use the settings of
register_globals?

Derick

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/?id=14566


Edit this bug report at http://bugs.php.net/?id=14566&edit=1



Thread (7 messages)

« previous php.dev (#77262) next »