📄 程嶏清单15-8.txt
字号:
程序清单15-8:guestbook.pl
#!/usr/bin/perl
### 此程序由zlbox@yeah.net提供,再次表示非常的感谢!!!
### 变量设置
###################
$perpage=15; #设置每页显示留言条数
$masterid="2000"; #管理员密码
$data="data.dat";#设置留言文件路径
##################建立目录#################
unless(-f $data){
open(DATA,">$data")||die $!;
close(DATA);
chmod(0666,$data);
}
##################时间函数#################
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday)= localtime(time);
$year=$year+1900;
$mon=$mon+1;
if($mon <10){$mon="0".$mon;}
if($mday<10){$mday="0".$mday;}
if($hour<10){$hour="0".$hour;}
if($min<10){$min="0".$min;}
if($sec<10){$sec="0".$sec;}
$nowtime=$year."-".$mon."-".$mday."/".$hour.":".$min.":".$sec;
###########################################
##################表单处理#################
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$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;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/"/"/g;
$value =~ s/ / /g;
$FORM{$name} = $value;
$FORM{'comments'} =~ s/\n/<br>/g;
}
$name = $FORM{'name'};
$email = $FORM{'email'};
$city = $FORM{'city'};
$state = $FORM{'state'};
$country = $FORM{'country'};
$comments = $FORM{'comments'};
$mod = $FORM{'mod'};
$page = $FORM{'page'};
$number = $FORM{'number'};
$id = $FORM{'id'};
#########################################
#################程序处理################
if ($mod eq "add"){&add;} #如果mod=add追加留言
if ($mod eq "dele"){&dele;} #如果mod=dele删除留言
#########################################
################留言薄界面###############
print "Content-type: text/html\n\n";
print <<EOF;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>留言薄</title>
<style>
body { color: #000000; font-family: 宋体; font-size: 9pt }
p { color: #000000; font-family: 宋体; font-size: 9pt }
br { color: #000000; font-family: 宋体; font-size: 9pt }
a:link { color: #000000; font-size: 9pt; text-decoration: none }
a:visited { color: #000000; font-size: 9pt; text-decoration: none }
a:active { color: #000000; font-size: 9pt; text-decoration: none }
a:hover { color: #000000; text-decoration: underline }
</style>
</head>
<body topmargin="0" leftmargin="0">
<div align="center">
<center>
<table>
<tr>
<td width="770" valign="top" height="203">
<div align="center">
<table border="0" cellpadding="0" cellspacing="0" width="94%" style="border: 1 solid #C0C0C0" height="152">
<tr>
<td width="100%" bgcolor="#5868C0" height="20">
<p align="center"><font color="#FFFFFF">留言薄</font></p>
</td>
</tr>
</center>
<tr>
<td width="100%" style="border-top: 1 solid #C0C0C0; border-bottom: 1 solid #C0C0C0" bgcolor="#DCF0FB" height="112">
<p align="center"><br>
谢谢您参观我们的主页,如果您有什么建议或意见请您留言。<br>
<a href="#add_guestbook">按这里添加留言:</a></p>
<div align="center">
<table border="1" cellpadding="10" cellspacing="0" width="90%" bordercolorlight="#000000" bordercolordark="#DCF0FB">
<tr>
<td width="100%" height="101" valign="top">
<p>
EOF
&guestlist; #显示留言
print <<EOF;
<form method="POST" action="guestbook.cgi">
<input type="hidden" name="mod" value="add">
<input type="hidden" name="username" value="$username">
<input type="hidden" name="password" value="$password">
<p><a name="add_guestbook"><br>
</a></p>
<div align="center">
<center>
<table border="0" cellpadding="15" cellspacing="0" bordercolorlight="#000000" bordercolordark="#DCF0FB" width="100%">
<tr>
<td width="100%" align="left">
<p align="left">
<font color="#000000">添加留言:</font><br>
<br>
您的姓名:<input type="text" name="name" size="40"><br>
电子邮件:<input type="text" name="email" size="40"><br>
您来自于:<input type="text" name="city" size="10">市, <input type="text" name="state"
size="8">省, <input
type="text" value="中国" name="country" size="10"></p>
<p align="left">您的留言:<br>
<textarea name="comments" COLS="60" ROWS="4"></textarea></p>
<p align="left"><input type="submit" value="添加留言"> <input type="reset" value="擦除重写"> </p>
</td>
</tr>
</table>
</center>
</div>
</form>
<p>
</td>
</tr>
</table>
</div>
<p>
</td>
</tr>
<center>
<tr>
<td width="100%" bgcolor="#000000" height="20"> </td>
</tr>
</table>
</div>
<p>
</td>
</tr>
</table>
</div>
<p> </p>
</body>
EOF
exit;
######################################################
#######################显示留言########################
sub guestlist{
open(DATA,"$data")|| die $!;
@guests=<DATA>;
close(DATA);
$lybnum=@guests;
$ii=0;
$j=$lybnum;;
while ($j>0) {
$j=$j-$perpage;
$ii++;
}
if($page eq ""||$page<1){$page=1;}
if($page>$ii){$page=$ii;}
$pages=$lybnum-1-($page-1)*$perpage;
for($i=0; $i<$perpage; $i++) {
if($pages-$i>=0){
$number=$pages-$i;
$liuyan=@guests[$number];
$liuyan=~ s/\n//g;
if ($liuyan ne "") {
($lytime,$name,$email,$city,$state,$country,$comments)=split(/\t/,$liuyan);
if ($state ne "") {$state ="-".$state."省";}
if ($city ne "") {$city = "-".$city."市";}
if ($id eq $masterid) {$del = "<a href=\"guestbook.cgi?mod=dele&id=$masterid&number=$number&page=$page\">[删除该条留言]</a>";}
#----------------------------------#
print <<EOF;
留言时间:$lytime $del<br>
留言者:来自$country$state$city的$name<br>
EMAIL:<a href="mailto:$email">$email</a><br>
留言内容:<br>
$comments
<hr noshade size="1" color="#000000">
<p>
EOF
#----------------------------------#
}
}
}
print "页数:";
$j=$lybnum;
$n=1;
if ($id eq $masterid){$idmod="id=$id&";}
while ($j>0) {
if ($page != $n){print " <a href=\"guestbook.cgi?".$idmod."page=$n\">[$n]</a>\n";}
else {print " <font color=\"#C0C0C0\">[$n]</font>\n";}
$j=$j-$perpage;
$n++;
}
}
###############################################
######################追加留言########################
sub add{
if ($name eq ""){&errorview("请填写您的姓名!");exit;}
if ($email eq ""){&errorview("请填写您的EMAIL地址!");exit;}
if ($comments eq ""){&errorview("留言内容不能为空!");exit;}
if (!($email=~ /.*\@.*\..*/)){&errorview("您的Email输入错误!");exit;}
open(DATA,">>$data")|| die $!;
print DATA "$nowtime\t$name\t$email\t$city\t$state\t$country\t$comments\n";
close(DATA);
}
###############################################
######################删除留言#################
sub dele{
if ($id ne $masterid){&errorview("对不起,你无权删除留言!");exit;}
open(LYB,"$data")||die $!;
@lists=<LYB>;
close(LYB);
open(LYB,">$data")|| die $!;
$n=0;
foreach $list (@lists){
if($n != $number){print LYB $list;}
$n++
}
close(LYB);
print "Content-type: text/html\n\n";
print <<EOF;
<meta http-equiv="refresh" content="0; url=guestbook.cgi?id=$id">
留言成功删除…………
EOF
exit;
}
################################################
####################errorview###################
sub errorview
{
print "Content-type: text/html\n\n";
print "<html><head></head><body><script>alert('$_[0]');history.back();</script></body></html>";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -