执行cgi的HTML表单操作无效

时间:2013-05-24 15:47:25

标签: perl apache cgi

我一直在尝试在Windows XP上运行一个简单的perl-cgi脚本。这是一个带有“提交”按钮的简单HTML表单,单击“提交”按钮会显示一些文本(用户名)。但是单击HTML页面上的“提交”按钮,什么也没发生。如果我用url打开浏览器,它的工作正常。

HTML表格:

<form id="form" name="form" method="post" action="C:/Server/Apache2/cgi-bin/hello.cgi" enctype="multipart/form-data">
    <h1><center>User Login</center></h1>

<p><label><h4>Username</h4></label>
<input type="text" name="username" id="username" /></p>

<p><label><h4>Password</h4></label>
<input type="password" name="password" id="password" /></p>

<button type="submit">Sign-In</button><br><br>

CGI:

 #!C:\perl\bin\perl.exe -wT

    local ($buffer, @pairs, $pair, $name, $value, %FORM);
    # Read in text
    $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
    if ($ENV{'REQUEST_METHOD'} eq "POST")
    {
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    }else {
        $buffer = $ENV{'QUERY_STRING'};
    }
    # Split information into name/value pairs
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
    {
        ($name, $value) = split(/=/, $pair);
        $value =~ tr/+/ /;
        $value =~ s/%(..)/pack("C", hex($1))/eg;
        $FORM{$name} = $value;
    }
    $user_name = $FORM{username};


print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Hello - Second CGI Program</title>";
print "</head>";
print "<body>";
print "<h2>Hello $user_name - Second CGI Program</h2>";
print "</body>";
print "</html>";

1;

直接在浏览器中打开CGI:

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要在action属性中使用正确的网址,即。 action="/cgi-bin/hello.cgi"

答案 1 :(得分:1)

另一个建议只是添加。

因为看起来你刚开始学习perl,我会读到CGI模块。 CGI是一个广泛使用的perl模块,用于编程CGI : Common Gateway Interface,用于接收user input并生成HTML输出。它处理表单提交,查询字符串操作以及处理和准备HTTP标头。

CGI有两种编程风格,object-orientedfunction-oriented