Perl CGI プログラムで URL パラメータを読み取るにはどうすればよいですか?
3 に答える
GET リクエストの場合、CGIは指定されたパラメーターを解析し、param()
メソッドを介してそれらを使用できるようにします。
POST リクエストの場合、param()
は postdata からパラメーターを返しますが、URL 自体のクエリ文字列を介して指定されたパラメーターは、引き続きurl_param()
メソッドから使用できます。(これは、POST リクエストが よりも大きい場合に役立ちます$CGI::POST_MAX
。その場合、CGI はポストデータを破棄するだけですが、適切なエラー メッセージを提供するために、どのような種類のリクエストであったかを識別するクエリ文字列パラメーターを用意することができます。)
ISINDEX スタイル リクエストの場合、リクエストされたキーワードは、keywords()
メソッドを介して、またはparam()
偽の「keywords」パラメータを介して利用できます。
更新:「URL パラメーター」でパラメーター以外の何かを意味する場合、url()
メソッドは要求された URL のすべてまたは一部を提供します。スクリプトの URL の取得を参照してください。
ysth で言及されているような URL パーサーを使用することをお勧めしますが、生の入力が本当に必要な場合は、次の方法で入手できます。
忘れる:
$contents = $ENV{'QUERY_STRING'};
ポストの場合:
$contents = <STDIN>;
このようにコードを試してください:
my @names = $query->param;
foreach $name ( @names ) {
if ( $name =~ /\_/ ) {
next;
} else {
print "<p> ".$name."\t=\t".$query->param($name) . "</p>\n";
}
}