Bug #52272 [Opn->Csd]: header() replace param works strange
Edit report at https://bugs.php.net/bug.php?id=52272&edit=1
ID: 52272
Updated by: mike@php.net
Reported by: saprykin dot dmitry at gmail dot com
Summary: header() replace param works strange
-Status: Open
+Status: Closed
Type: Bug
Package: Output Control
Operating System: Linux
PHP Version: Irrelevant
-Assigned To:
+Assigned To: mike
Block user comment: N
Private report: N
New Comment:
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at
http://www.php.net/downloads.php
Previous Comments:
------------------------------------------------------------------------
[2011-06-06 13:56:47] kentaro at ranvis dot com
The second parameter 'replace' for header() function only replaces the first header found
in FIFO manner, retaining all the remaining headers.
cf. main/SAPI.c calling zend_llist_del_element() in Zend/zend_llist.c (looked 5.3 branch and trunk)
Test script:
---------------
<?php
header('X-Foo: 1', true);
header('X-Foo: 2', false);
print_r(headers_list());
header('X-Foo: 3', true);
print_r(headers_list());
header('X-Foo: 4', false);
print_r(headers_list());
header('X-Foo: 5', true);
print_r(headers_list());
Expected result:
----------------
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 1
[2] => X-Foo: 2
)
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 3
)
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 3
[2] => X-Foo: 4
)
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 5
)
Actual result:
--------------
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 1
[2] => X-Foo: 2
)
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 2
[2] => X-Foo: 3
)
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 2
[2] => X-Foo: 3
[3] => X-Foo: 4
)
Array
(
[0] => X-Powered-By: PHP/5.3.6
[1] => X-Foo: 3
[2] => X-Foo: 4
[3] => X-Foo: 5
)
------------------------------------------------------------------------
[2010-07-07 12:12:34] saprykin dot dmitry at gmail dot com
Description:
------------
1) Output m headers with the same name using header($header, false)
2) Output n (n > m) headers with the same name using header($header, true)
Result) headers will not be replaced totally.
Script will send to output m last headers sent by header($header, true).
Test script:
---------------
<?php
/**
* PHP VERSION 5.3.0
*/
header('Set-Cookie: name1=; path=/; domain=.simple.ru', false);
header('Set-Cookie: name2=; path=/; domain=.simple.ru', false);
header('Set-Cookie: name3=; path=/; domain=.simple.ru', true);
header('Set-Cookie: name4=; path=/; domain=.simple.ru', true);
header('Set-Cookie: name5=; path=/; domain=.simple.ru', true);
print_r(headers_list());
?>
Expected result:
----------------
Array
(
[0] => Set-Cookie: name5=; path=/; domain=.simple.ru
)
Actual result:
--------------
Array
(
[0] => Set-Cookie: name4=; path=/; domain=.simple.ru
[1] => Set-Cookie: name5=; path=/; domain=.simple.ru
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=52272&edit=1
Thread (3 messages)