1

我一直在尝试在 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>

电脑动画:

 #!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:

在此处输入图像描述

4

2 回答 2

1

另一个建议只是添加。

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

使用 CGIobject-orientedfunction-oriented.

于 2013-05-24T17:14:59.500 回答
1

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

于 2013-05-24T16:12:18.243 回答