ID: 19857 Updated by: [EMAIL PROTECTED] Reported By: darwin at museplay dot com -Status: Feedback +Status: No Feedback Bug Type: WDDX related Operating System: Win XP Pro PHP Version: 4.2.3 New Comment:
No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Open". Thank you. Previous Comments: ------------------------------------------------------------------------ [2003-06-29 20:45:05] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2002-10-20 03:52:23] darwin at museplay dot com I am not certain whether or not you guys are going to help out with this, but this bug also exists in the RedHat 7 version... ------------------------------------------------------------------------ [2002-10-19 12:33:52] darwin at museplay dot com Is anyone working on this? Again, I can assist you if you can tell me where in the source code to look... ------------------------------------------------------------------------ [2002-10-16 11:53:51] darwin at museplay dot com Have you guys made any progress on fixing this bug? If not, can you tell me where to look, in the source code, so that I can see if I figure out what you have done incorrectly? ------------------------------------------------------------------------ [2002-10-13 19:06:34] darwin at museplay dot com // I HAVE ISSOLATED THE PROBLEM FOR YOU!!! // // Check out the code, below; via it, you will note that PHP is sensitive to the positioning of fields in within the WDDX packet; this is your bug; since the fields of a WDDX packet are unordered, you cannot expect them to be in any particular order. Please let me know, ASAP, once you have fixed this bug, since my team would really like to utilize WDDX for our project. // // Take care, // Darwin <script language="php"> class COption { function COption( ) { } // constructor function test( ) { $oSuboption1 = new COption( ) ; $oSuboption1->iID = 10 ; $oSuboption1->sName = "Suboption 1" ; $oSuboption1->sBriefDesc = "SO 1 brief desc" ; $oSuboption1->sDetailedDesc = "Suboption 1 detailed description..." ; $oSuboption1->iTimesAvailable = 7 ; $oSuboption1->fRetailPrice = 10 ; $oSuboption1->fWholesalePrice = 5 ; $oSuboption1->bTaxable = true ; $oSuboption1->bDiscounted = false ; $oSuboption1->bActive = true ; $oSuboption1->iMinNumFreeSuboptions = 0 ; $oSuboption1->iMaxNumFreeSuboptions = 0 ; $oSuboption1->iMinNumPaidSuboptions = 0 ; $oSuboption1->iMaxNumPaidSuboptions = 0 ; $oSuboption1->sQuestion = "Suoption 1 Question?" ; $oSuboption1->aoImages = array() ; $oSuboption1->iNumber = null ; $oSuboption1->iPosition = null ; $oSuboption1->sScriptRoot = "http://localhost/Delisma/Menu/" ; $oSuboption1->fDiscountRate = 0 ; $oSuboption1->fTaxRate = 0.0825 ; $oSuboption2 = new COption( ) ; $oSuboption2->iID = 10 ; $oSuboption2->sName = "Suboption 2" ; $oSuboption2->sBriefDesc = "SO 2 brief desc" ; $oSuboption2->sDetailedDesc = "Suboption 2 detailed description..." ; $oSuboption2->iTimesAvailable = 1 ; $oSuboption2->fRetailPrice = 8 ; $oSuboption2->fWholesalePrice = 3 ; $oSuboption2->bTaxable = true ; $oSuboption2->bDiscounted = false ; $oSuboption2->bActive = true ; $oSuboption2->iMinNumFreeSuboptions = 5 ; $oSuboption2->iMaxNumFreeSuboptions = 10 ; $oSuboption2->iMinNumPaidSuboptions = 15 ; $oSuboption2->iMaxNumPaidSuboptions = 20 ; $oSuboption2->sQuestion = "Suoption 2 Question?" ; $oSuboption2->aoImages = array() ; $oSuboption2->iNumber = null ; $oSuboption2->iPosition = null ; $oSuboption2->sScriptRoot = "http://localhost/Delisma/Menu/" ; $oSuboption2->fDiscountRate = 0 ; $oSuboption2->fTaxRate = 0.0825 ; $this->iID = 0 ; $this->sName = "Wacky Burger 5" ; $this->sBriefDesc = "'Dis Shit is Wack!" ; $this->sDetailedDesc = "'Da bomb is hear again! This is a friggin' quarter pound of good, good stuff!" ; $this->iTimesAvailable = 5 ; $this->fRetailPrice = 18 ; $this->fWholesalePrice = 12 ; $this->bTaxable = true ; $this->bDiscounted = false ; $this->bActive = true ; $this->iMinNumFreeSuboptions = 0 ; $this->iMaxNumFreeSuboptions = 1 ; $this->iMinNumPaidSuboptions = 0 ; $this->iMaxNumPaidSuboptions = 2 ; $this->sQuestion = "Waz' up?" ; $this->aoImages = array() ; $this->aoSuboptions = array( $oSuboption1, $oSuboption2 ) ; $this->iNumber = 55 ; $this->iPosition = 0 ; $this->sScriptRoot = "http://localhost/Delisma/Menu/" ; $this->fDiscountRate = 0 ; $this->fTaxRate = 0.0825 ; $this->iNumber = 55 ; $this->iPosition = 0 ; $this->sScriptRoot = "http://localhost/Delisma/Menu/" ; $this->fDiscountRate = 0 ; $this->fTaxRate = 0.0825 ; } var $iID ; var $sName ; var $sBriefDesc ; var $sDetailedDesc ; var $iTimesAvailable ; var $fRetailPrice ; var $fWholesalePrice ; var $bTaxable ; var $bDiscounted ; var $bActive ; var $iMinNumFreeSuboptions ; var $iMaxNumFreeSuboptions ; var $iMinNumPaidSuboptions ; var $iMaxNumPaidSuboptions ; var $sQuestion ; var $aoImages ; var $aoSuboptions ; var $iNumber ; var $iPosition ; } // COption $sWDDXPacketBad = ' <wddxPacket version="1.0"> <header /> <data> <struct> <var name="php_class_name"><string>COption</string></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="aoImages"><array length="0" /></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> <var name="aoSuboptions"> <array length="2"> <struct> <var name="iMaxNumPaidSuboptions"><number>2</number></var> <var name="iMinNumPaidSuboptions"><number>2</number></var> <var name="iMaxNumFreeSuboptions"><number>3</number></var> <var name="iMinNumFreeSuboptions"><number>1</number></var> <var name="bActive"><boolean value="true" /></var> <var name="bDiscounted"><boolean value="false" /></var> <var name="bTaxable"><boolean value="true" /></var> <var name="fWholesalePrice"><string>5.02</string></var> <var name="fRetailPrice"><string>5.35</string></var> <var name="iTimesAvailable"><string>5</string></var> <var name="sDetailedDesc"><string>good good stuff</string></var> <var name="sBriefDesc"><string>good stuff</string></var> <var name="sName"><string>pizza</string></var> <var name="iID"><number>1</number></var> <var name="oItemCategories"><null /></var> <var name="aoOptionMenues"><null /></var> <var name="oOptionImages"><null /></var> <var name="oOptionDiscounts"><null /></var> <var name="oOptionTaxes"><null /></var> <var name="oOptionSuboptions"><null /></var> <var name="iPosition"><null /></var> <var name="iNumber"><null /></var> <var name="sConstructionErrors"><null /></var> <var name="aoSuboptions"><null /></var> <var name="aoImages"><null /></var> <var name="php_class_name"><string>COption</string></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> <var name="sQuestion"><string>What size do you want?</string></var> </struct> <struct> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> <var name="sQuestion"><string>What size do you want?</string></var> <var name="iMaxNumPaidSuboptions"><string>2</string></var> <var name="iMinNumPaidSuboptions"><string>2</string></var> <var name="iMaxNumFreeSuboptions"><string>3</string></var> <var name="iMinNumFreeSuboptions"><string>1</string></var> <var name="bActive"><boolean value="true" /></var> <var name="bDiscounted"><boolean value="false" /></var> <var name="bTaxable"><boolean value="true" /></var> <var name="fWholesalePrice"><string>5.02</string></var> <var name="fRetailPrice"><string>5.35</string></var> <var name="iTimesAvailable"><string>5</string></var> <var name="sDetailedDesc"><string>good good stuff</string></var> <var name="sBriefDesc"><string>good stuff</string></var> <var name="sName"><string>salad</string></var> <var name="iID"><number>2</number></var> <var name="oItemCategories"><null /></var> <var name="aoOptionMenues"><null /></var> <var name="oOptionImages"><null /></var> <var name="oOptionDiscounts"><null /></var> <var name="oOptionTaxes"><null /></var> <var name="oOptionSuboptions"><null /></var> <var name="iPosition"><null /></var> <var name="iNumber"><null /></var> <var name="sConstructionErrors"><null /></var> <var name="aoSuboptions"><null /></var> <var name="aoImages"><null /></var> <var name="php_class_name"><string>coption</string></var> </struct> </array> </var> <var name="sQuestion"><string>Waz' up?</string></var> <var name="iMaxNumPaidSuboptions"><number>2</number></var> <var name="iMinNumPaidSuboptions"><number>0</number></var> <var name="iMaxNumFreeSuboptions"><number>1</number></var> <var name="iMinNumFreeSuboptions"><number>0</number></var> <var name="bActive"><boolean value="true" /></var> <var name="bDiscounted"><boolean value="false" /></var> <var name="bTaxable"><boolean value="true" /></var> <var name="fWholesalePrice"><number>12</number></var> <var name="fRetailPrice"><number>18</number></var> <var name="iTimesAvailable"><number>5</number></var> <var name="sDetailedDesc"><string>'Da bomb is hear again! This is a friggin' quarter pound of good, good stuff!</string></var> <var name="sBriefDesc"><string>'Dis Shit is Wack!</string></var> <var name="iPosition"><number>0</number></var> <var name="iNumber"><number>55</number></var> <var name="sName"><string>Wacky Burger 5</string></var> <var name="iID"><number>0</number></var> </struct> </data> </wddxPacket>' ; //////////////////////////////////////// //////////////////////////////////////// // the "bad" packet reordered: $sWDDXPacket = ' <wddxPacket version="1.0"> <header /> <data> <struct> <var name="php_class_name"><string>COption</string></var> <var name="iID"><number>0</number></var> <var name="sName"><string>Wacky Burger 5</string></var> <var name="sBriefDesc"><string>'Dis Shit is Wack!</string></var> <var name="sDetailedDesc"><string>'Da bomb is hear again! This is a friggin' quarter pound of good, good stuff!</string></var> <var name="iTimesAvailable"><number>5</number></var> <var name="fRetailPrice"><number>18</number></var> <var name="fWholesalePrice"><number>12</number></var> <var name="bTaxable"><boolean value="true" /></var> <var name="bDiscounted"><boolean value="false" /></var> <var name="bActive"><boolean value="true" /></var> <var name="iMinNumFreeSuboptions"><number>0</number></var> <var name="iMaxNumFreeSuboptions"><number>1</number></var> <var name="iMinNumPaidSuboptions"><number>0</number></var> <var name="iMaxNumPaidSuboptions"><number>2</number></var> <var name="sQuestion"><string>Waz' up?</string></var> <var name="aoImages"><array length="0" /></var> <var name="aoSuboptions"> <array length="2"> <struct> <var name="php_class_name"><string>COption</string></var> <var name="iID"><number>1</number></var> <var name="sName"><string>pizza</string></var> <var name="sBriefDesc"><string>good stuff</string></var> <var name="sDetailedDesc"><string>good good stuff</string></var> <var name="iTimesAvailable"><string>5</string></var> <var name="fRetailPrice"><string>5.35</string></var> <var name="fWholesalePrice"><string>5.02</string></var> <var name="bTaxable"><boolean value="true" /></var> <var name="bDiscounted"><boolean value="false" /></var> <var name="bActive"><boolean value="true" /></var> <var name="iMinNumFreeSuboptions"><number>1</number></var> <var name="iMaxNumFreeSuboptions"><number>3</number></var> <var name="iMinNumPaidSuboptions"><number>2</number></var> <var name="iMaxNumPaidSuboptions"><number>2</number></var> <var name="sQuestion"><string>What size do you want?</string></var> <var name="aoImages"><null /></var> <var name="aoSuboptions"><null /></var> <var name="iNumber"><null /></var> <var name="iPosition"><null /></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> <var name="oItemCategories"><null /></var> <var name="aoOptionMenues"><null /></var> <var name="oOptionImages"><null /></var> <var name="oOptionDiscounts"><null /></var> <var name="oOptionTaxes"><null /></var> <var name="oOptionSuboptions"><null /></var> <var name="sConstructionErrors"><null /></var> </struct> <struct> <var name="php_class_name"><string>coption</string></var> <var name="iID"><number>2</number></var> <var name="sName"><string>salad</string></var> <var name="sBriefDesc"><string>good stuff</string></var> <var name="sDetailedDesc"><string>good good stuff</string></var> <var name="iTimesAvailable"><string>5</string></var> <var name="fRetailPrice"><string>5.35</string></var> <var name="fWholesalePrice"><string>5.02</string></var> <var name="bTaxable"><boolean value="true" /></var> <var name="bDiscounted"><boolean value="false" /></var> <var name="bActive"><boolean value="true" /></var> <var name="iMinNumFreeSuboptions"><string>1</string></var> <var name="iMaxNumFreeSuboptions"><string>3</string></var> <var name="iMinNumPaidSuboptions"><string>2</string></var> <var name="iMaxNumPaidSuboptions"><string>2</string></var> <var name="sQuestion"><string>What size do you want?</string></var> <var name="aoImages"><null /></var> <var name="aoSuboptions"><null /></var> <var name="iNumber"><null /></var> <var name="iPosition"><null /></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> <var name="oItemCategories"><null /></var> <var name="aoOptionMenues"><null /></var> <var name="oOptionImages"><null /></var> <var name="oOptionDiscounts"><null /></var> <var name="oOptionTaxes"><null /></var> <var name="oOptionSuboptions"><null /></var> <var name="sConstructionErrors"><null /></var> </struct> </array> </var> <var name="iNumber"><number>55</number></var> <var name="iPosition"><number>0</number></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> </struct> </data> </wddxPacket>' ; //////////////////////////////////////// //////////////////////////////////////// $sWDDXPacketGood = ' <wddxPacket version="1.0"> <header/> <data> <struct> <var name="php_class_name"><string>coption</string></var> <var name="iID"><number>0</number></var> <var name="sName"><string>Wacky Burger 5</string></var> <var name="sBriefDesc"><string>\'Dis Shit is Wack!</string></var> <var name="sDetailedDesc"><string>\'Da bomb is hear again! This is a friggin\' quarter pound of good, good stuff!</string></var> <var name="iTimesAvailable"><number>5</number></var> <var name="fRetailPrice"><number>18</number></var> <var name="fWholesalePrice"><number>12</number></var> <var name="bTaxable"><boolean value="true"/></var> <var name="bDiscounted"><boolean value="false"/></var> <var name="bActive"><boolean value="true"/></var> <var name="iMinNumFreeSuboptions"><number>0</number></var> <var name="iMaxNumFreeSuboptions"><number>1</number></var> <var name="iMinNumPaidSuboptions"><number>0</number></var> <var name="iMaxNumPaidSuboptions"><number>2</number></var> <var name="sQuestion"><string>Waz\' up?</string></var> <var name="aoImages"><array length="0"></array></var> <var name="aoSuboptions"> <array length="2"> <struct> <var name="php_class_name"><string>coption</string></var> <var name="iID"><number>10</number></var> <var name="sName"><string>Suboption 1</string></var> <var name="sBriefDesc"><string>SO 1 brief desc</string></var> <var name="sDetailedDesc"><string>Suboption 1 detailed description...</string></var> <var name="iTimesAvailable"><number>7</number></var> <var name="fRetailPrice"><number>10</number></var> <var name="fWholesalePrice"><number>5</number></var> <var name="bTaxable"><boolean value="true"/></var> <var name="bDiscounted"><boolean value="false"/></var> <var name="bActive"><boolean value="true"/></var> <var name="iMinNumFreeSuboptions"><number>0</number></var> <var name="iMaxNumFreeSuboptions"><number>0</number></var> <var name="iMinNumPaidSuboptions"><number>0</number></var> <var name="iMaxNumPaidSuboptions"><number>0</number></var> <var name="sQuestion"><string>Suoption 1 Question?</string></var> <var name="aoImages"><array length="0"></array></var> <var name="aoSuboptions"><null/></var> <var name="iNumber"><null/></var> <var name="iPosition"><null/></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> </struct> <struct> <var name="php_class_name"><string>coption</string></var> <var name="iID"><number>10</number></var> <var name="sName"><string>Suboption 2</string></var> <var name="sBriefDesc"><string>SO 2 brief desc</string></var> <var name="sDetailedDesc"><string>Suboption 2 detailed description...</string></var> <var name="iTimesAvailable"><number>1</number></var> <var name="fRetailPrice"><number>8</number></var> <var name="fWholesalePrice"><number>3</number></var> <var name="bTaxable"><boolean value="true"/></var> <var name="bDiscounted"><boolean value="false"/></var> <var name="bActive"><boolean value="true"/></var> <var name="iMinNumFreeSuboptions"><number>5</number></var> <var name="iMaxNumFreeSuboptions"><number>10</number></var> <var name="iMinNumPaidSuboptions"><number>15</number></var> <var name="iMaxNumPaidSuboptions"><number>20</number></var> <var name="sQuestion"><string>Suoption 2 Question?</string></var> <var name="aoImages"><array length="0"></array></var> <var name="aoSuboptions"><null/></var> <var name="iNumber"><null/></var> <var name="iPosition"><null/></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> </struct> </array> </var> <var name="iNumber"><number>55</number></var> <var name="iPosition"><number>0</number></var> <var name="sScriptRoot"><string>http://localhost/Delisma/Menu/</string></var> <var name="fDiscountRate"><number>0</number></var> <var name="fTaxRate"><number>0.0825</number></var> </struct> </data> </wddxPacket>' ; //$oItem = new COption() ; //$oItem->test() ; //$sWDDXPacket = wddx_serialize_value( $oItem ) ; echo "\nHere is the non-working packet, deserialized:\n" ; $oItemBad = wddx_deserialize( $sWDDXPacketBad ) ; print_r( $oItemBad ) ; echo "\n\nHere is the previous packet reordered, deserialized; this works, which means that PHP is sensitive to the order of items in a WDDX packet, which is a bug:\n" ; $oItem = wddx_deserialize( $sWDDXPacket ) ; print_r( $oItem ) ; echo "\n\nHere is a working PHP generated packet, deserialized:\n" ; $oItemGood = wddx_deserialize( $sWDDXPacketGood ) ; print_r( $oItemGood ) ; </script> ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/19857 -- Edit this bug report at http://bugs.php.net/?id=19857&edit=1