一个急需高手回答的问题,急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!如果得不到正确答案便信心再学下去............
#!c:/perl/bin/perl.exe
if($ENV{'REQUEST_METHOD'}eq"POST")
{
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
}
elsif($ENV{'REQUEST_METHOD'}eq"GET")
{
$buffer=$ENV{'QUERY_STRING'};
}
#分割用户提交的数据
@pairs=split(/&/,$buffer);
#对用户提交的数据进行解码
foreach $pair(@pairs)
{
($name,$value)=split(/=/,$pair);
$value=~tr/+/ /;
$value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$name=~tr/+/ /;
$name=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;
}
#输出html档头
print"Content-type:text/html\n\n";
#输出html页面的开始部分
print<<END;
<html>
<head>
<title>用户留言板</title>
<meta http-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h3>用户留言板</h3>
<hr>
</div>
END
#检察用户的输入
if($FORM{'name'}eq""){
print<<NAME;
<center>
对不起,请输入<b>您的姓名</b>!
<a href="/guest.html"onClick=history.back()>点这儿返回</a>。
</center>
NAME
exit;
}#end if
if($FORM{'E-mail'}eq""){
print<<E-MAIL;
<center>对不起,请输入<b>您的E-mail</b>!
<a href="/guest.html"onClick=history.back()>点这儿返回</a>。
</center>
E-MAIL
exit;
}#end if
if($FORM{'comment'}eq""){
print<<COMMENT;
<center>对不起,请输入<b>您的留言</b>!
<a href="/guest.html"onClick=history.back()>点这儿返回</a>。
</center>
COMMENT
exit;
}#end if
#把用户输入的回车换行转换为HTML中的换行
$FORM{'comment'}=~s^cM\n/<br>\n/g;
#把用户输入的空格转换为HTML中的空格
$FORM{'comment'}=~s/ / /g;
#获取当前时间
($sec,$min,$hour,$day,$mon,$year)=localtime(time);
#localtime函数获取的月份比实际月份少1,因此这里要加1
#年份比实际的年份少1900,因此这里要加1900
$mon++
$year=$year+1900;
$date="$year年$mon月$day日$hour时$min分$sec秒";
#产生一个0到1之间的随机数
srand;
$num=rand(1);
#指定保存留言的文件,注意用绝对路径
$filename="d:/abc/msg.html";
#以只读方式打开msg.html,读出原文中的所有数据。
open(FILE,"<$filename");
@old_content=<FILE>;
close(FILE);
#以覆盖的方式打开msg.html,写入最新的数据。
open(FILE,">$filename");
Print FILE<<MSG;
<p>
<b>我的姓名</b>:$FORM{'name'}
<br>
<b>我的e-mail</b>:<a href="mailto:$FORM{'E-mail'}">$FORM{'E-mail'}</a>
<br>
<b>我来自于</b>:$ENV{'REMOTE_ADDR'}
<br>
<b>留言时间</b>:$date
<br>
<b>我的留言如下</b>:
<br>
$FORM{'comment'}
</p>
<hr>
MSG
#写入原文件中的所有数据。
Print FILE"@old_content";
close(FILE);
#输出留言结束的页面
Print<<THANKS;
<p align="center">
感谢您在本站留言,
<a href="/guest.html"onClick=history.back()>请点这儿返回</a>。
</p>
<p align="center">
<a href="/msg.html?$num">看留言板</a>
</p>
THANKS
#输出页面结束标签
Print<<ENDHTML;
</body>
</html>
ENDHTML
#退出程序
exit
错误如下:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Can't find string terminator "E" anywhere before EOF at D:\abc\guest.pl line 53.
我已经从头到底看了两遍代码,麻烦大家帮我看看,错在哪里???