php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12608 $REDIRECT_QUERY_STRING isn't parsed into $HTTP_GET_VARS
Submitted: 2001-08-06 18:57 UTC Modified: 2001-08-07 17:38 UTC
From: havardda-dev at orakel dot ntnu dot no Assigned:
Status: Not a bug Package: Variables related
PHP Version: 4.0.5 OS: Debian potato GNU/Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: havardda-dev at orakel dot ntnu dot no
New email:
PHP Version: OS:

 

 [2001-08-06 18:57 UTC] havardda-dev at orakel dot ntnu dot no
The summary field really says it all:
Upon writing a customized 404 script, I stumbled upon the fact that the $HTTP_SERVER_VARS["REDIRECT_QUERY_STRING"] didn't break up into $HTTP_GET_VARS, even though one would expect it to. 
Is there a reason to this? I tried going through the bug database and the email archives, but I didn't seem to find anything similar. My apologies if this still is a second bug report, or if there's some perfectly valid explanation given somewhere.

Thanks for a great tool, by the way.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-07 08:40 UTC] andy@php.net
I don't know if I read this right, because it was a bit confusing,
but I'll take a shot.

$HTTP_GET_VARS parses the query string for the current page...
I can't think of a good example right now, but it could mess things
up if REDIRECT_QUERY_STRING broke up into HTTP_GET_VARS.

If you wanted to do something like that try a script like the following...
[not tested]
<?
$splitby=split("&",$HTTP_SERVER_VARS["REDIRECT_QUERY_STRING"]);
for ($i=0;$i<count($splitby);$i++){
$splitfurther=split("=",$splitby[$i]);
$$splitfurther[0]=$splitfurther=[1];
}

This should put the REDIRECT_QUERY_STRING into variables,
like if the redirect query string was foo=bar, then your script should
parse it so that $foo="bar";

Does this help?


 [2001-08-07 09:38 UTC] havardda-dev at orakel dot ntnu dot no
Thanks for the reply.

Sorry that the first post was confusing, I'll try explaining my situation more thoroughly:
I have a site that generates dynamic content. I don't want long, not-user-friendly urls of the form "http://../project/read.php?objectid=33255&section=2355", so I've written a custom 404 script that lets me do a "http://.../project/sectionname/objectname" in true Jakob Nielsen spirit.

So far so good, but say I want to append "?lang=en" (or any get variable) to the url? If I do, the 404 script doesn't see $HTTP_GET_VARS(it is empty), so I have to look at $RQS ($REDIRECT_QUERY_STRING), as per the original note.
This isn't really a problem, I use parse_str() to break up $RQS, and all is well.

So why all the hassle, if all is well? Well, because contrary to what you say, I think (but I may ofcoursly be wrong on this, it wouldn't be the first time :) that breaking up the query string into HTTP_GET_VARS would be a right thing. If I understand the whole 404 process correctly, there will never be a $QUERY_STRING (which normally is what ends up in HTTP_GET_VARS and $argv, I presume) in a 404 script, but instead a $REDIRECT_QUERY_STRING. If this is correct, using $REDIRECT_QUERY_STRING in the same manner as $QUERY_STRING is ok, because both cannot be set at the same time.

Please correct me if I'm wrong.

 [2001-08-07 12:22 UTC] havardda-dev at orakel dot ntnu dot no
Thanks for the reply.

Sorry that the first post was confusing, I'll try explaining my situation more thoroughly:
I have a site that generates dynamic content. I don't want long, not-user-friendly urls of the form "http://../project/read.php?objectid=33255&section=2355", so I've written a custom 404 script that lets me do a "http://.../project/sectionname/objectname" in true Jakob Nielsen spirit.

So far so good, but say I want to append "?lang=en" (or any get variable) to the url? If I do, the 404 script doesn't see $HTTP_GET_VARS(it is empty), so I have to look at $RQS ($REDIRECT_QUERY_STRING), as per the original note.
This isn't really a problem, I use parse_str() to break up $RQS, and all is well.

So why all the hassle, if all is well? Well, because contrary to what you say, I think (but I may ofcoursly be wrong on this, it wouldn't be the first time :) that breaking up the query string into HTTP_GET_VARS would be a right thing. If I understand the whole 404 process correctly, there will never be a $QUERY_STRING (which normally is what ends up in HTTP_GET_VARS and $argv, I presume) in a 404 script, but instead a $REDIRECT_QUERY_STRING. If this is correct, using $REDIRECT_QUERY_STRING in the same manner as $QUERY_STRING is ok, because both cannot be set at the same time.

Please correct me if I'm wrong.

 [2001-08-07 17:38 UTC] jeroen@php.net
It is the responsibility of the 404-script to pass on the query string (as far as relevant). This is not a bug, the original query string is not anymore a get-variable-list, only the new query string is.

Use urlencode, implode, and that kind of functions to append the 'old'query-string to the new one.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 15:01:29 2024 UTC