我一直在尝试在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:
答案 0 :(得分:1)
您需要在action
属性中使用正确的网址,即。 action="/cgi-bin/hello.cgi"
答案 1 :(得分:1)
另一个建议只是添加。
因为看起来你刚开始学习perl,我会读到CGI
模块。 CGI是一个广泛使用的perl模块,用于编程CGI : Common Gateway Interface
,用于接收user input
并生成HTML
输出。它处理表单提交,查询字符串操作以及处理和准备HTTP标头。
CGI有两种编程风格,object-oriented
和function-oriented
。