PHP 4.0 Bug #7258 Updated: Dangling references destroy session state
| From: | stas@php.net | Date: | Mon, 23 Oct 2000 09:03:03 +0000 |
| Subject: | PHP 4.0 Bug #7258 Updated: Dangling references destroy session state | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-35850@lists.php.net to get a copy of this message | ||
ID: 7258
Updated by: stas
Reported By: sd@b-comp.de
Status: Feedback
Bug Type: Scripting Engine problem
Assigned To:
Comments:
Please check current CVS, it should be fixed
Previous Comments:
---------------------------------------------------------------------------
[2000-10-16 16:08:47] sd@b-comp.de
(The problem described is specific to 4.0.3 and 4.0.3pl1.
The scripts below work fine with 4.0.2.)
Let $a be an array kept in the session state. Whenever
a reference $x to an element of $a falls of the end of a
script, the referenced array element is destroyed.
Putting an ``undef($x);'' at the end of the script solves
the problem. The following two scripts demonstate the
problem:
BEGIN FILE test1.php
<?php
session_register('a');
$a = array();
$a['foo'] = 'FOO';
?>
<html>
<a href="test2.php?<?=SID?>">link</a>
</html>
END FILE
BEGIN FILE test2.php
<?php
session_register('a');
$x = &$a['foo'];
?>
<html>
x=<?=$x?><br>
<a href="test2.php?<?=SID?>">link</a>
</html>
END FILE
Open test1.php in a browser and follow the link to
test2.php. You'll see that $x is 'FOO'. Now follow
that link again and $x is undefined.
The scripts work if you put an ``undef($x);'' at the
end of test2.php.
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=7258