⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 程嶏清单15-8.txt

📁 < linux网络编程工具>>配套源码
💻 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/</&lt;/g; 
$value =~ s/>/&gt;/g; 
$value =~ s/"/&quot;/g; 
$value =~ s/ /&nbsp;/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="添加留言"> &nbsp; <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 + -