PERL CGI Get all GET parameters and put them together

I want to get ALL parameters of GET method and put them together in a single string variable...

ex.

If Test.pl?a=1&b=2&c=3&d=%20Test%20 called

I want to have a=1&b=2&c=3&d=%20Test%20 in a single string variable in same format with & and html encoded.

Thanks from now!
LVL 17
CSecurityAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Adam314Connect With a Mentor Commented:
Here are some environment variables that might help with what you want:
SCRIPT_NAME   - The name of the script as seen by the web browser (eg: /test.pl)
SERVER_NAME   - The hostname (eg: www.mysite.com)
QUERY_STRING  - The part after the question mark (eg: a=1&b=2&c=3&d=%20Test%20)
SERVER_PORT   - The port, part after the colon of hostname, or 80 if not specified
REQUEST_URI   - "$ENV{SCRIPT_NAME}?$ENV{QUERY_STRING}"
HTTP_HOST     - "$ENV{SERVER_NAME}:$ENV{SERVER_PORT}"

Open in new window

0
 
Adam314Commented:
You could just get the $ENV{QUERYSTRING}, and this would be exactly the querystring to your script.
0
 
CSecurityAuthor Commented:
I want URL and parameters all together

I mean:

http://www.mysite.com/test.pl?a=1&b=2&c=3&d=%20Test%20

I want entire URL
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
hieloCommented:
$ENV{REQUEST_URI}
0
 
Adam314Commented:
my $EntireURL = "http://www.mysite.com/test.pl?$ENV{QUERY_STRING}"
0
 
CSecurityAuthor Commented:
There isn't a method to get it dynamically?
0
 
Adam314Commented:
The REQUEST_URI will not contain the protocol (http), or the domain (www.mysite.com).  And if the current page is different from the desired link, it will not be correct.
0
 
hieloCommented:

my $EntireURL = "$ENV{REQUEST_URI}?$ENV{QUERY_STRING}" ;
0
 
Adam314Commented:
What do you want to get?  There are several environment variables that contain different parts of what you are asking for.
0
 
hieloCommented:
I meant SCRIPT_URI
my $EntireURL = "$ENV{SCRIPT_URI}?$ENV{QUERY_STRING}" ;
0
 
Adam314Commented:
SCRIPT_URI?   I don't have this - I am using apache... what webserver are you using?
0
 
hieloConnect With a Mentor Commented:
>>SCRIPT_URI?   I don't have this - I am using apache... what webserver are you using?
apache. Not sure what version the webhost is using. It gives me the full url MINUS the querystring!
0
 
Adam314Commented:
I'm using apache 2.2.8, which looks to be the newest release.... wondering if SCRIPT_URI is a non-standard add-on your host is using.
0
 
FishMongerConnect With a Mentor Commented:
Partial quote from http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
(SCRIPT_URI is probably documented elsewhere, but that was the first google hit)
This module keeps track of two additional (non-standard) CGI/SSI environment variables named SCRIPT_URL  and SCRIPT_URI. These contain the logical Web-view to the current resource, while the standard CGI/SSI variables SCRIPT_NAME and SCRIPT_FILENAME contain the physical  System-view.
 
Notice: These variables hold the URI/URL as they were initially requested, that is, before any rewriting. This is important to note because the rewriting process is primarily used to rewrite logical URLs to physical pathnames.
Example
 
SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html
SCRIPT_FILENAME=/u/rse/.www/index.html
SCRIPT_URL=/u/rse/
SCRIPT_URI=http://en1.engelschall.com/u/rse/

Open in new window

0
 
Adam314Commented:
With 2.2.8.... I meant 2.2 is the latest - there is a 2.2.9 released on 2008-06-13, but I doubt this would have changed.
0
 
Adam314Commented:
Thanks FishMonger!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.