Bug #7934 Updated: HTTP_POST_VARS unable to handle same key multiple times
| From: | chrisrivera at chrisrivera dot com | Date: | Thu, 18 Jul 2002 13:52:34 +0000 |
| Subject: | Bug #7934 Updated: HTTP_POST_VARS unable to handle same key multiple times | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-14533@lists.php.net to get a copy of this message | ||
ID: 7934
Updated by: chrisrivera@chrisrivera.com
Reported By: bzeeb+php@zabbadoz.net
Status: Closed
Bug Type: Variables related
Operating System: FreeBSD
PHP Version: 4.0.3
New Comment:
Why is it that the '[]' is needed in the name attribute? Isn't this
considered a bug then? Looping through the vars should return that it
is an Array by default without the need of adding '[]' to the name
attribute. This seems to be more of a hack than a solution.
Previous Comments:
------------------------------------------------------------------------
[2000-11-23 05:25:33] sniper@php.net
Just add [] to the name. i.e.
<input type="checkbox" name="FORM_key[]" value="2">
--Jani
------------------------------------------------------------------------
[2000-11-22 17:03:47] bzeeb+php@zabbadoz.net
Using p.ex. function from FAQ 7.1 to read HTTP_POST_VARS one
is unable to handle/see all key-value-pairs when key is the same for
multiple values. I did not find any way to see all pairs (well one
might define an array as name but that is not what CGI standard expects
I think).
p.ex. having something like this in a HTML form:
<input type=checkbox name="FORM_key" value="2">
<input type=checkbox name="FORM_key" value="8">
<input type=checkbox name="FORM_key" value="19">
would only result in:
FORM_key -> 19
sizeof($HTTP_POST_VRS) = 1
instead of
FORM_key -> 2
FORM_key -> 8
FORM_key -> 19
where sizeof would return 3.
This is most likely caused by using some kind of associative array
instead
of using indexes. I did not manage to solve this by using other array
f()s.
I do not have time to look at the source code - sorry.
A simple dirty quick hack perl-script shows you that one does get all
the
three values:
--- snipp ---
#!/usr/bin/perl
printf("Content-Type: text/html\n\n");
if ($ENV{'CONTENT_LENGTH'} > 0) {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
printf("\nPOST-Buffer (raw):<br>\n");
printf("%s\n", $buffer);
printf("\nPOST-Buffer (split up):<br>\n");
foreach $pair (@pairs) {
printf("%s<br>\n", $pair);
}
} else {
printf("NO HTTP_POST_VARs -> nothing to do here<br>\n");
}
# End;
--- snipp ---
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=7934&edit=1