From: kavol at email dot cz
Operating system: linux (any?)
PHP version: 4.3.4
PHP Bug Type: Arrays related
Bug description: extract() overwrites content of superglobal
Description:
------------
after extract()ing an array containing a "key" => "data" with "key" being
the same name as in $_SESSION, not only $key = "data", but the content of
$_SESSION["key"] gets overwritten with "data" too
Reproduce code:
---------------
$jazyky = array (array ("jazyk" => "Če�tina", "kod" => "cs", "jak" =>
"česky"), array ("jazyk" => "English", "kod" => "en", "jak" =>
"English"));
$_SESSION["jazyk"] = "cs";
$jazyk = $_SESSION["jazyk"]; // this IS NOT assigment by reference ! (from
manual: "the assignment copies the original variable to the new one")
echo $_SESSION["jazyk"];
foreach ($jazyky as $j) {
extract ($j);
echo "<a href='?jazyk=$kod'><img alt=\"$jak\" class=\"vlajka\"
src=\"images/flag-$kod.png\"> $jazyk</a><br>";
echo $_SESSION["jazyk"];
};
$jazyk = $_SESSION["jazyk"]; // this is the problem - I wanted to restore
the previosly overwritten $jazyk but I found $_SESSION["jazyk"] to be
overwritten too!
Expected result:
----------------
cs
<a href='?jazyk=cs'><img alt="česky" class="vlajka"
src="images/flag-cs.png"> Če�tina</a><br>
cs
<a href='?jazyk=en'><img alt="English" class="vlajka"
src="images/flag-en.png"> English</a><br>
cs
Actual result:
--------------
cs
<a href='?jazyk=cs'><img alt="česky" class="vlajka"
src="images/flag-cs.png"> Če�tina</a><br>
Če�tina
<a href='?jazyk=en'><img alt="English" class="vlajka"
src="images/flag-en.png"> English</a><br>
English
--
Edit bug report at http://bugs.php.net/?id=26994&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=26994&r=trysnapshot4
Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=26994&r=trysnapshot5
Fixed in CVS: http://bugs.php.net/fix.php?id=26994&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=26994&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=26994&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=26994&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=26994&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=26994&r=support
Expected behavior: http://bugs.php.net/fix.php?id=26994&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=26994&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=26994&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=26994&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=26994&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=26994&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=26994&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=26994&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=26994&r=float