我通过学校获得了在我的网站上建立评论表格的任务。我得到了所有我认为难以完成的事情,但现在已经遇到了一个重大绊脚石。我得到了一个名为form-mail2的perl脚本来放入我的web服务器的cgi-bin并且这样做了,但当我点击我的表单上的提交时,我得到了这个:
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@randyloope.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
这必须与剧本有关,所以我想联系你,帮助我。我总是得到了脚本所以我猜它没有正确配置,但我没有如何正确配置它的最模糊。这是脚本:
#!/usr/local/bin/perl
# ------------------------------------------------------------
# Form-mail.pl, by Reuven M. Lerner (reuven@the-tech.mit.edu).
#
# Last updated: March 14, 1994
#
# Form-mail provides a mechanism by which users of a World-
# Wide Web browser may submit comments to the webmasters
# (or anyone else) at a site. It should be compatible with
# any CGI-compatible HTTP server.
#
# Please read the README file that came with this distribution
# for further details.
# ------------------------------------------------------------
# ------------------------------------------------------------
# This package is Copyright 1994 by The Tech.
# Form-mail is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
# Form-mail is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Form-mail; see the file COPYING. If not, write to the Free
# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# ------------------------------------------------------------
# Define fairly-constants
# This should match the mail program on your system.
$mailprog = '/usr/lib/sendmail';
# This should be set to the username or alias that runs your
# WWW server.
$recipient = 'salvador.voli@gmail.com'
if ($recipient eq "\@csprofessor.com") {
$recipient = $ENV{'SERVER_ADMIN'};
}
# Print out a content-type for HTTP/1.0 compatibility
print "Content-type: text/html\n\n";
# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
# $value =~ s/~!/ ~!/g;
# Uncomment for debugging purposes
# print "Setting $name to $value<P>";
$FORM{$name} = $value;
}
# If the comments are blank, then give a "blank form" response
unless ($FORM{'realname'}) { &blank_response("name"); }
unless ($FORM{'email'} ) { &blank_response("email"); }
unless ($FORM{'message'} ) { &blank_response("message"); }
unless ($FORM{'rating'} ) { &blank_response("rating"); }
# Print a title and initial heading
print "<html>\n";
print "<Head><Title>Thank you</Title></Head>";
print "<Body><H1>Thank you</H1>";
print "<p>Thank you for sending your comments!<br>";
print "</body></html>";
# Now send mail to $recipient
open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n";
print MAIL "To: sgifford\@csprofessor.com\n";
#print MAIL "To: $recipient\n";
print MAIL "From: $FORM{'email'} ($FORM{'realname'})\n";
print MAIL "Reply-to: $FORM{'email'} ($FORM{'realname'})\n";
print MAIL "Subject: Web Site Comments\n\n";
print MAIL "------------------------------------------------------------\n";
print MAIL "$FORM{'email'} ($FORM{'realname'}) Stopped by\n";
print MAIL "Phone: $FORM{'phone'}\n";
print MAIL "Birthday: $FORM{'bday'}\n";
print MAIL "------------------------------------------------------------\n";
print MAIL "And this is what $FORM{'realname'} had to say:\n\n";
print MAIL "$FORM{'message'}";
print MAIL "\n------------------------------------------------------------\n";
print MAIL "Web Site Rating: $FORM{'rating'}";
print MAIL "\n------------------------------------------------------------\n";
print MAIL "Server protocol: $ENV{'SERVER_PROTOCOL'}\n";
print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
print MAIL "------------------------------------------------------------\n";
close (MAIL);
# Make the person feel good for writing to us
# ------------------------------------------------------------
# subroutine blank_response
sub blank_response
{
print "<html>\n";
print "<Head><Title>Incomplete Comment Form</Title></Head>";
print "<Body><H1>Incomplete Comment Form</H1>";
print "<p>";
print "The $_[0] field appears to be blank! ";
print "Please finish filling out the form and re-submit your comments. ";
print "</body></html>";
exit;
}
以下是我的代码的表单部分:
<form name="usercomments" action="/cgi-bin/form-mail2.pl" method="post" onsubmit="return finalCheck()">
Name: <input type="text" name="realname" onchange= "nameCheck()" value="" /><br />
email: <input type="text" name="email" onchange = "emailCheck()" value="" /><br />
phone: <input type="text" name="phone" onchange = "phoneCheck()" value="" /><br />
birthday: <input type="text" name="bday" onchange = "birthdayCheck()" value="" /><br />
How would you describe your experience today? <br/ >
<input type="radio" name="rating" value="Awesome" checked="checked" /> Awesome<br />
<input type="radio" name="rating" value="Mediocre" /> Mediocre<br />
<input type="radio" name="rating" value="Terrible" /> Terrible<br />
Comments: <br />
<textarea name="message" rows="5" cols = "100" >
</textarea><br />
<input type="submit" value="Submit" />
</form>
您可以给予的任何建议都非常感谢。
答案 0 :(得分:4)
也许“最后更新的1994年”应该是一个红旗?
如果你要在Perl中做表单邮件,你应该从the NMS FormMail script开始,这篇文章写得很好并且评论得很好,而且几乎肯定比你拥有的脚本更安全。
但是,请查看您的服务器错误日志。
答案 1 :(得分:3)
我在1993年编写了form-mail
程序。(我在随后的一年中对其进行了一些更新,如版权所示。)
您不应在任何现代Web服务器上使用它。在网络年轻的时候,这已经足够了,我们不必担心(太多)安全问题。在编写CGI
模块之前。等等。
任何人都不应该再使用它了。在没有form-mail
安全问题的情况下,有数十种,甚至数百种从Web服务器发送电子邮件的方法。
答案 2 :(得分:2)
因为你看到了这部分消息:
More information about this error may be available in the server error log.
您应该在这里询问“如何查看服务器错误日志的内容?” : - )
简短的回答是“这取决于您的特定Web服务器的配置方式”。
即。你应该问你的网站管理员/ ISP这个问题。
有关详细信息,请参阅杂志文章(由与您的代码相同的作者撰写):
Learning to use the httpd error log to debug CGI programs
http://www.linuxjournal.com/article/2055
您也可以轻松安排在浏览器中显示这些消息, 如您对常见问题的回答所述:
http://perldoc.perl.org/perlfaq9.html#My-CGI-script-runs-from-the-command-line-but-not-the-browser.-%28500-Server-Error%29