Welcome to WebmasterWorld Guest from 23.22.46.195

Forum Moderators: coopster & jatar k & phranque

Pass parameters to an #exec cgi instruction

   
10:52 am on Jun 24, 2013 (gmt 0)



Hi Everyone,

I am trying to pass parameters to a perl script using

<!--#exec cgi="/cgi-bin/mywebsite/myscript.pl?param1=value1&param2=value2" -->


but it doesn't seem to work.

Can I do something like

<!--#include virtual="/cgi-bin/mywebsite/myscript.pl value1 value2" -->

instead ?

If not, what is the recommended way ?

Thank yo for your help.
12:01 pm on Jun 24, 2013 (gmt 0)

WebmasterWorld Administrator phranque is a WebmasterWorld Top Contributor of All Time 10+ Year Member Top Contributors Of The Month



welcome to WebmasterWorld, chapo!


http://httpd.apache.org/docs/2.0/mod/mod_include.html#element.exec
The include virtual element should be used in preference to exec cgi. In particular, if you need to pass additional arguments to a CGI program, using the query string, this cannot be done with exec cgi, but can be done with include virtual, as shown here:
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
12:53 am on Jun 25, 2013 (gmt 0)



Thank you for your answer.

What I need to do is have a mix of "local" variables (that I would pass as arguments of the
#include virtual
) and "global" variables in the URL of the webpage.

So I need to use CGI within my
#include virtual
for "global" as well as "local" variables but it doesn't seem to work. It allows me to get the "local" variables with
cgi->param("myvariablename")
but it won't detect the "global" ones.

Any pointers ?

Cheers
1:18 am on Jun 25, 2013 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You can set variables using SSI. These would be available to the script if they are set before the script is called:

<!--#set var="widget" value="red" -->


You can also pass environmental variables to the script by prepending a $ character to the env name:

<!--#include virtual=/cgi-bin/example.cgi?ip=$REMOTE_ADDR" -->


Hope this helps.
1:27 am on Jun 25, 2013 (gmt 0)



Sorry I am a bit of a newbie here but what is the difference between a regular variable on my webpage and an environmental variable ?

Let's say my URL looks like www.blabla.com/index.shtml?dt=20130625
And I want to use dt (20130625) as one of the parameters to my Perl script. Is that doable using your syntax of #include virtual ?
1:43 am on Jun 25, 2013 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You're passing a query string parameter to your perl script. This is stored in environmental variable QUERY_STRING. What you need to do is parse $ENV{'QUERY_STRING'} for dt=value
1:51 am on Jun 25, 2013 (gmt 0)



I am not though.

My URL is as above (www.blabla.com/index.shtml?dt=20130625) but the call to my script is done through an include virtual

<!--#include virtual="/cgi-bin/mywebsite/myscript.pl?param1=value1&param2=value2" -->
and the QUERY_STRING variable only contains what I have called the "local" variables (param1 and param2).

dt=20130625 is not part of the QUERY_STRING.

What I would like to do is have
<!--#include virtual="/cgi-bin/mywebsite/myscript.pl?param1=value1&param2=value2&dt=20130625" -->

where the dt=20130625 is dependant on what is in the URL (I can also store the 20130625 value in a variable)

Have I misunderstood something ?
2:05 am on Jun 25, 2013 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Maybe I am misunderstanding something. Where is dt=20130625 coming from? If it's a query string parameter in the url of the page that is using SSI you can try:

<!--#include virtual="/cgi-bin/mywebsite/myscript.pl?param1=value1&param2=value2&$QUERY_STRING" -->
2:09 am on Jun 25, 2013 (gmt 0)



Great that did the trick !
Thank you very much for your help.
 

Featured Threads

My Threads

Hot Threads This Week

Hot Threads This Month