in reply to Re^2: Perl CGI redirect
in thread Perl CGI redirect

Thanks for the help... Changed it to add text box. However this is opening in the same page. Is is possible to open on a new page and also check for mutiple servers

#!/usr/bin/perl # n.cgi use strict; use CGI qw( :standard ); use CGI::Carp qw( fatalsToBrowser ); use POSIX qw(strftime); my $today = time; my $yesterday = $today - 60 * 168 * 60; my $FM = strftime "%m-%d-%Y", ( localtime($yesterday) ); my $TM = strftime '%m-%d-%Y', localtime; # page layout my $page =<< "EndOfText"; <h2>NBU Backup Report</h2> <form name="form" method="post" action="n.cgi"> <table> <tr> <td align="right"><strong>Hostname</strong></td> <TD> <TEXTAREA NAME="server" ROWS=1 COLS=30 WRAP="server"></TEXTAREA> </td> </tr> <tr> <td colspan="2"> &nbsp; </td> </tr> <tr> <td> &nbsp; </td> <td> <input type="submit" name="action" value="Search" /> </td> </tr> </table> </form> EndOfText # get parameters my $q = CGI->new; my $action = $q->param('action'); my $server = $q->param('server'); # construct URL my $URL = "http://a.com:8080/bms/healthMonitor.do?method=redirect&oper +ation=BackupHistorySearch&subOperation=GetReport&clientName=$server&f +romDateStr=$FM&toDateStr=$TM"; # redirect if required if ($action eq 'Search'){ # remove hash to redirect print $q->redirect($URL); } else { print $q->header, $q->start_html('Page Title'), $page, # hash out next 2 lines or remove if OK # $q->p("Vars action=$action : server=$server : FM=$FM : TM=$TM "), $q->a({-href=>$URL, -target=>'_blank'},$URL), }

Replies are listed 'Best First'.
Re^4: Perl CGI redirect
by poj (Abbot) on Apr 17, 2013 at 15:53 UTC
    Not sure about multiple servers but to open a new page you can do it with some javascript. I have added the javascript to a new clickme button as an example.
    #!/usr/bin/perl # n.cgi use strict; use CGI qw( :standard ); use CGI::Carp qw( fatalsToBrowser ); use POSIX qw(strftime); my $today = time; my $yesterday = $today - 60 * 168 * 60; my $FM = strftime "%m-%d-%Y", ( localtime($yesterday) ); my $TM = strftime '%m-%d-%Y', localtime; # page layout my $page =<< "EndOfText"; <h2>Add Logical:</h2> <form name="form" method="post" action="n.cgi"> <table> <tr> <td align="right"><strong>Logical:</strong></td> <td> <textarea id="ta" name="server" rows="1" cols="30" wrap="soft"></te +xtarea> </td> </tr> <tr> <td colspan="2"> &nbsp; </td> </tr> <tr> <td> <button type="button" onClick="javascript:clickme()">Click Me</ +button></td> <td> <input type="submit" name="action" value="Search" /> </td> </tr> </table> </form> EndOfText # construct URL my $URL = 'http://a.com:8080/bms/healthMonitor.do?method=redirect' .'&operation=BackupHistorySearch' .'&subOperation=GetReport' ."&fromDateStr=$FM&toDateStr=$TM"; # javascript my $JSCRIPT=<<EOF; function clickme(){ var URL = \'$URL\' + '&clientName=' + document.getElementById("ta").value // comment out if or remove when working OK if (confirm(URL)==true) { window.open(URL) }; } EOF # get parameters my $q = CGI->new; my $action = $q->param('action'); my $server = $q->param('server'); # add server $URL .= "&clientName=$server"; # redirect if required if ($action eq 'Search'){ # remove hash to redirect print $q->redirect($URL); } else { print $q->header, $q->start_html( -title => "Some Title", -script=> $JSCRIPT), $page, $q->end_html; }
    poj

      Thanks for the response. However this adds the client to the end of the URL instead of adding it to place listed as XXXX. I tried to specift $ta, however it fails with the below error my $URL = "http://a.com:8080/bms/healthMonitor.do?method=redirect&operation=BackupHistorySearch&subOperation=GetReport&clientName=XXXX&fromDateStr=$FM&toDateStr=$TM"; Wed Apr 17 15:43:03 2013 n.cgi: Global symbol "$ta" requires explicit package name at ./n.cgi line 42. Wed Apr 17 15:43:03 2013 n.cgi: Execution of ./n.cgi aborted due to compilation errors.

        The parameter order should not normally matter but if it does just revise the javascript as follows
        my $JSCRIPT=<<EOF; function clickme(){ var URL = 'http://a.com:8080/bms/healthMonitor.do?method=redirect' + '&operation=BackupHistorySearch' + '&subOperation=GetReport' + '&clientName=' + document.getElementById("ta").value + '&fromDateStr=$FM&toDateStr=$TM' // comment out if or remove when working OK if (confirm(URL)==true) { window.open(URL) }; } EOF
        poj