Bug #8676 Updated: Bad serialization of objects with references
| From: | sbergmann@php.net | Date: | Tue, 22 May 2001 19:29:45 +0000 |
| Subject: | Bug #8676 Updated: Bad serialization of objects with references | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-56331@lists.php.net to get a copy of this message | ||
ID: 8676
Updated by: sbergmann
Reported By: arnaud.bienvenu@generasound.com
Old-Status: Open
Status: Feedback
Bug Type: *Session related
Operating system:
PHP Version: 4.0.4
Assigned To:
Comments:
Could you please give some feedback if this problem persists with a recent version (CVS, snapshot,
4.0.5 release) of PHP? Thanks!
Previous Comments:
---------------------------------------------------------------------------
[2001-01-12 11:15:12] arnaud.bienvenu@generasound.com
Some complex objects won't be correctly stored into the session. This is probably a problem
with serialize/unserialize. It happens with objects structure containing some references. The code
below builds the simpliest structure I could find that pinpouts the problem.
With more complex structure, you can have all sorts of strange behaviour, including crashing PHP,
but the behaviours vary from one PHP installation to another (even with the same version and compile
flags).
<?php
/*
View this script with a browser and press reload
It will probably display "-->137645276" instead of "-->Object"
You can view it at http://www.generasound.com/test/bug.php
*/
session_start();
if (!isset($form))
{
$form = new stdClass();
$submit = new stdClass();
$upperif = new stdClass();
$upperif->Child = &$submit;
$upperif->Layout = new stdClass();
$upperif->Layout->Child = new stdClass();
$upperif->Layout->Child->Interface = &$submit;
$lowerif = new stdClass();
$form->Children[0] = &$upperif;
$form->Children[1] = &$lowerif;
$form->Layout = new stdClass();
$form->Layout->Children[1] = new stdClass();
$form->Layout->Children[1]->Interface = &$lowerif;
echo "-->".$form->Layout->Children[1]->Interface."<BR>";
session_register("form");
}
else
{
echo "-->".$form->Layout->Children[1]->Interface."<BR>";
}
?>
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=8676&edit=2