Bug #16458 Updated: header() does not replace headers but always produces duplicates

From: Date: Fri, 05 Apr 2002 19:13:23 +0000
Subject: Bug #16458 Updated: header() does not replace headers but always produces duplicates
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-4167@lists.php.net to get a copy of this message
ID: 16458 Updated by: ernest@vogelsinger.at Reported By: ernest@vogelsinger.at Status: Closed Bug Type: Output Control Operating System: Win32 (XP) PHP Version: 4.1.1 New Comment: Just checked the 4.2.0-RC2 and found the identical behaviour from the command line (with PHP.EXE, no headers are displayed, so I used PHP-CGI.exe). Previous Comments: ------------------------------------------------------------------------ [2002-04-05 13:50:47] ernest@vogelsinger.at If this bug doesn't exist with the Linux/Apache module it is ok for me - if it is this doesn't "work for me" at all... Reason: my application framework uses output buffering so headers don't get sent until ob_end_flush() is called. Especially any caching headers are /modified/ depending on results of the application computations. So it is not quite "easy" to "code around this 'bug'" - the caching headers are pre-set as soon as a session is established, and are not modifyable afterwards. In fact this 'bug' disables me to sent pages being cacheable, increasing server load and network traffic. And, with NetScape 4.x clients, pages resulting from posted forms cannot be resized (NS 4.x wants to resend the POST data to redraw the non-cacheable data). Any idea when 4.2.0 will be out as production version? On our production servers I cannot use an RC or -dev version, I need the stable build, so I have 4.1.2/RedHat Linux running there (cannot crosscheck the problem on the server just now). ------------------------------------------------------------------------ [2002-04-05 13:37:09] sander@php.net Reproduced with 4.1.2, but it works fine for me with 4.3.0-dev. You might want to try 4.2.0RC2 from www.php.net/~derick . Anyway, it should be easy to code around this 'bug'. ------------------------------------------------------------------------ [2002-04-05 13:29:24] ernest@vogelsinger.at From the docs: The optional "replace" parameter indicates whether the header should replace a previous similar header, or add a second header of the same type. By default it will replace, but if you pass in FALSE as the second argument you can force multiple headers of the same type. At least with PHP 4.1.1/Win32(XP), this is NOT true - headers are always added up. Using this little test: <?php header('X-Test-Header: Version 1'); header('X-Test-Header: Version 2'); ?> this output is created: ------------------------------------- php headers.php X-Powered-By: PHP/4.1.1 X-Test-Header: Version 1 X-Test-Header: Version 2 Content-type: text/html ------------------------------------- According to the docs, only "Version 2" of the header should be sent. The results are identical if you do not provide the "replace" parameter, or if you set it to true or false. This is a very annoying bug, and for my application I'd rate it "critical". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16458&edit=1

« previous php.bugs (#4167) next »