Re: phpMyAdmin and arg_separator = "&"

From: Date: Sun, 11 Mar 2001 06:03:32 +0000
Subject: Re: phpMyAdmin and arg_separator = "&"
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-48636@lists.php.net to get a copy of this message
On Wed, 28 Feb 2001, Jim Winstead wrote: >In article <3A9D3F5F.B87E4202@sebastian-bergmann.de>, >sb@sebastian-bergmann.de wrote: >> Hi there, >> >> I just came across something very odd: >> >> After setting >> >> arg_separator = "&amp;" >> >> in my php.ini Tobias Ratschiller's phpMyAdmin no longer works >> correctly. >> >> The start page loads correctly, every page thereafter dies with an SQL >> error. > >things break because someone was dumb and used the "arg_separator" that >used to be used to handle parsing the incoming request to also handle the >parsing that the session-id adding stuff does, and then changed the >documentation for arg_separator without regard to the existing behavior. > >so the get parsing is now expecting to use &amp; to separate arguments >when you set arg_separator that way. > >there should be two config variables for this. This little patch (hack, I know :) addresses this problem. Please check it out and tell me whether it could be committed or not. This hack relies on the fact that only & and ; are supported by browsers. --Jani Index: php_variables.c =================================================================== RCS file: /repository/php4/main/php_variables.c,v retrieving revision 1.21 diff -u -r1.21 php_variables.c --- php_variables.c 2001/02/26 06:07:31 1.21 +++ php_variables.c 2001/03/11 05:52:51 @@ -218,7 +218,7 @@ void php_treat_data(int arg, char *str, zval* destArray ELS_DC PLS_DC SLS_DC) { char *res = NULL, *var, *val; - const char *c_var; + const char *c_var, *delim; pval *array_ptr; int free_buffer=0; char *strtok_buf = NULL; @@ -277,12 +277,16 @@ return; } + if (PG(arg_separator) != ";") { + delim = "&"; + } else { + delim = ";"; + } + if (arg == PARSE_COOKIE) { var = php_strtok_r(res, ";", &strtok_buf); - } else if (arg == PARSE_POST) { - var = php_strtok_r(res, "&", &strtok_buf); } else { - var = php_strtok_r(res, PG(arg_separator), &strtok_buf); + var = php_strtok_r(res, delim, &strtok_buf); } while (var) { @@ -298,7 +302,7 @@ if (arg == PARSE_COOKIE) { var = php_strtok_r(NULL, ";", &strtok_buf); } else { - var = php_strtok_r(NULL, PG(arg_separator), &strtok_buf); + var = php_strtok_r(NULL, delim, &strtok_buf); } } if (free_buffer) {

« previous php.dev (#48636) next »