#22068 [Bgs]: Access $_SESSION

From: Date: Thu, 06 Feb 2003 02:52:31 +0000
Subject: #22068 [Bgs]: Access $_SESSION
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969351625@lists.php.net to get a copy of this message
ID: 22068 User updated by: AchimWinkelmann@web.de Reported By: AchimWinkelmann@web.de Status: Bogus Bug Type: Documentation problem Operating System: Windows XP PHP Version: 4.3.0 New Comment: Bogus? PAGE 1 (test_index.php): =========================================================== <? include ('test_session.inc'); session_start (); ?> <HTML><HEAD><TITLE>Test session</TITLE></HEAD> <BODY TEXT="#000000" LINK="#FFCC00" ALINK="#33FF00" VLINK="#FFCC00" bgcolor="#FFFFFF"> <br> <u><i>test_index.php</i></u><br> <br> <? sessRESTORE(); $_SESSION['direkt'] = 'Wert'; sessVAR( 'test', '1234' ); print( "<i>session_id() = '".session_id()."'</i><br>\r\n" ); print( "<i>\$_SESSION['test'] = '".((isset($_SESSION['test']))?$_SESSION['test']:'not set')."'</i><br>\r\n" ); print( "<i>\$test = '".((isset($test))?$test:'not set')."'</i><br>\r\n" ); print( "<i>\$_SESSION['direkt'] = '".((isset($_SESSION['direkt']))?$_SESSION['direkt']:'not set')."'</i><br>\r\n" ); print( "<i>\$direkt = '".((isset($direkt))?$direkt:'not set')."'</i><br>\r\n" ); ?> <br> <a href="test_start.php?<?=SID?>"><b>next</b></a><br> </BODY></HTML> ----------------------------------------------------------- PAGE 2 (test_start.php): =========================================================== <? include ('test_session.inc'); session_start (); ?> <html><head><title>Test session</title></HEAD> <BODY TEXT="#000000" LINK="#FFCC00" ALINK="#33FF00" VLINK="#FFCC00" bgcolor="#FFFFFF"> <br> <i><u>test_start.php</u></i><br> <br> <? sessRESTORE(); print( "<i>session_id() = '".session_id()."'</i><br>\r\n" ); print( "<i>\$_SESSION['test'] = '".((isset($_SESSION['test']))?$_SESSION['test']:'not set')."'</i><br>\r\n" ); print( "<i>\$test = '".((isset($test))?$test:'not set')."'</i><br>\r\n" ); print( "<i>\$_SESSION['direkt'] = '".((isset($_SESSION['direkt']))?$_SESSION['direkt']:'not set')."'</i><br>\r\n" ); print( "<i>\$direkt = '".((isset($direkt))?$direkt:'not set')."'</i><br>\r\n" ); ?> <br> <a href="test_index.php?<?=SID?>"><b>back</b></a>&nbsp; </body></html> ----------------------------------------------------------- FUNCTIONS (test_session.inc): =========================================================== <? function sessVAR ($name, $wert) { global $_SESSION; $_SESSION[$name] = $wert; eval('global $'.$name.'; $'.$name.'=$_SESSION[\''.$name.'\'];'); } function sessRESTORE () { global $_SESSION; while ( list ($key, $value) = each ($_SESSION) ) { eval( 'global $'.$key.'; $'.$key.'=$_SESSION[\''.$key.'\'];' ); print( 'sessRESTORE $'.$key."<br>\r\n" ); } } ?> ----------------------------------------------------------- First Test - PAGE 1 displays: ============================= test_index.php session_id() = 'a8422f455c75aec5a3654c2894f7b4f2' $_SESSION['test'] = '1234' $test = '1234' $_SESSION['direkt'] = 'Wert' $direkt = 'not set' next First Test - PAGE 2 displays: ============================= test_start.php session_id() = 'a8422f455c75aec5a3654c2894f7b4f2' $_SESSION['test'] = 'not set' $test = 'not set' $_SESSION['direkt'] = 'not set' $direkt = 'not set' back First Test - continued: ======================= If I goon switching between these two pages, I get the same results for each page as shown above. For the following second test the statements 'global $_SESSION;' within the functions of 'test_session.inc' are deactivated! Second Test - PAGE 1 displays: ============================== test_index.php session_id() = '91f0a63c90e8a567610a3a9ec5195202' $_SESSION['test'] = '1234' $test = '1234' $_SESSION['direkt'] = 'Wert' $direkt = 'not set' next Second Test - PAGE 2 displays: ============================== test_start.php sessRESTORE $direkt sessRESTORE $test session_id() = '91f0a63c90e8a567610a3a9ec5195202' $_SESSION['test'] = '1234' $test = '1234' $_SESSION['direkt'] = 'Wert' $direkt = 'Wert' back Second Test - continued: ======================== If I goon switching between these two pages, I get the correct results as shown in Page 2 Display! Previous Comments: ------------------------------------------------------------------------ [2003-02-05 14:31:37] nicos@php.net The documentation is clear enough to me (us). Using the global keyword on any $_* shouldn't create a new variable. If it does, this is not a documentation bug. I verified with PHP4.3 and 5.0 (ZE2), it doesn't. Not a bug -> Bogus. Feel free to post a new bug if you feel we are wrong. ------------------------------------------------------------------------ [2003-02-05 05:24:57] derick@php.net Documentation problem ------------------------------------------------------------------------ [2003-02-05 05:23:57] AchimWinkelmann@web.de The manual says at topic XCIII. SESSION HANDLING FUNCTIONS under headline EXAMPLES within the NOTE, 'you do not need to use the global keyword for $_SESSION'. In fact you 'may not use the global keyword' when accessing $_SESSION from within a function, otherwise a different global variable seems to be created/accessed (PHP 4.3.0, WinXP)! Maybe it is no bug, but I miss any sematically sense. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22068&edit=1

« previous php.doc (#969351625) next »