Bug #5653 Updated: PIKE specific: with setcookie(), only the last cookie is written

From: Date: Fri, 11 Jan 2002 21:45:04 +0000
Subject: Bug #5653 Updated: PIKE specific: with setcookie(), only the last cookie is written
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-76687@lists.php.net to get a copy of this message
ID: 5653 Updated by: lobbin Reported By: schulte@delta7.de Old Status: Open Status: Feedback Bug Type: Other web server Operating System: Linux PHP Version: 4.0.5 New Comment: Can this be reproduced with the PHP 4.1.1, and perhaps the latest roxen/pike? Previous Comments: ------------------------------------------------------------------------ [2001-08-16 12:55:28] cynic@php.net [2001-08-16 12:24:36] aldem-php@aldem.net There is small problem in Roxen's SAPI, which arises when duplicate headers are sent out. While playing with some PHP apps with Roxen, I found that regardless how many cookies are set in PHP code, only one is sent to the browser. Investigation shows that Roxen's SAPI uses Pike's type "mapping" to send headers, which (of course) doesn't allow duplicate headers (in my case "Set-Cookie") to be sent, i.e. only last one is sent, since subsequesnt calls to set header with the same name will replace previous. Proposed solution: use array instead of mapping. It will require changes in Roxen module as well, of course, but this should not be difficult. ------------------------------------------------------------------------ [2001-08-14 20:08:47] jmoore@php.net feedback -> open ------------------------------------------------------------------------ [2001-07-24 12:23:37] schulte@delta7.de OK here is the result... Variable Value PHP_SELF = /test.php HTTP_COOKIE_VARS["cookie3"] = phprocks if you don't believe you can try at www.delta7.de/test.php. The real problem is in source-file src/sapi/roxen/roxen.c about line 298 (in ver 4.0.6 of PHP)... this function (pike): mapping_string_insert(REQUEST_DATA, ind, &mappie); does not append headers of the same type (here cookies). this means: old cookies are deleted and replaced with the last one you set. The Problen is _not_ on the side of the webserver. I found out (and may proove) that the roxen-php-module will recieve more than only one cookie.... if you like, i would make some php-scripts that will show you... ------------------------------------------------------------------------ [2001-07-24 09:02:41] andy@php.net this could be because your server is only sending one cookie to browser Try creating a script like the one below... <? setcookie ("cookie1","helloworld"); setcookie("cookie2","ilovetheworld"); setcookie("cookie3","phprocks"); phpinfo(); ?> go down to the section about the "HTTP Headers Information" then go to the "HTTP Response Headers." Either post this information here, or give us the address to that page. ------------------------------------------------------------------------ [2001-07-24 02:01:28] schulte@delta7.de This is not a browser-specific bug. It's only pike-specifc (roxen) . I spent some time to undaerstand the roxen-sapi-code, but at last I'm not able to fix it. This 'bug' is already mentioned in the README.... ..sorry. So this 'bug' should be listed in 'missing features' or 'todo's' but not maybe not in 'bugs' ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/?id=5653 Edit this bug report at http://bugs.php.net/?id=5653&edit=1

« previous php.dev (#76687) next »