📄 topic.cgi
字号:
#!/usr/bin/perl
#############################################################
# Ikonboard v2.1
# Copyright 2000 Ikondiscussion.com - All Rights Reserved
# Ikondiscussion is a trademark of Ikondiscussion.com
#
# Software Distributed by: Ikondiscussion.com
# Visit us online at http://www.ikondiscussion.com
# Email us on boards@ikondiscussion.com
#
# All files written by Matthew Mecham
#############################################################
#use CGI::Carp "fatalsToBrowser";
use CGI qw(:standard);
$CGI::POST_MAX=1024 * 150;
$CGI::DISABLE_UPLOADS = 1;
eval {
($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1");
($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1");
require "data/progs.cgi";
require "data/boardinfo.cgi";
require "data/styles.cgi";
require "data/membertitles.cgi";
require "ikon.lib";
};
if ($@) {
print header(-charset=>"gb2312"); print start_html(-title=>"ib2000 出错!");
print "不能够找到文件:$@\n如果您使用的是 Windows 类操作系统,请在每一个程序中更改 require 的设置,填入绝对路径!";
print end_html; exit;
}
$|++;
#################--- Begin the program ---###################
$thisprog = "topic.cgi";
$query = new CGI;
$cookiepath = $query->url(-absolute=>1);
$cookiepath =~ s/$thisprog//sg;
$inforum = $query -> param('forum');
$inforum = &stripMETA("$inforum");
$intopic = $query -> param('topic');
$intopic = &stripMETA("$intopic");
$instart = $query -> param('start');
$instart = &stripMETA("$instart");
$jumpto = $query -> param('jumpto');
$jumpto = &stripMETA("$jumpto");
$inmembername = cookie("amembernamecookie");
$inpassword = cookie("apasswordcookie");
&forumjump;
if ($jumpto) {
print redirect(-location=>"$jumpto"); exit;
}
if (!$inmembername) {
$inmembername = "客人";
}
else {
&getmember("$inmembername");
$membercodetemp = $membercode;
if (($allowedentry{$inforum} eq "yes")||(($membercode eq "ad"))) { $allowed = "yes"; }
else { $allowed = "no"; }
&getmemberstime("$inmembername");
&getlastvisit;
$forumlastvisit = $lastvisitinfo{$inforum};
$currenttime = time;
&setlastvisit("$inforum,$currenttime");
}
print header(-cookie=>[$tempvisitcookie, $permvisitcookie], -charset=>"gb2312");
&getforum($inforum);
if ($forumgraphic) { $forumgraphic = qq~<a href="$forumsprog?forum=$inforum"><img src="$imagesurl/images/$forumgraphic" border=0></a>~; }
else { $forumgraphic = qq~<a href="$boardurl/$forumsummaryprog"><img src="$imagesurl/images/$boardlogo" border=0></a>~; }
$filetoopen = "$ikondir" . "forum$inforum/list.cgi";
$filetoopen = &stripMETA($filetoopen);
if (-e $filetoopen) {
open(FILE, "$filetoopen") or &error("打开文件&论坛的 $inforum/list.cgi 文件没有找到,请联系管理员修复!");
flock (FILE, 2) if ($OS_USED eq "Unix");
@allthreads = <FILE>;
close(FILE);
$totalthreadcount = @allthreads;
$count = 0;
open(FILE, ">$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
foreach $line (@allthreads) { #start foreach @threads
($tempno, $trash) = split(/\|/, $line);
chomp $line;
push (@numbercounter, $tempno);
if ($intopic eq $tempno) {
($topicid, $topictitle, $topicdescription, $threadstate, $threadposts ,$threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate, $posticon) = split(/\|/,$line);
$threadviews++; $keepcounter = $count;
$linetokeep = "$topicid|$topictitle|$topicdescription|$threadstate|$threadposts|$threadviews|$startedby|$startedpostdate|$lastposter|$lastpostdate|$posticon|";
chomp $linetokeep;
print FILE "$linetokeep\n";
}
else { print FILE "$line\n"; }
$count++;
}
close(FILE);
my $file = "$ikondir" . "forum$inforum/$intopic.pl";
open(MSG, ">$file") or &error("打开主题&这个主题不存在!");
flock(MSG, 2) if ($OS_USED eq "Unix");
print MSG $linetokeep;
close(MSG);
}
$totalthreadcount = @numbercounter; $totalthreadcount--;
if ($intopic eq $numbercounter[0]) { undef $nextlink; }
else {
$nexttopic = $keepcounter - 1;
$threadnext = $numbercounter[$nexttopic];
$nextlink = qq~ <a href="$threadprog?forum=$inforum&topic=$threadnext"><img src="$imagesurl/images/nextthread.gif" border=0 alt="浏览下一篇主题" width=48 height=12></a>~;
}
if ($intopic eq $numbercounter[$totalthreadcount]) { undef $backlink; }
else {
$backtopic = $keepcounter + 1;
$threadback = $numbercounter[$backtopic];
$backlink = qq~<a href="$threadprog?forum=$inforum&topic=$threadback"><img src="$imagesurl/images/prethread.gif" border=0 alt="浏览上一篇主题" width=48 height=12></a>~;
}
$nexttopiclinks = "";
$nexttopiclinks .= "$backlink" if $backlink;
$nexttopiclinks .= qq~ <a href="javascript:this.location.reload()"><img src="$imagesurl/images/refresh.gif" border=0 alt="刷新本主题" width=38 height=12></a>~;
$nexttopiclinks .= "$nextlink" if $nextlink;
&postings;
&whosonline("$inmembername|<a href=\"$forumsprog?forum=$inforum\"><b>$forumname</b></a>|none|浏览<a href=\"$threadprog?forum=$inforum&topic=$intopic\"><b>$topictitle</b></a>|") if ($privateforum ne "yes");
&whosonline("$inmembername|<a href=\"$forumsprog?forum=$inforum\"><b>$forumname</b></a>(密)|none|浏览保密贴子|") if ($privateforum eq "yes");
&moderator;
&title;
$maxthreads = $maxtopics;
$filetoopen = "$ikondir" . "forum$inforum/$intopic.thd";
$filetoopen = &stripMETA($filetoopen);
if (-e $filetoopen) {
open(FILE, "$filetoopen") or &error("打开主题&这个主题不存在!");
@threads = <FILE>;
close(FILE);
}
else { unlink ("$ikondir" . "forum$inforum/$intopic.pl"); &error("打开主题&这个主题不存在!可能已经被删除!"); }
if (($sticky eq "on")) {
@threads = reverse(@threads);
$threadslast=pop(@threads);
unshift(@threads,$threadslast);
}
else { undef $sticky; }
($trash, $topictitle) = split(/\|/,$threads[0]);
$numberofitems = @threads;
$numberofpages = $numberofitems / $maxthreads;
if ($numberofitems > $maxthreads) {
$showmore = "yes";
if ((!$instart) or ($instart < 0)) { $instart = 0; }
if ($instart > 0) { $startarray = $instart; } else { $startarray = 0; }
$endarray = $instart + $maxthreads - 1;
if ($endarray < ($numberofitems - 1)) { $more = "yes"; }
if (($endarray > ($maxthreads - 1)) and ($more ne "yes")) { $endarray = $numberofitems - 1; }
}
else {
$showmore = "no";
$startarray = 0;
$pages = qq~<font face="$font" color=$menufontcolor>该主题只有一页</font>~;
$endarray = $numberofitems - 1;
}
if ($showmore eq "yes") {
if ($maxthreads < $numberofitems) {
($integer,$decimal) = split(/\./,$numberofpages);
if ($decimal > 0) { $numberofpages = $integer + 1; }
$pagestart = 0; $counter = 0;
while ($numberofpages > $counter) {
$counter++;
if ($instart ne $pagestart) { $pages .= qq~<a href="$thisprog?forum=$inforum&topic=$intopic&start=$pagestart"><font face="$font" color=$menufontcolor><b>$counter</b></font></a> ~; }
else { $pages .= qq~<font face="$font" color=$fonthighlight><b>$counter</b></font> ~; }
$pagestart = $pagestart + $maxthreads;
}
}
$pages = qq~<font face="$font" color=$menufontcolor><b>该主题含有多页</b> [ $pages ]~;
}
if (("$privateforum" eq "yes" && "$allowed" ne "yes")) { &error("进入私有论坛&对不起,您没有权限进入该私有论坛!"); }
$printpageicon = qq~<img src="$imagesurl/images/printpage.gif" border=0 width=16 height=16 alt="显示可打印的版本"> <a href="$printpageprog?forum=$inforum&topic=$intopic">显示可打印的版本</a>~;
$bookmarkpage = qq~<IMG SRC="$imagesurl/images/fav_add.gif" BORDER="0" width=15 height=15 alt="把本贴加入收藏夹"> <span style="CURSOR: hand" onClick="window.external.AddFavorite('$boardurl/topic.cgi?forum=$inforum&topic=$topicid', ' $boardname - $topictitle')">把本贴加入收藏夹</span>~;
if ($privateforum ne "yes") { $sendtofriendicon = qq~<img src="$imagesurl/images/emailtofriend.gif" border=0 width=16 height=16 alt="发送本页面给朋友"> <a href="$ikonfriendprog?forum=$inforum&topic=$intopic">发送本页面给朋友</a>~;}
if ($badwords) {
@pairs = split(/\&/,$badwords);
foreach (@pairs) {
($bad, $good) = split(/=/,$_);
chop $good;
$topictitle =~ s/$bad/$good/isg;
}
}
$topictitletemp =$topictitle;
$topictitletemp =~s/ \(无内容\)$//;
if (length($topictitletemp)>34) {
$topictitletemp1 = substr($topictitletemp,0,30) . " ...";
}
else { $topictitletemp1=$topictitletemp; }
#------- HTML
$output .= qq~
<!-- Cgi-bot Start top of topic page -->
<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth align=center>
<tr><td width=30% rowspan=2 valign=top>$forumgraphic</td>
<td valign=middle align=top><font face="$font" color=$fontcolormisc>
<font face="$font" color=$fontcolormisc>
<img src="$imagesurl/images/closedfold.gif" border=0> <a href="$forumsummaryprog">$boardname</a>
<br>
<img src="$imagesurl/images/bar.gif" border=0 width=15 height=15><img src="$imagesurl/images/closedfold.gif" border=0> <a href="$forumsprog?forum=$inforum">$forumname</a>
<br>
<img src="$imagesurl/images/bar.gif" border=0 width=15 height=15><img src="$imagesurl/images/openfold.gif" border=0> $topictitletemp1
</td>
$uservisitdata
</tr>
</table>
<br>
<table cellpadding=1 cellspacing=0 border=0 width=$tablewidth align=center>
<!-- Cgi-Bot Announcements from $dateposted -->
<tr>
<td align=center width=2 valign=middle>
</td>
<td valign=bottom align=left width=160>
$printpageicon
</td>
<td valign=bottom align=left width=160>
$bookmarkpage
</td>
<td valign=bottom align=left width=160>
$sendtofriendicon
</td>
<td align=center valign=bottom>
</td>
<td align=right valign=bottom width=165>
<font face="$font" color=$forumfontcolor>
$nexttopiclinks
</font>
</td>
<td align=center width=2 valign=middle>
</td>
</tr>
</table>
<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center>
<tr><td height=1>
</td>
</tr>
</table>
<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth align=center>
<tr>
<td bgcolor=$tablebordercolor valign=middle width=1 height=24>
</td>
<td bgcolor=$titlecolor colspan=2 align="left" valign="middle" width=*>
<table cellpadding=0 cellspacing=1 border=0 width=100%>
<tr>
<td bgcolor=$titlecolor align="left" valign="middle">
<b>* 贴子主题</B>: $topictitletemp $replybutton
</td>
<td bgcolor=$titlecolor align="right" valign="middle">
<b>版主</b>: $modoutput
</td>
</tr>
</table>
</td>
<td bgcolor=$tablebordercolor valign=middle width=1 height=24>
</td>
</tr>
</table>
<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center>
<tr><td height=1>
</td>
</tr>
</table>
<!-- Cgi-bot End top of topic page -->
~;
#------- END HTML
$editpostnumber = $startarray; $editpostnumber++; $postcountnumber = 0;
#### open onlinedata file
$filetoopen = "$ikondir" . "data/onlinedata.dat";
open(FILE, "$filetoopen" );
@onlineusers = <FILE>;
close(FILE);
foreach (@threads[$startarray .. $endarray]) {
($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post, $posticon) = split(/\|/,$_);
#### check if user is online
foreach $user (@onlineusers) {
@userdetail = split (/\|/, $user);
chomp @userdetail;
if ($userdetail[0] eq $membername) {$online = qq~<IMG SRC="$imagesurl/images/online1.gif" width=15 height=15 border=0 alt="该用户目前在线">~; last; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -