Bug #5653 Updated: PIKE specific: with setcookie(), only the last cookie is written
| From: | cynic@php.net | Date: | Thu, 16 Aug 2001 16:55:28 +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-63446@lists.php.net to get a copy of this message | ||
ID: 5653
Updated by: cynic
Reported By: schulte@delta7.de
Status: Open
Bug Type: Other web server
Operating System: Linux
PHP Version: 4.0.5
New Comment:
[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.
Previous Comments:
------------------------------------------------------------------------
[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'
------------------------------------------------------------------------
[2001-07-23 19:26:00] andy@php.net
i meant to say "only lets you set ONE"
------------------------------------------------------------------------
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