ID: 32261
User updated by: takayana at egate1 dot com
Reported By: takayana at egate1 dot com
Status: Bogus
Bug Type: Session related
Operating System: Windows2000, Windows XP Pro
PHP Version: 4.3.10
New Comment:
A setup of php.ini is already register_globals = Off.
Verification environment 1 (Windows2000)
OS: Windows2000 Professional
PHP Version: 4.3.9
php.ini(register_globals = Off)
session array no value after performing test_web1.php:
31, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10...20
^^^^^
Verification environment 2 (Windows2000)
OS: Windows2000 Professional
PHP Version: 4.3.10
php.ini(register_globals = Off)
session array no value after performing test_web1.php:
31, 1, 2, 3, 3, 5, 6, 7, 8, 9, 10...20
^^^^^
php.ini of the verification environment 1 and
the verification environment 2 is the same file.
Verification environment 3 (Windows XP)
OS: Windows XP Professional
PHP Version: 4.3.9
php.ini(register_globals = Off)
session array no value after performing test_web1.php:
31, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10...20
^^^^^
Verification environment 4 (Windows XP)
OS: Windows XP Professional
PHP Version: 4.3.10
php.ini(register_globals = Off)
session array no value after performing test_web1.php:
31, 1, 2, 3, 3, 5, 6, 7, 8, 9, 10...20
^^^^^
php.ini of the verification environment 3 and
the verification environment 4 is the same file.
I think that it turns out that a value is different if it sees
from the above-mentioned result, and the versions of PHP differ.
I think that the correct answer of a session variable is PHP4.3.9.
Previous Comments:
------------------------------------------------------------------------
[2005-03-14 21:50:23] [EMAIL PROTECTED]
Switch register_globals = off..
------------------------------------------------------------------------
[2005-03-14 06:25:39] takayana at egate1 dot com
I'm sorry. Because I think that the explanation is insufficient of the
operation of the code,
operation is explained. The code also changed.
(http://www.egate1.com/docs/.tmp/code2.txt)
1.test_web1.php, test_web2.php, test_web3.php,
test_web4.php, test_web5.php, and
test_class.php are made from code2.txt.
2.Please execute test_web1.php. (5)is operated
from following(1).
(1) From a mini_data class Object
20 pieces are created.(array)
Each object no variable It substitutes from 1 to 20.
It $_SESSION['data'] It carries out.
(test_web1.php)
for($i=0; $i<20; $i++) {
$data[$i] = new mini_data();
$data[$i]->no = ($i+1);
}
$_SESSION['data'] = $data;
(2) Create one object of a mini_data class
and it is the value of no variable
of the object. It is made 4.
The object $_SESSION['data1'] It substitutes.
(test_web2.php)
$data = new mini_data();
$data->no = 4;
$_SESSION['data1'] = $data;
(3)$_SESSION['data1'] $_SESSION['data'] It substitutes.
(test_web3.php)
$data = $_SESSION['data'];
$data1 = $_SESSION['data1'];
$max = count($data);
for($i=0; $i<$max; $i++) {
if ( $data1->no == $data[$i]->no ) {
$data[$i] = $data1;
break;
}
}
$_SESSION['data'] = $data;
(4)$_SESSION['data'] At a head no variable value
The object of the mini_data class of 31 is added.
(test_web4.php)
$data = $_SESSION['data'];
$data2 = new mini_data();
$data2->no = 31;
array_unshift($data, $data2);
$_SESSION['data'] = $data;
(5)no variable value The object of the mini_data class
of 3 is created.
$_SESSION['data1'] It substitutes.
(test_web5.php)
$data3 = new mini_data();
$data3->no = 3;
$_SESSION['data1'] = $data3;
With PHP4.2.3 or PHP4.3.9 $_SESSION['data'] no variable value of
each array:
31, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10...20
Although I think that it becomes and this is
normal operation
With PHP4.3.10 $_SESSION['data'] no variable
value of each array:
31, 1, 2, 3, 3, 5, 6, 7, 8, 9, 10...20
It becomes and is doubled by 3. 4 will be lost.
------------------------------------------------------------------------
[2005-03-10 11:58:17] takayana at egate1 dot com
Description:
------------
By a Session variable Operation by PHP4.3.10 carries out different
operation from a low-ranking version.
When the following 6 files are created and test_web1.php is performed,
in the case of a low rank version (for example, PHP4.3.9)
$_SESSION '[data]' Arrangement id value 31, 1, 2, 3, 4, and 5 ...
Although set to 20, in the case of PHP4.3.10, it is. 31, 1, 2, 3, 3,
and 5 ... It will be set to 20.
Reproduce code:
---------------
http://www.egate1.com/docs/.tmp/code.txt
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32261&edit=1