Perl CGI,Apache重写规则和表单发布数据

时间:2012-12-02 11:07:50

标签: forms perl cgi rewrite http-post

在我的perl CGI动态网站中,我结合了Apache URL重写和表单发布数据。

的Apache

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>  

以下perl代码将显示“数据”的空值,因为 cgi-&gt; param('data')不会返回任何内容,但 $ ENV {'QUERY_STRING'} 包含'data = 1234'

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参数中吗?

感谢。

FRED

1 个答案:

答案 0 :(得分:1)

您在示例中发布了表单,这意味着表单数据在请求正文中可用。查询字符串仅用于GET方法。你不能混合使用POST和GET。