Req #45272 [Com]: no ini setting to inhibit conversion of dots to underscores in $_REQUEST
| From: | pravdin at vl dot ru | Date: | Mon, 14 May 2012 03:18:21 +0000 |
| Subject: | Req #45272 [Com]: no ini setting to inhibit conversion of dots to underscores in $_REQUEST | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-170417@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=45272&edit=1
ID: 45272
Comment by: pravdin at vl dot ru
Reported by: tavin dot cole at gmail dot com
Summary: no ini setting to inhibit conversion of dots to
underscores in $_REQUEST
Status: Open
Type: Feature/Change Request
Package: *Web Server problem
Operating System: any
PHP Version: 5.2.6
Block user comment: N
Private report: N
New Comment:
In PHP 5.4 INI the register_globals setting was removed finally. So, this atricle in documentation
become not true:
"Dots in incoming variable names
Typically, PHP does not alter the names of variables when they are passed into a script. However, it
should be noted that the dot (period, full stop) is not a valid character in a PHP variable
name."
Because external variables will never become internal variables, translation dots to underscores
become senseless.
Please, add an INI setting to disable dots to underscores translation!
Previous Comments:
------------------------------------------------------------------------
[2008-06-15 17:52:45] tavin dot cole at gmail dot com
the following is a trivial patch for those needing a workaround to this problem. it only inhibits
the munging of dots and doesn't address things like spaces and square brackets. it also
doesn't address introducing an INI setting.
diff -ru php-5.2.6._dist/main/php_variables.c php-5.2.6._mine/main/php_variables.c
--- php-5.2.6._dist/main/php_variables.c 2007-12-31 07:20:15.000000000 +0000
+++ php-5.2.6._mine/main/php_variables.c 2008-06-14 23:34:25.000000000 +0000
@@ -91,7 +91,7 @@
/* ensure that we don't have spaces or dots in the variable name (not binary safe) */
for (p = var; *p; p++) {
- if (*p == ' ' || *p == '.') {
+ if (*p == ' ' /*|| *p == '.'*/) {
*p='_';
} else if (*p == '[') {
is_array = 1;
------------------------------------------------------------------------
[2008-06-14 23:01:55] tavin dot cole at gmail dot com
Description:
------------
It's well known that PHP converts dots to underscores for incoming variable names. This is
very frustrating when writing modern PHP code with register_globals off and using $_REQUEST etc.
instead.
It's been stated this will not be changed due to BC issues.
Why not introduce an INI setting to inhibit this behavior?
Thanks for your consideration.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=45272&edit=1