如何在Perl CGI程序中读取URL参数?
答案 0 :(得分:12)
对于 GET请求,CGI会解析指定的参数,并通过param()
方法使其可用。
对于 POST请求,param()
将返回postdata中的参数,但是通过URL本身中的查询字符串指定的任何参数仍然可以从url_param()
方法获得。 (当POST请求大于$CGI::POST_MAX
时,这可能会有所帮助;在这种情况下,CGI只会丢弃postdata,但您可以安排查询字符串参数来确定提供良好请求的请求类型错误信息。)
对于 ISINDEX样式请求,所请求的关键字可以通过keywords()
方法获得,也可以通过param()
在虚假“关键字”参数中获得。
更新:如果您通过“网址参数”表示参数以外的其他内容,url()
方法会提供所请求网址的全部或部分内容;见OBTAINING THE SCRIPT'S URL。
答案 1 :(得分:4)
建议你使用ysth提到的URL解析器,但是如果你真的想要原始输入,可以通过以下方式获得:
获取GET:
$contents = $ENV{'QUERY_STRING'};
用于POST:
$contents = <STDIN>;
答案 2 :(得分:3)
尝试代码:
my @names = $query->param;
foreach $name ( @names ) {
if ( $name =~ /\_/ ) {
next;
} else {
print "<p> ".$name."\t=\t".$query->param($name) . "</p>\n";
}
}