#!/usr/bin/perl
$delpsd = "abcd"; #管理密碼
$gstbook = "gsguest.txt"; #留言數据路徑
$backimg = ""; #底圖路徑
$backcolor= "#FFFFFF"; #底色。如果用底圖的話將自動取消底色
$title = "留言板"; #留言板標題
$titleimg = ""; #標題圖,不設的話將使用標題
$outurl = "http://www.newsbook.net"; #退出后的去處,默認為回到主頁(在淄博時)
$thistime= texttimes();
$gstcgi = "gsguest.cgi";
unless(-f $gstbook){
open(TMP,">$gstbook")||die $!;
close(TMP);
chmod(0666,$gstbook);
}
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);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$FORM{$name} = $value;
}
$userip =$ENV{'REMOTE_ADDR'};
$username=$FORM{'name'};
$tmp_name=$username;
$tmp_name=~ s/<([^>]|\n)*>//g;
$tmp_name=~ s/>/>/g;
$tmp_name=~ s/</g;
$tmp_name=~ s/ //g;
$tmp_name=~ s/&//g;
$tmp_name=~ s/ //g;
$username=$tmp_name;
$email =$FORM{'e-mail'};
if($email eq ""){$email=0;}
$userurl =$FORM{'URL'};
$locale =$FORM{'locale'};
if($FORM{'page'})
{$page=$FORM{'page'};}
else{
$page=0;}
$retime =$FORM{'retime'};
if($FORM{'reply'}){$reply=1;}else{$reply=0;}
if($locale eq ""){$locale=$userip;}
$comments=$FORM{'comments'};
$comments=~ s/<([^>]|\n)*>//g;
$comments=~ s/>/>/g;
$comments=~ s/</g;
$comments=~ s/__/--/g;
$comments=~ s/\n/\
/g;
$psd =$FORM{'psd'};
$a_method=$FORM{'a_method'};
if($a_method eq "delguest"){&delguest;}
if($a_method eq "replys"){&replys;exit;}
if($a_method eq "add"){
if (($username eq "")||($comments eq "")){
&send_html;
print "
\n";
print "\n";
exit;
}
open (GUEST,"$gstbook")|| die (print "ERROR:01");
@lines=;
close(GUEST);
$size=@lines;
if($size>400){$size=399;}
$addsays=$username."__".$email."__".$userurl."__".$comments."__".$locale."__".$thistime."__".$reply;
open (GUEST,">$gstbook")|| die (print "ERROR:01");
if($reply eq "0"){
print GUEST $addsays."\n";
for($i=0;$i<=$size;$i++){
$_=@lines[$i];
print GUEST $_;
}
}else{
foreach $line (@lines) {
$line =~ s/\n//g;
if ($line ne "") {
($rd_name,$rd_mail,$rd_url,$rd_msg,$rd_from,$rd_time,$rd_reply) = split(/__/,$line);
if($rd_time eq $retime){
print GUEST $line."\n";
print GUEST $addsays."\n";
}else{
print GUEST $line."\n";
}
}
}
}
close(GUEST);
}
&show;
exit;
############################################
sub show {
open(GUEST,"$gstbook")|| die (print "ERROR:01");
@lines=;
close(GUEST);
$size=@lines;
$newpage="[一]";
if($size >40)
{
$newpage=$newpage."[二]";
}
if($size >80)
{
$newpage=$newpage."[三]";
}
if($size >120)
{
$newpage=$newpage."[四]";
}
if($size >160)
{
$newpage=$newpage."[五]";
}
if($size >200)
{
$newpage=$newpage."[六]";
}
if($size >240)
{
$newpage=$newpage."[七]";
}
if($size >280)
{
$newpage=$newpage."[八]";
}
if($size >320)
{
$newpage=$newpage."[九]";
}
if($size >360)
{
$newpage=$newpage."[十]";
}
&send_html;
print <
EOF
if($backimg ne ""){
print "\n";
}else{
print "\n";
}
print <
首頁 | 選擇頁:$newpage 以下是訪客的留言:
EOF
for($i=$page; $i<$page+40; $i++) {
$line=@lines[$i];
$line =~ s/\n//g;
if ($line ne "") {
($rd_name,$rd_mail,$rd_url,$rd_msg,$rd_from,$rd_time,$rd_reply) = split(/__/,$line);
if($rd_reply eq "0"){
if($rd_mail ne "0"){
print "
訪客姓名:$rd_name";
}else{
print "
訪客姓名:$rd_name";
}
if($rd_url ne "http://"){
print " 網頁:$rd_url";
}
print " 時間:$rd_time";
if($delpsd eq $psd){
print " [刪除]";
}
print " 來自:$rd_from
";
}else{
if($rd_mail ne "0"){
print "- 訪客姓名:$rd_name";
}else{
print "
- 訪客姓名:$rd_name";
}
print " 來自:$rd_from";
if($rd_url ne "http://"){
print " 網頁:$rd_url";
}
print "
時間:$rd_time";
if($delpsd eq $psd){
print " [刪除]";
}
print "
$rd_msg";
print " \n";
print "
訪客留言: $rd_msg";
}
}
}
print " Copyright 2000 © Anthony All rights reserved. Desgin By Newsbook LTD
|
\n";
print "
\n";
exit;
}
############################################
sub send_html {
if ($has_send ne "1") {
print "Content-type: text/html\n\n";
$has_send = "1";
}
}
############################################
sub texttimes{
@Months = ('1月','2月','3月','4月','5月','6月','7月',
'8月','9月','10月','11月','12月');
($Second,$Minute,$Hour,$Month_Day,
$Month,$Year,$Week_Day,$IsDST) = (localtime)[0,1,2,3,4,5,6,8];
$Time_Zone = "EST";
if ($Second < 10) {
$Second = "0$Second";
}
if ($Minute < 10) {
$Minute = "0$Minute";
}
if ($Hour < 10) {
$Hour = "0$Hour";
}
if ($Year > 95) {
$Year = 1900+$Year;
}
elsif ($Year < 10) {
$Year = 2000+$Year;
}
else {
$Year = 2000+$Year;
}
$texttime=$Year."年";
$texttime="$texttime"."$Months[$Month]";
$texttime=$texttime."$Month_Day日";
$texttime=$texttime."[$Hour\:$Minute\:$Second]";
return $texttime;
}
#######################################################
sub delguest {
$bedeltime=$FORM{'bedeltime'};
open (GUEST,"$gstbook") ||die $!;
@lines=;
close(GUEST);
open (GUEST,">$gstbook") || die $!;
foreach $usersays (@lines) {
$usersays=~ s/\n//g;
if($usersays ne ""){
($rd_name,$rd_mail,$rd_url,$rd_msg,$rd_from,$rd_time,$rd_reply)=split(/__/,$usersays);
if($bedeltime ne $rd_time){
print GUEST "$usersays\n";
}
}
}
close(GUEST);
&show;
}
####################################################################
sub replys{
&send_html;
print <
EOF
if($backimg ne ""){
print "\n";
}else{
print "\n";
}
if($titleimg ne ""){
print "
\n";
}else{
print "$title
\n";
}
print <
返回
EOF
open(GUEST,"$gstbook")|| die $!;
@lines=;
close(GUEST);
foreach $line (@lines) {
$line =~ s/\n//g;
if ($line ne "") {
($rd_name,$rd_mail,$rd_url,$rd_msg,$rd_from,$rd_time,$rd_reply) = split(/__/,$line);
if($rd_time eq $retime){
print " [$rd_name] \ ".$rd_msg."";
}
}
}
print < |
EOF
exit;
}