7

如何在 Perl CGI 程序中读取 URL 参数?

4

3 回答 3

13

对于GET 请求CGI解析指定的参数并通过该param()方法使它们可用。

对于POST 请求param()将返回来自 postdata 的参数,但通过 URL 本身中的查询字符串指定的任何参数仍可从该url_param()方法获得。(当 POST 请求大于 时,这会很有帮助$CGI::POST_MAX;在这种情况下,CGI 只会丢弃 postdata,但您可以安排查询字符串参数来识别它是什么类型的请求,以提供良好的错误消息。)

对于ISINDEX 样式的请求,请求的关键字可以通过keywords()方法获得,也可以通过param()虚假的“关键字”参数获得。

更新:如果您的意思不是“URL 参数”的参数,该url()方法将提供所请求的 URL 的全部或部分;请参阅获取脚本的 URL

于 2009-06-15T15:21:07.727 回答
4

建议您使用 ysth 提到的 URL 解析器,但如果您真的想要原始输入,可以通过以下方式获得:

忘记:

$contents = $ENV{'QUERY_STRING'};

对于 POST:

$contents = <STDIN>;
于 2009-06-15T15:28:22.047 回答
3

试试这样的代码:

my @names = $query->param;
foreach $name ( @names ) {
    if (  $name =~ /\_/ ) { 
        next;
    } else {
        print "<p> ".$name."\t=\t".$query->param($name) . "</p>\n";
    }
}
于 2012-06-27T20:12:01.540 回答