#47173 [Com]: $_SESSION reference inside function broken

From: Date: Tue, 20 Jan 2009 19:32:24 +0000
Subject: #47173 [Com]: $_SESSION reference inside function broken
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-133080@lists.php.net to get a copy of this message
ID: 47173 Comment by: tommyhp2 at yahoo dot com Reported By: tommyhp2 at yahoo dot com Status: Open Bug Type: Session related Operating System: Win03 R2 SP2 PHP ISAPI PHP Version: 5.2.8 New Comment: Same problem w/ CVS PHP 5.2 - Windows x86 VC6 (thread safe)) [10.02MB] - 2009-Jan-20 12:00:00 Previous Comments: ------------------------------------------------------------------------ [2009-01-20 19:27:31] tommyhp2 at yahoo dot com Description: ------------ use of variable variables broken when reference inside a function in conjunction with $_SESSION. Thanks, Tommy Reproduce code: --------------- Scenario 1: <code> session_start(); $arr = array('idx1'=>'val1','idx2'=>'val2','idx3'=>'val3'); if (isset($_SESSION['arr'])) { $arr =& $_SESSION['arr']; } else { $_SESSION =& $arr; } </code> Works as intended (please see "Expected result"). Scenario 2: <code> function register_session($var) { global $$var; if (isset($_SESSION[$var])) { $$var =& $_SESSION[$var]; } else { $_SESSION[$var] =& $$var; } } session_start(); $arr = array('idx1'=>'val1','idx2'=>'val2','idx3'=>'val3'); register_session('arr'); </code> Does not work as intended (Please see "Actual result"). The variable $arr is not referenced. Expected result: ---------------- ["_SESSION"]=> &array(3) { ["idx1"]=> string(4) "val1" ["idx2"]=> string(4) "val2" ["idx3"]=> string(4) "val3" } ["arr"]=> &array(3) { ["idx1"]=> string(4) "val1" ["idx2"]=> string(4) "val2" ["idx3"]=> string(4) "val3" } Actual result: -------------- ["_SESSION"]=> &array(1) { ["arr"]=> array(3) { ["idx1"]=> string(4) "val1" ["idx2"]=> string(4) "val2" ["idx3"]=> string(4) "val3" } } ["arr"]=> array(3) { ["idx1"]=> string(4) "val1" ["idx2"]=> string(4) "val2" ["idx3"]=> string(4) "val3" } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47173&edit=1

« previous php.bugs (#133080) next »