http://www.perlmonks.org?node_id=823440

Chuma has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to get my CGI program to send certain information when you click on a link. It has to set a couple of variables, and then submit the information to the next CGI script. The only way I know of is by using Javascript, in this awfully messy way:
print ' <form name="theform" action="page2.cgi" method="post"> <input type=hidden name=x> <input type=hidden name=y> </form> <a href=javascript:document.theform.x.value=5; javascript:document.theform.y.value=7; javascript:document.theform.submit();> hello<\/a> ';
Is there a cleverer way to do this?
I also, if you pardon the heresy, tried doing it with PHP and session variables, but I couldn't figure out any way to get that working either.

Replies are listed 'Best First'.
Re: CGI question
by Corion (Patriarch) on Feb 16, 2010 at 09:47 UTC

    If your target accepts GET requests, you can simply issue a 302 redirect to send the user to their target location, see CGI on the redirect method.

      Oh right, I forgot to mention that. I could use a "get" instead, but that's inconvenient for other reasons. The user might input completely different values of x and y and mess things up. So I think it has to be "post".

        The user can also put in completely different values for X and Y in a POST request. If you want real security, either fetch the results on behalf of the user yourself, and output them to the user (using LWP::UserAgent), or store the data in a session and pick up the data in the target from that session.