在Perl中使用POST方法

将信息传递到CGI程序的一种更可靠的方法是 POST方法。这将以与GET方法完全相同的方式打包信息,但不是在?之后将其作为文本字符串发送。在URL中,它将作为单独的消息作为HTTP标头的一部分发送。Web服务器以标准输入的形式将此消息提供给CGI脚本。

以下是Perl脚本hello_post.cgi,用于处理Web浏览器给出的输入。该脚本将处理GET和POST方法。

#!/usr/bin/perl
local ($buffer, @pairs, $pair, $name, $value, %FORM);
#读入文本
$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'};
}
#将信息拆分为名称/值对
@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;