ID: 26994 User updated by: kavol at email dot cz Reported By: kavol at email dot cz Status: Bogus Bug Type: Arrays related Operating System: linux (any?) PHP Version: 4.3.4 New Comment:
> RTFM about sessions and how to use them correctly. please could you be more specific? of course I have read about sessions and I can't remeber of any place saying that the contents of $_SESSION[something] can be randomly overwritten ... or do you mean that i left out session_start() from the example so as many other lines of the original code? > This has nothing to do with extract(). if a variable's value is changed after calling extract() then it has to do something with what? p.s. as for reproducing the error with newer snapshot: I decided to try to recompile apache - now I'm stuck with that, damn :-( Previous Comments: ------------------------------------------------------------------------ [2004-01-24 23:52:38] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php RTFM about sessions and how to use them correctly. This has nothing to do with extract(). ------------------------------------------------------------------------ [2004-01-23 17:45:08] kavol at email dot cz unfortunately, I am unable to build the apache module from that source ... "configure --with-apxs2=/usr/sbin/apxs2" says this: [...] checking for Apache 2.0 filter-module support via DSO through APXS... no checking for Apache 2.0 handler-module support via DSO through APXS... expr: non-numeric argument ./configure: line 5114: test: : integer expression expected ./configure: line 5116: test: : integer expression expected yes [...] which seems to be a bit suspicious (although the result is "yes") and then "make" goes well except that the module is missing ... I got cli version (working...) but that's all I'll try to work it out asap, until then I can't confirm if the CVS version is ok for me, sorry ... ------------------------------------------------------------------------ [2004-01-21 11:55:49] [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 Works fine with latest CVS of PHP4. ------------------------------------------------------------------------ [2004-01-21 11:02:56] kavol at email dot cz 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 this bug report at http://bugs.php.net/?id=26994&edit=1