ID:               32886
 User updated by:  luis at infomed dot sld dot cu
 Reported By:      luis at infomed dot sld dot cu
-Status:           Bogus
+Status:           Closed
 Bug Type:         Session related
 Operating System: *
 PHP Version:      5.0.4
 New Comment:

OK, I don't know but if you do a cast to $buffer everything fine, so,
the new code is:
$buffer['varA'] = $_SESSION['varA'];
$_SESSION = array();
$_SESSION = (array) $buffer; //*** NOTE the cast ***
print_r($_SESSION);

Thanks


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

[2005-04-29 11:19:52] [EMAIL PROTECTED]

Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.



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

[2005-04-29 11:15:31] luis at infomed dot sld dot cu

Please, maybe, I dont explain the problem very well, I try to overwrite
the session array but dont work, look at the page2:
$buffer['varA'] = $_SESSION['varA'];
$_SESSION = array();//here I clear the session,become empty
$_SESSION = $buffer;//assign a new array,cause array $buffer
print_r($_SESSION);
//on screen the right result,
//but on the session file is wrong.

So, I want to overwrite the session variable with a new array but php
dont do it, then, the onscreen result between page2 and page3 are
different and it is not correct because in both pages I have the same
statement: print_r($_SESSION); with different results.
Please, if you can, read carefully my tests.
Best regards,
Luis

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

[2005-04-29 09:08:10] [EMAIL PROTECTED]

Not a bug. If you overwrite the $_SESSION array by assigning a new
array to it, you remove it's magic properties of being the array with
session variables. This is expected - so don't do it.

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

[2005-04-29 08:45:16] luis at infomed dot sld dot cu

Description:
------------
php5.0.4 dont store the correct values after modified the $_SESSION
variable, the idea is to clear the session and do persist only a few
values. I use Apache 1.3.33. With php5.0.2 everything is fine the
problem appear with php5.0.4, I am not try with php5.0.3


Reproduce code:
---------------
page1.php-----------------------------------------

<?php
session_start();
$_SESSION['varA'] = 'aaa';
$_SESSION['varB'] = 'bbb';
?>

page2.php-----------------------------------------

<?php
session_start();
$buffer['varA'] = $_SESSION['varA'];
$_SESSION = array();
$_SESSION = $buffer;
print_r($_SESSION);
?>

page2b.php-----------------------------------------

<?php
session_start();
$_SESSION = array();
$_SESSION['varA'] = 'aaa';
print_r($_SESSION);
?>

page3.php-----------------------------------------

<?php
session_start();
print_r($_SESSION);
?>


Expected result:
----------------
I would expect the same behavior with:
page1.php->page2.php->page3.php
and with:
page1.php->page2b.php->page3.php
but is not.


Actual result:
--------------
When I do page1.php->page2.php on the screen I obtain the correct
values:
Array ( [varA] => aaa )
but on the session file in disc is wrong, because the session file
have:
varA|s:3:"aaa";varB|s:3:"bbb";
and in page3.php on the screen I have:
Array ( [varA] => aaa [varB] => bbb ), is wrong.

But, if I do page1.php->page2b.php->page3.php everything is fine.

Thank you for your work in PHP.



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


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

Reply via email to