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:

finally, I got it working (on another machine - there is 
something rotten in mine) and I cannot confirm this bug on 
newer version of PHP 
 
maybe, it appears only in some rare configuration... 
 
for [EMAIL PROTECTED]: 
if there is something wrong with my program and not with 
php, then could you explain how it is possible, that the 
same program doesn't work on one version and works on the 
other? 
I thought that for the same code should be given always the 
same result - either good or bad ...


Previous Comments:
------------------------------------------------------------------------

[2004-01-25 15:09:49] kavol at email dot cz

> 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 :-(

------------------------------------------------------------------------

[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="&#269;esky" class="vlajka"
src="images/flag-cs.png"> &#268;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="&#269;esky" class="vlajka"
src="images/flag-cs.png"> &#268;eština</a><br>
&#268;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

Reply via email to