Bug #12324 Updated: arg_separator.output broken
| From: | sniper@php.net | Date: | Wed, 01 Aug 2001 00:03:45 +0000 |
| Subject: | Bug #12324 Updated: arg_separator.output broken | ||
| References: | 1 | Groups: | php.dev php.doc |
| Request: | Send a blank email to php-dev+get-61695@lists.php.net to get a copy of this message | ||
ID: 12324
Updated by: sniper
Reported By: voudras@phpking.org
Old Status: Open
Status: Analyzed
Old Bug Type: *Configuration Issues
Bug Type: Documentation problem
Operating System: linux
PHP Version: 4.0.6
New Comment:
arg_separator.output - defines which separator character
is used in the PHP written URLs (ie. transparent sessids)
arg_separator.input - defines which separator characrters
(yes, there can be many) are used to separate the variables
in query string. This can NOT changed in script since
the time the script is run, the query string has already
been processed. You can only change this in php.ini / httpd.conf / .htaccess files.
Reclassified as documentation problem. The ini-directives
documentation lacks (not only) these. Also, the documentation should be restructured to show which
directives can be change and where. Some kind of table maybe?
--Jani
Previous Comments:
------------------------------------------------------------------------
[2001-07-31 18:10:23] voudras@phpking.org
This is a tricky lil bug, real easy to overlook. At the following url i have a script with your
example code - and it does not function properly:
http://wart.phpking.org/test3.php
you can see some other examples of how this doesnt work at
http://wart.phpking.org/test.php
http://wart.phpking.org/test2.php
again, this seems to execute fine on windows based php/apache systems
(which is probably a good clue as to where the problem exists).
- ini_get("arg_separator.input") does not return the 'local' value, but instead
the default or php.ini value (this is different than with ini_get(
"arg_separator.output"). Perhpas this is intensional?
- the above problem probably contributes to the fact that where the query_string is parsed for
variables - it always gets the default arg_separator.*
------------------------------------------------------------------------
[2001-07-31 11:00:07] andy@php.net
ok... the problem exists in your script at
http://wart.phpking.org/test.php
but using the EXACT script that I created, it works fine...
Please use this one... (EXACTLY)
status -> closed
------------------------------------------------------------------------
[2001-07-31 10:55:35] andy@php.net
i have gotten emails from people saying that they have reproduced
this error. Can anybody from PHP verify this? I have not been
able to reproduce this error (using the script in my last post.)
------------------------------------------------------------------------
[2001-07-24 09:20:39] andy@php.net
you have your params mixed up. replace arg_separator.output
with arg_separator.input and things will work. I modified
your script below. This one works as you wanted it to.
<?php
global $HTTP_POST_VARS,$HTTP_GET_VARS, $HTTP_COOKIE_VARS,
$PHP_SELF;
ini_set("arg_separator.input", ";");
define("a", ini_get("arg_separator.input"));
if($HTTP_GET_VARS){
$total = count($HTTP_GET_VARS);
echo "Displaying GET variables";
while(list($key, $val) = each($HTTP_GET_VARS)) {
echo "<br />Key: '$key' Value '$val'";
}
}
echo "<hr>";
echo "<A HREF=\"$PHP_SELF?i=am".a."do=one\">Click to
activate test</a>";
echo "<hr>";
?>
------------------------------------------------------------------------
[2001-07-23 20:22:46] voudras@phpking.org
I've tested this problem on both php4.0.5 and 4.0.6, and it has also reproduced on other
machines. I will not however, that this problem does not seem to occur on windows/apache machines.
the problem is that get vars using an arg_separator.output other than '&' will be
ignored when attempting to parse HTTP_GET_VARS.
there is an example avaliable at
http://wart.phpking.org/test.php
the source is visible at
http://wart.phpking.org/test.phps
a side note - it would seem that the transparent session info appended to a url by php will also not
follow a new 'arg_separator.output' value.. for example - if i set the
arg_separator.output to ';'.. my PHPSESSID will still be appended to the url with a
'&'
-voudras
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=12324&edit=1