#!/usr/bin/perl
#
#               --------------
#                 CGI 留言版
#               --------------
#                顯示訪客留言
#
#         檔案: guestbook.cgi
#         說明: 顯示訪客留言的程式.
#         作者: 王正奉
#     電子郵件: daniel2@ms7.hinet.net
#     首頁網址////www.cgi-search.com.tw/
#         版本: 1.0
#
# 版權注意:
#
# 本軟體著作權屬 CGI 手寫體王朝 作者: 王正奉 所有.
#
# 本人保留對本軟體之更改與訂正之權利, 任何人不得任意修改本
# 軟體之任一部份(如須更改請先通知作者)。使用者執行本軟體所
# 需之設定或美化外觀所需之更改不在此限。使用者沒有本人同意
# 不得將本軟體放置網站供他人下載或翻譯成其他語言。使用者須
# 將版權說明和著作權申明保留不得刪除。
# 
# 如有違反著作權法之規定, 本人自動保留追訴之權利。
# 
# 其他著作權未說明依中文說明.txt檔案為準，
# 如有任何疑問請與王正奉連絡。
# 
# =====================================================================
# 輔助程式
# ---------------------------------------------------------------------
require "setup.cgi";
$ip = "$ENV{'REMOTE_ADDR'}";
&get_cookie;
print "Content-type: text/html\n\n";

##########################################################
##  開始執行程式                                       ##
##########################################################

if (($ENV{'REMOTE_HOST'} =~ /\b($hostname)/) || ($ENV{'REMOTE_ADDR'} =~ /\b($ipaddress)/)){
&cgierr("您被盡止使用留言版.");
exit;
}

$ip = "$ENV{'REMOTE_ADDR'}";
open(COUNT, "$db_count_data");
if ($flock) { flock (COUNT,1); }
@count=<COUNT>;
if ($flock) { flock (COUNT,8); }
close(COUNT);
if ($flock) { &lockfile("$db_count_data.lock"); }
open(COUNT, ">$db_count_data");
foreach $line (@count) {
$line =~ s/\n//g;
($jtotal,$jip,$noth)=split(/∥/,$line);
if ($ip ne $jip) {
$total=$jtotal+1;
print COUNT "$total∥$ip∥$noth∥\n";
} else {
$total=$jtotal;
print COUNT "$line\n"; }
}
close (COUNT);
if ($flock) { &unlockfile("$db_count_data.lock"); }

$uptime = `uptime`; 
@uptime =split(/\s+/,$uptime);
$uptime = @uptime[$#uptime];

open (DATA,"$db_book_data"); 
if ($flock) { flock (DATA,1); }
@data=<DATA>;
if ($flock) { flock (DATA,8); }
close(DATA);
$addsignin=@data;
if ($addsignin == 0) {
open (PAGE,"<$templates_path/new_guestbook.html") or &cgierr("無法開啟 new_guestbook.html 檔案"); 
@sheet=<PAGE>;	
close(PAGE);
foreach $line2 (@sheet) {
$line2 =~ s/#site_title#/site_title/gi;
$line2 =~ s/#style#/$style/gi;
$line2 =~ s/#body#/$body/gi;
$line2 =~ s/#logo#/$logo/gi;
$line2 =~ s/#add_url#/$add_url/gi;
$line2 =~ s/#gbk_admin#/$gbk_admin/gi;
$line2 =~ s/#site_url#/$site_url/gi;
$line2 =~ s/#uptime#/$uptime/gi;
$line2 =~ s/#page#/$page/gi;
$line2 =~ s/#pagenumber#/$pagenumber/gi;
$line2 =~ s/#html#/$html/gi;
$line2 =~ s/#addsignin#/$addsignin/gi;
$line2 =~ s/#total#/$total/gi;
$line2 =~ s/#guest_title#/$guest_title/gi;
$line2 =~ s/#footer#/$footer/gi;
print "$line2";
}
close (PAGE);
exit;

}else{
$stop=1;
$page=$form{page};
$more=1;

$maxpage=($addsignin%$pagenumber);
if ($maxpage != 0 || $addsignin == 0){
$maxpage=int($addsignin/$pagenumber)+1;
}
else { 
$maxpage=($addsignin/$pagenumber);
}
if ($page eq ""){ 
$min=1; $max=$pagenumber; $page=1;
}
if ($page ne ""){
$min=(($page-1)*$pagenumber)+1; $max=$page*$pagenumber;
}
open (PAGE,"<$templates_path/guestbook_head.html") or &cgierr("無法開啟 guestbook_head.html 檔案"); 
@sheet=<PAGE>;	
close(PAGE);
foreach $line2 (@sheet) {
$line2 =~ s/#site_title#/$site_title/gi;
$line2 =~ s/#style#/$style/gi;
$line2 =~ s/#body#/$body/gi;
$line2 =~ s/#logo#/$logo/gi;
$line2 =~ s/#add_url#/$add_url/gi;
$line2 =~ s/#goodbook_url#/$goodbook_url/gi;
$line2 =~ s/#gbk_admin#/$gbk_admin/gi;
$line2 =~ s/#site_url#/$site_url/gi;
$line2 =~ s/#uptime#/$uptime/gi;
$line2 =~ s/#page#/$page/gi;
$line2 =~ s/#pagenumber#/$pagenumber/gi;
$line2 =~ s/#maxpage#/$maxpage/gi;
$line2 =~ s/#html#/$html/gi;
$line2 =~ s/#addsignin#/$addsignin/gi;
$line2 =~ s/#total#/$total/gi;
$line2 =~ s/#guest_title#/$guest_title/gi;
print "$line2";
}
close (PAGE);

foreach $line3 (@data) {
($timeof,$dateof,$name,$email,$url,$icq,$password,$sex,$image,$mood,$private,$wordcolor,$ip,$comments,$admin,$comments1,$date)=split(/∥/,$line3);
if ($more>=$min && $more <=$max) {
if ($sex eq "w") {
$resex= "淑 女:";
}else {
$resex= "紳 士:";
}
if ($icq ne "") {
$reicq= "<A HREF=\"//wwp.mirabilis.com/$icq\" TARGET=\"_top\"><img src=\"//online.mirabilis.com/scripts/online.dll?icq=$icq&img=5\" BORDER=0></A>";
}else{$reicq= "";}

if ($email ne "") {
$remail= "<A HREF=\"mailto:$email\"><img src=\"$image_url/mail.gif\" ALT=\"$email\" BORDER=0></A>";
}else{$remail= "";}

if ($url ne "") {
$reurl= "<A HREF=\"$url\" TARGET=\"_new\"><img src=\"$image_url/url.gif\" BORDER=0></A>";
}else{$reurl= "";}

if ($private eq "yes") {
$repassword= "[<A HREF=\"$reply_url?replymark=$timeof&replyuser=$name\">網友回覆</a>] ";
$recomments= "$comments";
}else {
$recomments= "<font color=$wordcolor>這是給版主的<font color=red>密秘留言</font>, 您們不可以看.</font>";
}

if ($admin eq "yes") {
$readmin= "版主: <font color=#800000>$userusername</font> <br>回覆: <font color=#800000><u>$name</u></font><br>$comments1";
}elsif ($admin eq "no") {
$readmin= "版主: <font color=#800000>$userusername</font> <br>秘密回覆: <font color=#800000><u>$name</u></font><br>$comments1";
}else{
$readmin= "";
}
$reimage= "<img src=\"$image_url/$sex$image\">";

open (PAGE,"<$templates_path/guestbook.html") or &cgierr("無法開啟 guestbook.html 檔案"); 
@gusheet=<PAGE>;	
close(PAGE);
foreach $line7 (@gusheet) {
$line7 =~ s/#reimage#/$reimage/gi;
$line7 =~ s/#resex#/$resex/gi;
$line7 =~ s/#name#/$name/gi;
$line7 =~ s/#dateof#/$dateof/gi;
$line7 =~ s/#timeof#/$timeof/gi;
$line7 =~ s/#ip#/$ip/gi;
$line7 =~ s/#repassword#/$repassword/gi;
$line7 =~ s/#reicq#/$reicq/gi;
$line7 =~ s/#remail#/$remail/gi;
$line7 =~ s/#reurl#/$reurl/gi;
$line7 =~ s/#rerate#/$rerate/gi;
$line7 =~ s/#mood#/$mood/gi;
$line7 =~ s/#wordcolor#/$wordcolor/gi;
$line7 =~ s/#recomments#/$recomments/gi;
$line7 =~ s/#readmin#/$readmin/gi;
print "$line7";
}
close (PAGE);
}
$more++;
}

print <<INDEX;
<table border=0 CELLSPACING="1" CELLPADDING="1"><TR><TD valign=top align="center">
<form><select size="1" onChange="location.href=this.options[selectedIndex].value;" style="background-color:lightyellow;border:1 solid black">
INDEX

while ($addsignin>0) {
print "<option value="; 
if ($page ne $stop) {
print "\"guestbook.cgi?page=$stop\">第$stop頁";
}else{
print "\"\" SELECTED>第$stop頁 *";
}
$addsignin=$addsignin-$pagenumber;
$stop++;
}
}

print <<INDEX;
</select></form>
</td></tr></table>
<center>
$footer
</center>
</BODY>
</HTML>
INDEX
exit;

##########################################################
## 程式執行錯誤.                                        ##
##########################################################
sub cgierr {

print <<ERROR;
<head>
<title>CGI 執行錯誤</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
$style
</head>
$body
<center>
$logo<br>
<HR SIZE=1 WIDTH=600>
<font size=3 color=darkred>CGI 執行錯誤</font><p>
<table border="0">
<tr><td>
對不起!! 以下是執行錯誤的訊息:<BR>
<font color=red><b>$_[0]</b></font><BR>
如有任何疑問, 請寫信至<a href="mailto:$admin_email"> 管理員 </a><br>
<br>
</td></tr></table>
<BR><HR SIZE=1 WIDTH=600>
$footer
<br></center>
</body>
</html>
ERROR
exit;
}

