Bug #7934 Updated: HTTP_POST_VARS unable to handle same key multiple times

From: 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

« previous php.bugs (#14533) next »