?
Solved

Passing an argument through a A HREF tag.

Posted on 1998-04-25
13
Medium Priority
?
409 Views
Last Modified: 2013-12-25
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.
0
Comment
Question by:cide
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 3
  • +2
13 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 1827966
<A href = "Smessage.pl?Username">
Would pass Username in $ENV{QUERY_STRING}
0
 

Author Comment

by:cide
ID: 1827967
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.
0
 
LVL 5

Expert Comment

by:icd
ID: 1827968
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.

0
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 

Author Comment

by:cide
ID: 1827969
Ok, thanks anyways.
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 1827970
Try this:

<FORM NAME="msgform" ACTION="Smessage.pl" METHOD="POST" TARGET="Frame5">
<INPUT NAME="USERNAME" TYPE="HIDDEN" VALUE="">
</FORM>
<A HREF="javascript:document.msgform.USERNAME.value='username1';document.msgform.submit();">User name 1</A>

Michel
0
 

Author Comment

by:cide
ID: 1827971
That's not an argument.  It's still form data.
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 1827972
But it is not via QUERY_STRING

Last attempts:
Use a stub and call your program that needs the argv as a subroutine
0
 
LVL 2

Accepted Solution

by:
jaked earned 100 total points
ID: 1827973
Actually, the CGI spec says that if the query string is of the form ?foo+bar+baz, rather than ?foo=bar&baz=quux, it gets split on the pluses and passed in as the arglist to the script. So ozo's example passes Username as argv[1] as well as in the QUERY_STRING environment variable.

0
 
LVL 84

Expert Comment

by:ozo
ID: 1827974
Actually, in Perl that would be $ARGV[0]
0
 
LVL 2

Expert Comment

by:jaked
ID: 1827975
You are right sir.
0
 
LVL 84

Expert Comment

by:ozo
ID: 1827976
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)
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 1827977
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
0
 
LVL 84

Expert Comment

by:ozo
ID: 1827978
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.

0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently I have been answering a lot of questions like this in IT forums that I frequent. The question posed is usually something along the lines of "We have software X installed and need to uninstall it for reason Y" or some other variant of the sa…
The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve t…
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.
Suggested Courses

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question