php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #28160 Method calls fail on DOM document objects passed as session variables
Submitted: 2004-04-26 17:49 UTC Modified: 2004-04-26 19:27 UTC
From: phil3862 at hotmail dot com Assigned:
Status: Not a bug Package: DOM XML related
PHP Version: 4.3.6 OS: Redhat 9, 2.4.20-30.9
Private report: No CVE-ID: None
 [2004-04-26 17:49 UTC] phil3862 at hotmail dot com
Description:
------------
Method calls fail on DOM document objects passed as session variables.  This happens whether you pass the DOM document object itself or a reference to the object as a session variable.  If you serialize and unserialize an object reference to a DOM document object without passing it as a session variable, it works fine:

<?php

  /**
   * This test shows that a reference to a DOM object can be
   * serialized and unserialized and still be used.
   */
$xml = "<?xml version='1.0' ?><foo><bar>Hoot!</bar></foo>";
$foo =& domxml_open_mem($xml);
$foo = unserialize(serialize($foo));
print $foo->dump_mem();


?>

Reproduce code:
---------------
<?php

session_start();

/**
 * This code tests method calls on a reference to a DOM object that
 * has been passed as a session variable.
 */

if (session_is_registered('foo')) {
    $_SESSION['foo']->dump_mem();
    session_unregister('foo');
 } else {
    print "Creating reference to new DOM object as a session variable...";
    session_register('foo');
    $xml = "<?xml version='1.0' ?><foo><bar>Hoot!</bar></foo>";
    $_SESSION['foo'] =& domxml_open_mem($xml);
 }

?>

<?php

session_start();

/**
 * This code tests method calls on a DOM object that has been passed
 * as a session variable.
 */

if (session_is_registered('foo')) {
    $_SESSION['foo']->dump_mem();
    session_unregister('foo');
 } else {
    print "Creating new DOM object as a session variable...";
    session_register('foo');
    $xml = "<?xml version='1.0' ?><foo><bar>Hoot!</bar></foo>";
    $_SESSION['foo'] = domxml_open_mem($xml);
 }

?>

Expected result:
----------------
Both of these scripts should print the original xml source.

Actual result:
--------------
Warning: dump_mem(): Underlying object missing or of invalid type in /home/jks/public_html/auctionhawk/projects/item_specifics/session-tests/reftest5a.php on line 11

Warning: dump_mem(): Cannot fetch DOM object in /home/jks/public_html/auctionhawk/projects/item_specifics/session-tests/reftest5a.php on line 11

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-04-26 18:25 UTC] phil3862 at hotmail dot com
Reopening under another id #.
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Fri Nov 27 13:01:24 2020 UTC