使用 Perl 中的 POST 方法


向 CGI 程式傳遞資訊的一種更加可靠的方法是使用 POST 方法。此方法按與 GET 方法完全相同的方式打包資訊,但不會在 URL 中以 ? 後的文字字串形式傳送該資訊,而是將其作為 HTTP 標頭的一部分以一條單獨的訊息的形式傳送。Web 伺服器會以標準輸入的形式向 CGI 指令碼提供此訊息。

以下為一個稱為 hello_post.cgi 的 Perl 指令碼,用於處理來自 Web 瀏覽器的輸入。此指令碼將處理 GET 方法和 POST 方法。

#!/usr/bin/perl
local ($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;
}
$first_name = $FORM{first_name};
$last_name = $FORM{last_name};
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 $first_name $last_name - Second CGI Program</h2>";
print "</body>";
print "</html>";
1;

更新於:2019 年 12 月 2 日

1 千次以上瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.