[PHP-DOC] Bug #12324 Updated: arg_separator.output broken From: sniper <email protected>
Date: 07/31/01

ID: 12324
Updated by: sniper
Reported By: voudras <email protected>
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 <email protected>

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 <email protected>

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 <email protected>

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 <email protected>

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 <email protected>

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