cide
asked on
Passing an argument through a A HREF tag.
Greetings,
I want to run a Perl script using an A HREF tag, and be able to pass a variable along with it as well.
example:
<A href = "Smessage.pl Username" target ="Frame5">Send</a>
The script would recieve "Username" as an argument (I'm using perl and would like to use $ARGV). If it's not possible to do this with an argument how would I do this as a get/post action? I've seen it done on the web before. Much like a banner advertisement sending the page owners name to the cgi script.
Thanks in Advance.
I want to run a Perl script using an A HREF tag, and be able to pass a variable along with it as well.
example:
<A href = "Smessage.pl Username" target ="Frame5">Send</a>
The script would recieve "Username" as an argument (I'm using perl and would like to use $ARGV). If it's not possible to do this with an argument how would I do this as a get/post action? I've seen it done on the web before. Much like a banner advertisement sending the page owners name to the cgi script.
Thanks in Advance.
ASKER
Yeah, I know how to do that. I was wondering if it was possible through the $ARGV. I don't really want to use the QUERY_STRING but maybe I'll have to.
You only have two options. The method that ozo gave uses the GET method which puts the data in the QUERY_STRING. With a form (but not with a HREF) you can use the POST method which puts the data in stdin. There is no other way.
ASKER
Ok, thanks anyways.
Try this:
<FORM NAME="msgform" ACTION="Smessage.pl" METHOD="POST" TARGET="Frame5">
<INPUT NAME="USERNAME" TYPE="HIDDEN" VALUE="">
</FORM>
<A HREF="javascript:document. msgform.US ERNAME.val ue='userna me1';docum ent.msgfor m.submit() ;">User name 1</A>
Michel
<FORM NAME="msgform" ACTION="Smessage.pl" METHOD="POST" TARGET="Frame5">
<INPUT NAME="USERNAME" TYPE="HIDDEN" VALUE="">
</FORM>
<A HREF="javascript:document.
Michel
ASKER
That's not an argument. It's still form data.
But it is not via QUERY_STRING
Last attempts:
Use a stub and call your program that needs the argv as a subroutine
Last attempts:
Use a stub and call your program that needs the argv as a subroutine
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Actually, in Perl that would be $ARGV[0]
You are right sir.
Even so, I'd hesitate to recommend using $ARGV[0] rather than $ENV{QUERY_STRING}
If you ever did get an = there, you could lose the @ARGV parameters
(You'd have to use something like ?foo%3dbar&baz%3dquux in that case)
If you ever did get an = there, you could lose the @ARGV parameters
(You'd have to use something like ?foo%3dbar&baz%3dquux in that case)
When I needed to have a program running as a cgi AND standalone, I would test the arguments passed and if empty I would look at the environment variables.
Michel
Michel
But as jaked points out, you can't rely on @ARGV being empty when running as a CGI.
Also, you omit the case of parameters being passed in STDIN.
BTW, with
use CGI.pm;
all the arg parsing is done for you as a CGI, and you can also
pass arguments on the command line or in STDIN for stand alone testin.
Also, you omit the case of parameters being passed in STDIN.
BTW, with
use CGI.pm;
all the arg parsing is done for you as a CGI, and you can also
pass arguments on the command line or in STDIN for stand alone testin.
Would pass Username in $ENV{QUERY_STRING}