使用 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;
广告