From: mc at cowensw dot cxo dot uk Operating system: Linux PHP version: 6CVS-2009-01-09 (CVS) PHP Bug Type: Scripting Engine problem Bug description: empty($FRED) returns false incorrectly
Description: ------------ Hosting moved to new version 8-1-2009. Since then in certain situations the empty() function now returns wrong value. Argument holds space, but function returns "not empty". Tested all normal empty functions, and they are OK (http://www.dev.holidaynetwork.co.uk/Test3.php) In this case $purchaseToken is derived from a row in a Session Variable. I have tried to reproduce this with smaller simpler scripts, but with no success. Reproduce code: --------------- Sample extract from script: echo ' purchaseToken7 >>'.$purchaseToken7.'<< <br>'; echo ' rhf >>'.$rhf.'<< <br>'; echo ' $_SESSION["Sess_purchaseToken7"] array >>'; print_r($_SESSION["Sess_purchaseToken7"]); echo '<< <br>'; echo ' $_SESSION["Sess_purchaseToken7"][$rhf] array >>'.$_SESSION["Sess_purchaseToken7"][$rhf].'<< <br>'; echo ' strlen(purchaseToken7) >>'.strlen($purchaseToken7).'<< <br>'; echo ' bin2hex(purchaseToken7) >>'.bin2hex($purchaseToken7).'<< <br>'; if (!empty($purchaseToken7) ) echo "purchaseToken not empty<br>"; else echo "purchaseToken empty<br>" ; if (empty($purchaseToken7) ) echo "purchaseToken empty<br>"; else echo "purchaseToken not empty <br>"; $ShowDiag = 0; exit() Expected result: ---------------- Sample Output Shows variable purchaseToken is space, However empty function returns "not empty" purchaseToken7 >> << rhf >>9<< $_SESSION["Sess_purchaseToken7"] array >>Array ( [0] => 0 [1] => [2] => [3] => 0 [4] => 0 [5] => [6] => [7] => [8] => [9] => ) << $_SESSION["Sess_purchaseToken7"][$rhf] array >> << strlen(purchaseToken7) >>1<< bin2hex(purchaseToken7) >>20<< purchaseToken empty purchaseToken empty Actual result: -------------- Sample Output Shows variable purchaseToken is space, However empty function returns "not empty" purchaseToken7 >> << rhf >>9<< $_SESSION["Sess_purchaseToken7"] array >>Array ( [0] => 0 [1] => [2] => [3] => 0 [4] => 0 [5] => [6] => [7] => [8] => [9] => ) << $_SESSION["Sess_purchaseToken7"][$rhf] array >> << strlen(purchaseToken7) >>1<< bin2hex(purchaseToken7) >>20<< purchaseToken not empty purchaseToken not empty -- Edit bug report at http://bugs.php.net/?id=47053&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=47053&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=47053&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=47053&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=47053&r=fixedcvs Fixed in CVS and need be documented: http://bugs.php.net/fix.php?id=47053&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=47053&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=47053&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=47053&r=needscript Try newer version: http://bugs.php.net/fix.php?id=47053&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=47053&r=support Expected behavior: http://bugs.php.net/fix.php?id=47053&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=47053&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=47053&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=47053&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=47053&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=47053&r=dst IIS Stability: http://bugs.php.net/fix.php?id=47053&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=47053&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=47053&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=47053&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=47053&r=mysqlcfg