2014-09-05 76 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>"; 
}