1

私の perl CGI 動的 Web サイトでは、Apache URL の書き換えとフォーム投稿データを組み合わせています。

アパッチ

Alias "/test" "C:/Users/Fred/workspace/test"
<Directory "/Users/Fred/workspace/test/">
Allow from 127.0.0.1
Options +ExecCGI
RewriteEngine On
RewriteBase /test/
RewriteRule ^$ cgi-bin/index.pl [L]
RewriteRule ^fred/(.+)$ cgi-bin/fred.pl?data=$1 [L]
</Directory>

HTMLフォーム

<form action="fred/1234" method="post">
  <input type="text" name="text" value="ABCD" />
  <input type="submit" />
</form>  

$ENV{'QUERY_STRING'}には'data=1234'が含まれていますが、 cgi->param('data')は何も返さないため、次の perl コードは 'data' に空の値を表示します。

my $cgi = CGI->new;
print $cgi->header();

print Dumper($ENV{'QUERY_STRING'});

my $data = $cgi->param('data');
my $text = $cgi->param('text');

print "data=$data<br/>";
print "text=$text<br/>";

「データ」変数が CGI パラメーターに含まれていない理由がわかりませんか?

ありがとう。

フレッド

4

1 に答える 1

1

例ではフォームを POST しています。つまり、フォーム データはリクエスト本文で使用できます。クエリ文字列は、GET メソッドでのみ使用されます。POST と GET を混在させることはできません。

于 2012-12-02T11:14:24.740 に答える