我想使用HTML表單將變量傳遞給Perl CGI腳本,以便我可以處理該變量,然後在另一個HTML頁面上將其打印出來。如何將變量從HTML表單傳遞給perl cgi腳本?
這是我的HTML代碼:http://jsfiddle.net/wTVQ5/。
這是我的Perl CGI腳本來鏈接HTML。這是我想要做的方式(因爲它使用較少的線條,可能更有效)。
#!/usr/bin/perl
use warnings; use strict;
use CGI qw(:standard);
my $query = CGI->new;
# Process an HTTP request
my $user = $query->param('first_name');
# process $user... for example:
my $foo = "Foo";
my $str = $user . $foo;
print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Hello - Second CGI Program</title>";
print "</head>";
print "<body>";
print "<h2>Hello $str - Second CGI Program</h2>";
print "</body>";
print "</html>";
1;
這裏有一個方法,我從tutorial閱讀,使我更有意義:
#!/usr/bin/perl
use warnings; use strict;
my ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else {
$buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
my $user = $FORM{first_name};
# process $user... for example:
my $foo = "Foo";
my $str = $user . $foo;
print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Hello - Second CGI Program</title>";
print "</head>";
print "<body>";
print "<h2>Hello $str - Second CGI Program</h2>";
print "</body>";
print "</html>";
1;
這兩種不正常BTW工作。當我點擊HTML頁面上的提交按鈕時,它只是將我鏈接到腳本,而不是傳遞變量,處理它並打印出HTML頁面。
在哪個服務器上?阿帕奇? – 2013-05-04 19:47:53
我正在使用Komodo Edit來編寫和查看HTML和SSH服務器以測試最終結果。不幸的是,我之前從未使用apache,也沒有安裝它。 – cooldood3490 2013-05-04 19:50:27
在第二個例子中,你絕對應該*不要*使用錯誤的參數處理代碼。 CGI模塊正確執行此操作。實際發送到腳本的是什麼?例如,如果將所有參數轉儲到錯誤日誌中,會發生什麼? – friedo 2013-05-04 19:53:31