Bug #16195 Updated: GET/POST-vars does not work according to standards
| From: | mail4news at mailme dot dk | Date: | Sun, 14 Jul 2002 17:09:10 +0000 |
| Subject: | Bug #16195 Updated: GET/POST-vars does not work according to standards | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-14146@lists.php.net to get a copy of this message | ||
ID: 16195
Updated by: mail4news@mailme.dk
Reported By: mail4news@mailme.dk
-Status: Bogus
+Status: Open
Bug Type: Feature/Change Request
Operating System: All
PHP Version: 4.1.2
New Comment:
Perhaps two new arrays should be included, like _GETA and _POSTA that
will return an array instead of a single value?
Previous Comments:
------------------------------------------------------------------------
[2002-07-14 13:07:13] rasmus@php.net
Tough - this won't change
------------------------------------------------------------------------
[2002-07-14 13:04:06] mail4news@mailme.dk
That's not correct for id and name attributes. Those attributes are
specified as CDATA, but in the CDATA description, you'll see that it
spesifically imposes restraints on the id and name attributes.
From the spesifications:
http://www.w3.org/TR/html401/types.html#type-cdata
"For some HTML 4 attributes with CDATA attribute values, the
specification imposes further constraints on the set of legal values
for the attribute that may not be expressed by the DTD"
Further down it says:
"ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters, digits ([0-9]), hyphens ("-"),
underscores ("_"), colons (":"), and periods (".")"
Since [] aren't part of the allowed characters, we can't count on the
browser to send these characters correctly. Even if most browsers (if
not all), supports this, PHP forces people to break standards.
------------------------------------------------------------------------
[2002-07-09 11:34:57] markonen@php.net
The HTML 4 and XHTML standards in fact do support the []
characters in input field names.
See:
http://www.w3.org/TR/html401/interact/forms.html#h-17.4
for
HTML 4.01
and
http://www.w3.org/TR/xhtml-modularization/
abstract_modules.html#s_extfor for XHTML 1.1
------------------------------------------------------------------------
[2002-06-08 10:50:13] bigredlinux@yahoo.com
I think it has become a well adopted standard to use the [] in the
names to specify an array or list. I can't think of a browser or
language that does not support this.
------------------------------------------------------------------------
[2002-03-20 18:43:14] mail4news@mailme.dk
According to (X)HTML standards you are allowed to have more than one
variable with the same name in a form. One example of this is a listbox
where the user can select multiple items.
The common solution to this is to use "[]" after the name of the
variable so that PHP treats it as an array. Ex: <select name="foo[]">
According to the standards, these characters are not allowed in the
name. It is unlikely, but not probable, that you may risk
incompatibillity problems with some browsers. Even though most browsers
accepts it, I think PHP should follow the standards.
One solution:
I haven't seen the source code, so this may be more complicated to fix
than I think. When parsing the data from the request there should be a
check in the code that checks if it has recieved a variable with the
same name. If so, it should change the original variable to an array
and add the new variable in that array.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=16195&edit=1