2014-09-05 78 views
0

我写了一个CGI脚本添加参数,并执行以下操作:手动在Perl CGI

#!/usr/bin/perl 
use strict; 
use warnings; 
use CGI qw(:cgi-lib :standard); 
use CGI::Carp qw(warningsToBrowser fatalsToBrowser); 

my $q = new CGI; 
print $q->header; 
print "<center>"; 
print $q->h1('Let\'s do something!'); 
print "</center>"; 
print $q->start_html(-title => 'Do something'); 
print $q->end_form; 

our %in; 
&ReadParse(%in); 
my @keys = keys %in; 
my @values = values %in; 
main(); 

sub main{ 
    print "<center>"; 
    my $q0 = new CGI; 
    print $q0->start_form(
     -name => 'sniff_button', 
     -method => 'POST', 
     -enctype => &CGI::URL_ENCODED, 
    ); 
    print $q0->submit(
     -name  => 'button', 
     -value => 'Do something', 
    ); 
    print $q0->end_form; 
    print "</center>"; 
} 

我想做的是手动添加一些参数,因为下一个依赖于以前的状态和不仅在当前状态(所以我必须传递一个参数两次。)。
我已经做了param()和URI的东西,但都没有工作。有什么建议?

+0

你说的参数是什么意思?正确地解释*您正在尝试做什么,而不是*您如何尝试去做。 – ThisSuitIsBlackNot 2014-09-05 17:48:48

+5

您的意思是“我想让参数与用户提供的参数一起提交”?使用隐藏字段。 – ikegami 2014-09-05 17:53:33

+0

感谢兄弟。一个隐藏的领域做了这份工作(y)。 – TheChosenOne 2014-09-06 12:55:28

回答

1

隐藏字段是答案:

sub main{ 
    print "<center>"; 
    my $q0 = new CGI; 
    print $q0->start_form(
     -name  => 'sniff_button', 
     -method  => 'POST', 
     -enctype => &CGI::URL_ENCODED, 
    ); 
    print $q0->hidden(
     -name  => 'machine_state', 
     -default => 'some_previous_value'); 
    print $q0->submit(
     -name => 'button', 
     -value => 'Do something', 
    ); 
    print $q0->end_form; 
    print "</center>"; 
}