From: wb at pro-net dot co dot uk Operating system: FreeBSD, WindowsXP PHP version: 5.0.0b4 (beta4) PHP Bug Type: *XML functions Bug description: SimpleXML Object forgetting values.
Description: ------------ When using simpleXML you are unable to fetch some information. The information is displayed with print_r() but you can't get it it directly. Use the example provided as an example. Reproduce code: --------------- <?php header('Content-type: text/plain'); $xmlstr = '<?xml version="1.0"?> <access> <user> <login>user1</login> <password>letMeIn</password> <site>www.pro-net.co.uk</site> <site>www.example.com</site> </user> <user> <login>user2</login> <password>myPassword</password> <site>www.pro-net.co.uk</site> </user> </access>'; $nl = "\r\n"; $xml = simplexml_load_string($xmlstr); print('Current PHP version is : '.phpversion().$nl.$nl); print('$xml is:'.$nl); print_r($xml); print($nl.$nl); // Test authentication to get the correct user information $login = 'user1'; $password = 'letMeIn'; print($nl.$nl.'Trying to authenticate "'.$login.'" with password "'.$password.'".'.$nl.$nl); $isAuth = false; foreach($xml->user as $user){ if(utf8_decode($user->login) == $login && utf8_decode($user->password) == $password){ $isAuth = true; break; } } if(!$isAuth){ print($nl.$nl.'Invalid User.'.$nl); die(); } // So lets output the variables to see what we have... print('$user is:'.$nl); print_r($user); print($nl.$nl); print('$user->site is:'.$nl); print_r($user->site); print($nl.$nl); print('$user->site[0] is:'.$nl); print_r($user->site[0]); print($nl.$nl); ?> Expected result: ---------------- $xml is: simplexml_element Object ( [user] => Array ( [0] => simplexml_element Object ( [login] => user1 [password] => letMeIn [site] => Array ( [0] => www.pro-net.co.uk [1] => www.example.com ) ) [1] => simplexml_element Object ( [login] => user2 [password] => myPassword [site] => www.pro-net.co.uk ) ) ) Trying to authenticate "user1" with password "letMeIn". $user is: simplexml_element Object ( [login] => user1 [password] => letMeIn [site] => Array ( [0] => www.pro-net.co.uk [1] => www.example.com ) ) $user->site is: Array ( [0] => www.pro-net.co.uk [1] => www.example.com ) $user->site[0] is: www.pro-net.co.uk Actual result: -------------- $xml is: simplexml_element Object ( [user] => Array ( [0] => simplexml_element Object ( [login] => user1 [password] => letMeIn [site] => Array ( [0] => www.pro-net.co.uk [1] => www.example.com ) ) [1] => simplexml_element Object ( [login] => user2 [password] => myPassword [site] => www.pro-net.co.uk ) ) ) Trying to authenticate "user1" with password "letMeIn". $user is: simplexml_element Object ( [login] => user1 [password] => letMeIn [site] => Array ( [0] => www.pro-net.co.uk [1] => www.example.com ) ) $user->site is: Array ( [0] => simplexml_element Object ( ) [1] => simplexml_element Object ( ) ) $user->site[0] is: simplexml_element Object ( ) -- Edit bug report at http://bugs.php.net/?id=27418&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=27418&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=27418&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=27418&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=27418&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=27418&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=27418&r=needscript Try newer version: http://bugs.php.net/fix.php?id=27418&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=27418&r=support Expected behavior: http://bugs.php.net/fix.php?id=27418&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=27418&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=27418&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=27418&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=27418&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=27418&r=dst IIS Stability: http://bugs.php.net/fix.php?id=27418&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=27418&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=27418&r=float