星星博客's Archiver

cnangel 发表于 2004-11-27 22:35

对程序版本: LeoBBS X Build041118一点建议(更新时间 2004/11/26)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1,文件[color=#DC143C]fav.cgi[/color]
美化建议和一个小纠正
找到
[code]
&#36;topicicon = "<img src=&#36;imagesurl/images/topicnonew.gif width=14 border=0>";
[/code]
更改为
[code]
&#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topicnonew.gif width=14 border=0>";
[/code]
找到
[code]
elsif (&#36;threadstate eq "pollclosed") { &#36;topicicon = "<img src=&#36;imagesurl/&#36;skin/images/closedb1.gif width=13 border=0>"; }
[/code]
更改为
[code]
elsif (&#36;threadstate eq "pollclosed") { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/closedb1.gif width=13 border=0>"; }
[/code]
感觉发布有点匆忙~  :)
______________________________________________________________________________
2,文件[color=&#35;DC143C]forumstyles.cgi[/color]
美化建议
找到[color=red]五[/color]处
[code]bgcolor=&#35;333333"[/code]
更正为
[code]bgcolor=&#35;2159C9[/code]
可能是LB5000时代替换遗留下来的问题.
______________________________________________________________________________
3,文件[color=&#35;DC143C]messanger.cgi[/color]
①合理建议
找到
[code]elsif (&#36;action eq "read")[/code]
在这个action里查找如下代码(这段代码共有两处,在上面的outread的action里也有,但用在那里是正确的,无须修改):
[code]
        if (&#36;inmsg < @[b][color=blue]out[/color][/b]boxmessages - 1)
{
my &#36;[b][color=blue]out[/color][/b]boxdown = &#36;inmsg + 1;
(undef, &#36;nreadstate, undef, &#36;nmessagetitle, undef) = split(/\t/, &#36;[b][color=blue]out[/color][/b]boxmessages[&#36;[b][color=blue]out[/color][/b]boxdown]);
&#36;[b][color=blue]out[/color][/b]boxmsgdown = qq~<a href=&#36;thisprog?action=[b][color=blue]out[/color][/b]read&msg=&#36;[b][color=blue]out[/color][/b]boxdown title="下一条消息: (&#36;readstatus{&#36;nreadstate})\n消息标题: &#36;nmessagetitle">下一条</a>~;
}
if (&#36;inmsg > 0)
{
my &#36;[b][color=blue]out[/color][/b]boxup = &#36;inmsg - 1;
(undef, &#36;preadstate, undef, &#36;pmessagetitle, undef) = split(/\t/, &#36;[b][color=blue]out[/color][/b]boxmessages[&#36;[b][color=blue]out[/color][/b]boxup]);
&#36;[b][color=blue]out[/color][/b]boxmsgup = qq~<a href=&#36;thisprog?action=[b][color=blue]out[/color][/b]read&msg=&#36;[b][color=blue]out[/color][/b]boxup title="上一条消息: (&#36;readstatus{&#36;preadstate})\n消息标题: &#36;pmessagetitle">上一条</a>~;
}
&#36;[b][color=blue]out[/color][/b]boxsplitline = " | " if (&#36;[b][color=blue]out[/color][/b]boxmsgdown ne "" && &#36;[b][color=blue]out[/color][/b]boxmsgup ne "");
if (&#36;[b][color=blue]out[/color][/b]boxmsgdown ne "" || &#36;[b][color=blue]out[/color][/b]boxmsgup ne "")
{
&#36;[b][color=blue]out[/color][/b]boxtempone = "[ ";
&#36;[b][color=blue]out[/color][/b]boxtemptwo = " ]";
[/code]
修改为:
[code]
        if (&#36;inmsg < @[b][color=blue]in[/color][/b]boxmessages - 1)
{
my &#36;[b][color=blue]in[/color][/b]boxdown = &#36;inmsg + 1;
(undef, &#36;nreadstate, undef, &#36;nmessagetitle, undef) = split(/\t/, &#36;[b][color=blue]in[/color][/b]boxmessages[&#36;[b][color=blue]in[/color][/b]boxdown]);
&#36;[b][color=blue]in[/color][/b]boxmsgdown = qq~<a href=&#36;thisprog?action=read&msg=&#36;[b][color=blue]in[/color][/b]boxdown title="下一条消息: (&#36;readstatus{&#36;nreadstate})\n消息标题: &#36;nmessagetitle">下一条</a>~;
}
if (&#36;inmsg > 0)
{
my &#36;[b][color=blue]in[/color][/b]boxup = &#36;inmsg - 1;
(undef, &#36;preadstate, undef, &#36;pmessagetitle, undef) = split(/\t/, &#36;[b][color=blue]in[/color][/b]boxmessages[&#36;[b][color=blue]in[/color][/b]boxup]);
&#36;[b][color=blue]in[/color][/b]boxmsgup = qq~<a href=&#36;thisprog?action=read&msg=&#36;[b][color=blue]in[/color][/b]boxup title="上一条消息: (&#36;readstatus{&#36;preadstate})\n消息标题: &#36;pmessagetitle">上一条</a>~;
}
&#36;[b][color=blue]in[/color][/b]boxsplitline = " | " if (&#36;[b][color=blue]in[/color][/b]boxmsgdown ne "" && &#36;[b][color=blue]in[/color][/b]boxmsgup ne "");
if (&#36;[b][color=blue]in[/color][/b]boxmsgdown ne "" || &#36;[b][color=blue]in[/color][/b]boxmsgup ne "")
{
&#36;[b][color=blue]in[/color][/b]boxtempone = "[ ";
&#36;[b][color=blue]in[/color][/b]boxtemptwo = " ]";
[/code]
可能是LB5000时代替换遗留下来的问题.
②合理建议
找到[color=red]二[/color]处
[code]&#36;messagetitle = &postwordfilter(&#36;messagetitle) if (&#36;dofilter eq "no" || &#36;dofilter eq "all");[/code]
更正为
[code]&#36;messagetitle = &dofilter(&#36;messagetitle);[/code]
可能是LB5000时代替换遗留下来的问题.
______________________________________________________________________________
4,[color=red][size=6]严重漏洞![/size][/color]
原因是由于对用户名换码正则过滤不言所造成~!
----------------------------------------
查找 ';~ /&#36;tempinmembername/i'; 于 ';bbs.lib.pl'; :
bbs.lib.pl/255:     &#36;inmembmod = &#36;forummodnamestemp =~ /&#36;tempinmembername/i || ((&#36;membercode eq "cmo" || &#36;membercode eq "mo" || &#36;membercode eq "amo") && (&#36;forummodnamestemp =~ /,全体版主,/ || &#36;forummodnamestemp =~ /,全体斑竹,/)) ? "yes" : "no";
找到 ';~ /&#36;tempinmembername/i'; 1 次。
----------------------------------------
查找 ';~ /&#36;tempinmembername/i'; 于 ';doipbanned.pl'; :
doipbanned.pl/22:            if (&#36;term_idbannedmembers =~ /&#36;tempinmembername/i) { &error(" ID 被禁止&由于你没遵守本站规定!你的 ID (&#36;inmembername) 被禁止!如有疑问,请联系管理员。"); }
找到 ';~ /&#36;tempinmembername/i'; 1 次。
以上两处改为
[code]
~ /\Q&#36;tempinmembername\E/i
[/code]
----------------------------------------
查找 ';~ /\,&#36;inmembername\,/i'; 于 ';bbs.lib.pl'; :
bbs.lib.pl/267:         if (&#36;forummodnamestemp =~ /\,&#36;inmembername\,/i || ((&#36;membercode eq "cmo" || &#36;membercode eq "mo" || &#36;membercode eq "amo") && (&#36;forummodnamestemp =~ /,全体版主,/ || &#36;forummodnamestemp =~ /,全体斑竹,/))) { &#36;inmembmod = "yes"; } else { &#36;inmembmod = "no"; }
找到 ';~ /\,&#36;inmembername\,/i'; 1 次。
----------------------------------------
查找 ';~ /\,&#36;inmembername\,/i'; 于 ';domoderator.pl'; :
domoderator.pl/79:         &#36;inmembmod = "yes" if (&#36;forummodnamestemp =~ /\,&#36;inmembername\,/i || ((&#36;membercode eq "cmo" || &#36;membercode eq "mo" || &#36;membercode eq "amo") && (&#36;forummodnamestemp =~ /,全体版主,/ || &#36;forummodnamestemp =~ /,全体斑竹,/)));
找到 ';~ /\,&#36;inmembername\,/i'; 1 次。
----------------------------------------
查找 ';~ /\,&#36;inmembername\,/i'; 于 ';forums.cgi'; :
forums.cgi/493:     &#36;catlockbuttom = &#36;membercode eq "ad" || &#36;membercode eq "smo" || ",&#36;catemods," =~ /\,&#36;inmembername\,/i ? "<a href=postings.cgi?action=catlocktop&forum=&#36;inforum&topic=&#36;topicid><font color=&#36;titlecolor>区固</font></a>|" : "";
forums.cgi/654:             if (&#36;membercode eq "ad" || &#36;membercode eq "smo" || ",&#36;catemods," =~ /\,&#36;inmembername\,/i) {
找到 ';~ /\,&#36;inmembername\,/i'; 2 次。
----------------------------------------
查找 ';~ /\,&#36;inmembername\,/i'; 于 ';postings.cgi'; :
postings.cgi/857:     if ((&#36;membercode eq "ad" || &#36;membercode eq "smo" || ",&#36;catemods," =~ /\,&#36;inmembername\,/i) && (&#36;inpassword eq &#36;password)) { &#36;cleartoedit = "yes"; }
postings.cgi/942:     if ((&#36;membercode eq "ad" || &#36;membercode eq "smo" || ",&#36;catemods," =~ /\,&#36;inmembername\,/i) && (&#36;inpassword eq &#36;password)) { &#36;cleartoedit = "yes"; }
找到 ';~ /\,&#36;inmembername\,/i'; 2 次。
以上六处改为
[code]
~ /\Q\,&#36;inmembername\,\E/i
[/code]
----------------------------------------
查找 ';=~ /,&#36;membername,/i'; 于 ';view.cgi'; :
view.cgi/206: &#36;inmembmod = &#36;forummodnamestemp =~ /,&#36;membername,/i ? "yes" : "no";
view.cgi/687: &#36;inmembmod = &#36;forummodnamestemp =~ /,&#36;membername,/i ? "yes" : "no";
找到 ';=~ /,&#36;membername,/i'; 2 次。
以上二处改为
[code]
~ /\Q,&#36;membername,\E/i
[/code]
----------------------------------------
查找 ';~ /\,&#36;membername{&#36;membername}\,/i'; 于 ';topic.cgi'; :
topic.cgi/610:     if (&#36;forummodnamestemp =~ /\,&#36;membername{&#36;membername}\,/i) { &#36;inmembmod = "yes"; } else { &#36;inmembmod = "no"; }
找到 ';~ /\,&#36;membername{&#36;membername}\,/i'; 1 次。
以上一处改为
[code]
~ /\Q\,&#36;membername{&#36;membername}\,\E/i
[/code]
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';attachment.cgi'; :
attachment.cgi/83:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad'; && &#36;pvtdown ne "no");
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';ebank.cgi'; :
ebank.cgi/346: &#36;output .= qq~<tr><td colspan=2 align=center><a href=setbank.cgi><font color=blue>进入银行管理中心</font></a></td></tr>~ if ((&#36;membercode eq "ad" && &#36;bankadminallow ne "manager") || (&#36;membercode eq "smo" && &#36;bankadminallow eq "all") || ",&#36;bankmanager," =~ /,&#36;inmembername,/i);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';editpoll.cgi'; :
editpoll.cgi/102:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';editpost.cgi'; :
editpost.cgi/144:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';forumlogs.cgi'; :
forumlogs.cgi/120:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';forums.cgi'; :
forums.cgi/127:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';ftp.cgi'; :
ftp.cgi/214: &#36;output .= "\n<table width=&#36;tablewidth align=center><tr><td>  <a href=&#36;thisprog?action=add><font color=&#36;fonthighlight><b>出售新的 FTP 服务</b></font></a></td></tr></table>" if (&#36;membercode eq "ad" || ",&#36;saleusers," =~ /,&#36;inmembername,/i);
ftp.cgi/508: &myerror("权限错误&你没有权利出售 FTP 服务!") unless (&#36;membercode eq "ad" || ",&#36;saleusers," =~ /,&#36;inmembername,/i);
ftp.cgi/549: &myerror("权限错误&你没有权利出售 FTP 服务!") unless (&#36;membercode eq "ad" || ",&#36;saleusers," =~ /,&#36;inmembername,/i);
找到 ';~ /,&#36;inmembername,/i'; 3 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';jinghua.cgi'; :
jinghua.cgi/98:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';lbfriend.cgi'; :
lbfriend.cgi/102: &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';pag.cgi'; :
pag.cgi/93:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';poll.cgi'; :
poll.cgi/113:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';post.cgi'; :
post.cgi/160:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';printpage.cgi'; :
printpage.cgi/99:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';reply_tree.cgi'; :
reply_tree.cgi/83:     &ERROROUT("你不允许进入该论坛!") if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';setbank.cgi'; :
setbank.cgi/67: if ((&#36;membercode eq "ad" || (&#36;membercode eq "smo" && &#36;bankadminallow eq "all") || ",&#36;bankmanager," =~ /,&#36;inmembername,/i) && (&#36;inpassword eq &#36;password) && (lc(&#36;inmembername) eq lc(&#36;membername)))
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';topic.cgi'; :
topic.cgi/131:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
----------------------------------------
查找 ';~ /,&#36;inmembername,/i'; 于 ';view.cgi'; :
view.cgi/130:     &error(';进入论坛&你不允许进入该论坛!';) if (",&#36;allowusers," !~ /,&#36;inmembername,/i && &#36;membercode ne ';ad';);
找到 ';~ /,&#36;inmembername,/i'; 1 次。
以上十九处改为
[code]
~ /\Q,&#36;inmembername,\E/i
[/code]
补丁完成~! 所有LB5000(包括XP和MX版本),SuperLB以及LeoBBS及时打好补丁!
______________________________________________________________________________
以下是对程序版本: LeoBBS X Build041101一点建议,可能官方未修正~! :)
[quote]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1,文件[color=&#35;DC143C]getnameinfo.pl[/color]
加入收藏夹意见;

[code]
    require "data/membertitles.cgi" if (&#36;mtitlemax eq "" || &#36;mpostmarkmax eq "");
[/code]
后面加上
[code]
    opendir (DIRS, "&#36;lbdir");
    my @files = readdir(DIRS);
    closedir (DIRS);
    my @memfavdir = grep(/^memfav/i, @files);
    &#36;memfavdir = &#36;memfavdir[0];
[/code]

[code]
&#36;pvmsggraphic{&#36;membername}   = qq~<span style=cursor:hand onClick="javascript:openScript(';messanger.cgi?action=new&touser=&#36;tempmembername&actionto=msg';,600,400)" title="发送一个短消息给&#36;membername{&#36;membername}"><img src=&#36;imagesurl/images/message.gif border=0 width=16 align=absmiddle>消息</span> ~;
[/code]
后面加入:
[code]
    &#36;favfile = (-e "&#36;{lbdir}&#36;memfavdir/close/&#36;membername{&#36;membername}.cgi") ? "&#36;{lbdir}&#36;memfavdir/close/&#36;membername{&#36;membername}.cgi" : "&#36;{lbdir}&#36;memfavdir/open/&#36;membername{&#36;membername}.cgi";
    &#36;favgraphic{&#36;membername} = (-e &#36;favfile) ? qq~<a href=fav.cgi?action=show&member=&#36;tempmembername target=_blank title="查看&#36;membername{&#36;membername}的个人收藏"><img src=&#36;imagesurl/images/memfav.gif border=0 width=16 align=absmiddle>收藏</a> ~ : "";
[/code]

[code]
\&#36;icqgraphic{"&#36;membername"}      = qq~&#36;icqgraphic{&#36;membername}~;
[/code]
后面加上:
[code]
\&#36;favgraphic{"&#36;membername"} = qq~&#36;favgraphic{&#36;membername}~;
[/code]
2,文件[color=&#35;DC143C]topic.cgi[/color]

[code]
&#36;pvmsggraphic{&#36;membername}&#36;profilegraphic{&#36;membername}
[/code]
后面加上:
[code]&#36;favgraphic{&#36;membername}
[/code]
顺便给个收藏夹小图片
解决看别人的收藏夹,可能不让看也是故意的。
______________________________________________________________________________
文件[color=&#35;DC143C]setbank.cgi[/color]
美化意见:
找到[color=&#35;00008B][u]sub ebankadminlogin[/u][/color]

[code]
table width=100% cellpadding=6 cellspacing=0>
[/code]
去掉;
并把[code]
<td bgcolor=&#35;333333 colspan=2><font color=&#35;ffffff><b>欢迎来到银行行长办公室</b></font>
[/code]
改为
[code]
<td bgcolor=&#35;2159C9 colspan=2><font color=&#35;ffffff><b>欢迎来到银行行长办公室</b></font>
[/code]
并去掉最后一个[color=&#35;00008B][u]</table>[/u][/color]。
解决银行版面花而乱的样子
______________________________________________________________________________
文件[color=&#35;DC143C]fav.cgi[/color]
美化意见:
找到
[code]
    if ((lc(&#36;inmembername) eq lc(&#36;startedby))&&(&#36;nodispown eq "yes")){ &#36;mypost="<img src=&#36;imagesurl/images/&#36;mypost_blogo title=我发表的主题> "}else {&#36;mypost=""};
    &#36;topicicon = "<img src=&#36;imagesurl/images/topicnonew.gif width=14 border=0>";
    if ((&#36;threadposts >= &#36;hottopicmark) && (&#36;forumlastvisit < &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/topichot3.gif width=14 border=0>"; }
    elsif ((&#36;threadposts >= &#36;hottopicmark) && (&#36;forumlastvisit > &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/topichotnonew.gif width=14 border=0>"; }
    elsif ((&#36;threadposts <  &#36;hottopicmark) && (&#36;forumlastvisit < &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/topicnew3.gif width=14 border=0>"; }
    elsif ((&#36;threadposts <  &#36;hottopicmark) && (&#36;forumlastvisit > &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/topicnonew.gif width=14 border=0>"; }
&#36;forumcolorone=&#36;forumcolortwo=&#36;miscbacktwo if((&#36;lastpostdate > &#36;forumlastvisit) && (&#36;inmembername ne "客人"));
    &#36;threadstate = "poll" if ((&#36;posticon =~/<br>/i)&&(&#36;threadstate eq ""));
[/code]
改为:
[code]
    if ((lc(&#36;inmembername) eq lc(&#36;startedby))&&(&#36;nodispown eq "yes")){ &#36;mypost="<img src=&#36;imagesurl/images/&#36;skin/&#36;mypost_blogo title=我发表的主题> "}else {&#36;mypost=""};
    &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topicnonew.gif width=14 border=0>";
    if ((&#36;threadposts >= &#36;hottopicmark) && (&#36;forumlastvisit < &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topichot3.gif width=14 border=0>"; }
    elsif ((&#36;threadposts >= &#36;hottopicmark) && (&#36;forumlastvisit > &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topichotnonew.gif width=14 border=0>"; }
    elsif ((&#36;threadposts <  &#36;hottopicmark) && (&#36;forumlastvisit < &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topicnew3.gif width=14 border=0>"; }
    elsif ((&#36;threadposts <  &#36;hottopicmark) && (&#36;forumlastvisit > &#36;lastpostdate) && (&#36;inmembername ne "客人")) { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topicnonew.gif width=14 border=0>"; }
&#36;forumcolorone=&#36;forumcolortwo=&#36;miscbacktwo if((&#36;lastpostdate > &#36;forumlastvisit) && (&#36;inmembername ne "客人"));
    &#36;threadstate = "poll" if ((&#36;posticon =~/<br>/i)&&(&#36;threadstate eq ""));
[/code]
找到
[code]
        if (&#36;threadstate eq "closed") { &#36;topicicon = "<img src=&#36;imagesurl/images/topiclocked0.gif width=14 border=0>"; }
    elsif (&#36;threadstate eq "poll") {
        if (&#36;size >= &#36;hotpollmark) { &#36;topicicon = "<img src=&#36;imagesurl/images/closedbhot.gif width=13 border=0>"; }
                      else { &#36;topicicon = "<img src=&#36;imagesurl/images/closedb.gif width=13 border=0>"; }
    }
    elsif (&#36;threadstate eq "pollclosed") { &#36;topicicon = "<img src=&#36;imagesurl/images/closedb1.gif width=13 border=0>"; }
[/code]
改为
[code]
        if (&#36;threadstate eq "closed") { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/topiclocked3.gif width=14 border=0>"; }
    elsif (&#36;threadstate eq "poll") {
        if (&#36;size >= &#36;hotpollmark) { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/closedbhot.gif width=13 border=0>"; }
                      else { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/closedb.gif width=13 border=0>"; }
    }
    elsif (&#36;threadstate eq "pollclosed") { &#36;topicicon = "<img src=&#36;imagesurl/images/&#36;skin/closedb1.gif width=13 border=0>"; }
[/code]
解决收藏夹某些图片的相对路径不符导致图片不能显示。
______________________________________________________________________________
文件[color=&#35;DC143C]topic.cgi[/color]
美化意见:
找到
[code]
if ((&#36;usejhpoint eq "yes")&&(&#36;jhdata =~ /\_&#36;topicid\_/)) {
    &#36;jhimage = qq~ <img src="&#36;imagesurl/images/&#36;new_JH" align=absmiddle alt=本帖为精华帖子> ~;
}
[/code]
改为:
[code]
if ((&#36;usejhpoint eq "yes")&&(&#36;jhdata =~ /\_&#36;topicid\_/)) {
    &#36;jhimage = qq~ <img src="&#36;imagesurl/images/&#36;skin/&#36;new_JH" align=absmiddle alt=本帖为精华帖子> ~;
}
[/code]
解决主题精华帖子某些图片的相对路径不符导致图片不能显示。
______________________________________________________________________________
文件[color=&#35;DC143C]modscard.cgi[/color]
一些小的矫正并加上签到率:
找到[color=&#35;00008B][u]sub top_page{[/u][/color][color]
在[b]下面[/b]加上
[code]
my &#36;total_member = 0;
open (FILE, "&#36;lbdir/data/lbmember.cgi");
while(<FILE>){
my @tmpuserdetail = split (/\t/, &#36;_);
chomp @tmpuserdetail;
next unless(&#36;tmpuserdetail[1] eq "ad" || &#36;tmpuserdetail[1] eq "smo" || &#36;tmpuserdetail[1] eq "cmo" || &#36;tmpuserdetail[1] eq "mo");
&#36;total_member++;
}
chomp @memberdata;
close (FILE);
[/code]
找到[color=&#35;00008B][u]if(-e &#36;today_log){[/u][/color]
在[b]下面[/b]把
[code]
open(FILE,&#36;today_log);
&#36;/="";
&#36;get_today_log = <FILE>;
&#36;/="\n";
close(FILE);
chop &#36;get_today_log;
&#36;get_today_log =~s/[\n\r]/\_/g;
&#36;get_today_log =~s/^\_+//;
&#36;get_today_log =~s/\_+&#36;//;
&#36;get_today_log = "\_&#36;get_today_log\_";
&#36;pcard_or_not = 1 if(&#36;get_today_log=~/\_&#36;inmembername\_/i);
&#36;get_today_log_list = &#36;get_today_log;
&#36;get_today_log_list =~s/^\_+//;
&#36;get_today_log_list =~s/(.+?)\_/<option>&#36;1<\/option>/gi;
[/code]
改为
[code]
open(FILE,&#36;today_log);
while(my &#36;line = <FILE>){
chomp &#36;line;
(&#36;line,undef) = split(/\*/,&#36;line);
&#36;get_today_log .= &#36;line."_";
&#36;get_today_log_list .= ';<option>';.&#36;line.';</option>';;
&#36;total_pcard++;
}
close(FILE);
chop &#36;get_today_log;
&#36;get_today_log = "\_&#36;get_today_log\_";
&#36;pcard_or_not = 1 if(&#36;get_today_log=~/\_&#36;inmembername\_/i);
[/code]
找到
[code]
&#36;get_today_log_list.=qq~<option>&#36;inmembername</option>~;
[/code]
在[b]下面[/b]加上:
[color=&#35;00008B][u]sub top_page{[/u][/color]
紧接着在[b]下面[/b],注意在[color=red]}[/color]外加上
[code]
&#36;total_member = 1 unless(&#36;total_member);
&#36;pcard_pc = sprintf("%.2f",(&#36;total_pcard/&#36;total_member)*100);
[/code]

找到[color=red](注意:一共两处)[/color]
[code]
<font color="&#36;fontcolormisc">日期:<i>&#36;today_date<i>
[/code]
接着[b]后面[/b]加上
[code]
  签到率:<i>&#36;pcard_pc%</i>
[/code]
找到
[code]
if ((&#36;userdetail[9]) && (&#36;userdetail[9] =~ /^[0-9]+&#36;/)) {
&#36;oicqgraphic = qq~<a href=http://search.tencent.com/cgi-bin/friend/user_show_info?ln=&#36;userdetail[9] target=_blank title="查看 QQ:&#36;oicqnumber的资料"><img src=&#36;imagesurl/images/oicq.gif border=0 width=16 align=absmiddle>QQ</a>~;
}
if ((&#36;userdetail[10]) && (&#36;userdetail[10] =~ /^[0-9]+&#36;/)) {
&#36;icqgraphic = qq~<span style="cursor:hand" onClick="javascript:openScript(';misc.cgi?action=icq&UIN=&#36;userdetail[10]';,450,300)" title="给 ICQ:&#36;icqnumber 发个消息"><img src=&#36;imagesurl/images/icq.gif border=0 width=16 align=absmiddle>ICQ</span>~;
}
[/code]
改为
[code]
if ((&#36;userdetail[9]) && (&#36;userdetail[9] =~ /^[0-9]+&#36;/)) {
&#36;oicqgraphic = qq~<a href=http://search.tencent.com/cgi-bin/friend/user_show_info?ln=&#36;userdetail[9] target=_blank title="查看 QQ:&#36;userdetail[9]的资料"><img src=&#36;imagesurl/images/oicq.gif border=0 width=16 align=absmiddle>QQ</a>~;
}
if ((&#36;userdetail[10]) && (&#36;userdetail[10] =~ /^[0-9]+&#36;/)) {
&#36;icqgraphic = qq~<span style="cursor:hand" onClick="javascript:openScript(';misc.cgi?action=icq&UIN=&#36;userdetail[10]';,450,300)" title="给 ICQ:&#36;userdetail[10] 发个消息"><img src=&#36;imagesurl/images/icq.gif border=0 width=16 align=absmiddle>ICQ</span>~;
}
[/code]
解决查看签到斑竹的QQtitle仍然显示是自己的QQ,并加上了签到率,让坛主或者说“一把手”心里有个底。Ps:最好是能够在loginout.cgi加上一个自动签到标记。
______________________________________________________________________________
文件[color=&#35;DC143C]bbs.lib.pl[/color]
1,合理性建议:
在[color=&#35;00008B][u]sub title {[/u][/color]找到
[code]
if (&#36;forumgraphic) {
    (&#36;fgwidth,&#36;fgheight) = split(/\|/,&#36;fgwidth);
    if (&#36;forumgraphic =~ /\.swf&#36;/i) {&#36;forumgraphicoutput = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=&#36;imagesurl/myimages/&#36;forumgraphic quality=high width=&#36;fgwidth height=&#36;fgheight pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
        else {&#36;forumgraphicoutput = qq~<a href=forums.cgi?forum=&#36;inforum><img src=&#36;imagesurl/myimages/&#36;forumgraphic border=0 height=60></a>~};
} else {
    if (&#36;boardlogo =~ /\.swf&#36;/i) {&#36;forumgraphicoutput = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=&#36;imagesurl/myimages/&#36;boardlogo quality=high width=&#36;boardlogow height=&#36;boardlogoh pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
        else {&#36;forumgraphicoutput = qq~<a href=forums.cgi?forum=&#36;inforum><img src=&#36;imagesurl/myimages/&#36;boardlogo border=0 height=60></a>~};
}
[/code]
改为:
[code]
if (&#36;forumgraphic) {
    (&#36;fgwidth,&#36;fgheight) = split(/\|/,&#36;fgwidth);
    if (&#36;forumgraphic =~ /\.swf&#36;/i) {&#36;forumgraphicoutput = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=&#36;imagesurl/myimages/&#36;forumgraphic quality=high width=&#36;fgwidth height=&#36;fgheight pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
        else {&#36;forumgraphicoutput = qq~<a href=forums.cgi?forum=&#36;inforum><img src=&#36;imagesurl/myimages/&#36;forumgraphic border=0 height=&#36;fgheight></a>~};
} else {
    if (&#36;boardlogo =~ /\.swf&#36;/i) {&#36;forumgraphicoutput = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=&#36;imagesurl/myimages/&#36;boardlogo quality=high width=&#36;boardlogow height=&#36;boardlogoh pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
        else {&#36;forumgraphicoutput = qq~<a href=forums.cgi?forum=&#36;inforum><img src=&#36;imagesurl/myimages/&#36;boardlogo border=0 height=&#36;fgheight></a>~};
}
[/code]
解决分论坛的Logo大小由自己设定。
2,合理性建议:
在[color=&#35;00008B][u]sub whosonline {[/u][/color]找到
[code]
                &#36;fromwhere = "未知" if (length(&#36;fromwhere) > 40);
                &#36;saveosinfo = "未知" if (length(&#36;saveosinfo) > 15);
                &#36;savebrowseinfo = "未知" if (length(&#36;savebrowseinfo) > 28);
[/code]
改为:
[code]
                &#36;fromwhere = "未知" if (length(&#36;fromwhere) > 50);
                &#36;saveosinfo = "未知" if (length(&#36;saveosinfo) > 20);
                &#36;savebrowseinfo = "未知" if (length(&#36;savebrowseinfo) > 30);
[/code]
解决一些长地址范围导致未知的问题。可能有些问题看复杂了,我把[color=&#35;DC143C]fastlogin.cgi[/color]也加上了IP,因为怎么引用,[color=&#35;DC143C]bbs.lib.pl[/color]中的[color=&#35;00008B][u]whosonline[/u][/color]函数对[color=&#35;DC143C]fastlogin.cgi[/color]的[color=&#35;00008B][b]&#36;trueipaddress[/b][/color]无法识别,于是我在[color=&#35;DC143C]fastlogin.cgi[/color]开始加上了一段
[code]
my &#36;ipaddress  = &#36;ENV{';REMOTE_ADDR';};
&#36;trueipaddress = &#36;ENV{';HTTP_X_FORWARDED_FOR';};
&#36;trueipaddress = &#36;ipaddress if (&#36;trueipaddress eq "" || &#36;trueipaddress eq "unknown" || &#36;trueipaddress =~ m/^192\.168\./ || &#36;trueipaddress =~ m/^10\./);
my &#36;trueipaddress1 = &#36;ENV{';HTTP_CLIENT_IP';};
&#36;trueipaddress = &#36;trueipaddress1 if (&#36;trueipaddress1 ne "" && &#36;trueipaddress1 ne "unknown" && &#36;trueipaddress1 !~ m/^192\.168\./ && &#36;trueipaddress1 !~ m/^10\./);
[/code]
也许根本不需加,但是我怎么测试也不行,暂时加上为妙~~ :)
______________________________________________________________________________
文件[color=&#35;DC143C]messanger.cgi[/color]
1,小缺陷:
在[color=&#35;00008B][u]elsif (&#36;action eq "read")[/u][/color]找到
[code]
       if (&#36;inmsg < @outboxmessages - 1)
{
my &#36;outboxdown = &#36;inmsg + 1;
(undef, &#36;nreadstate, undef, &#36;nmessagetitle, undef) = split(/\t/, &#36;outboxmessages[&#36;outboxdown]);
&#36;outboxmsgdown = qq~<a href=&#36;thisprog?action=outread&msg=&#36;outboxdown title="下一封訊息: (&#36;readstatus{&#36;nreadstate})\n訊息標題: &#36;nmessagetitle">下一封</a>~;
}
if (&#36;inmsg > 0)
{
my &#36;outboxup = &#36;inmsg - 1;
(undef, &#36;preadstate, undef, &#36;pmessagetitle, undef) = split(/\t/, &#36;outboxmessages[&#36;outboxup]);
&#36;outboxmsgup = qq~<a href=&#36;thisprog?action=outread&msg=&#36;outboxup title="上一封訊息: (&#36;readstatus{&#36;preadstate})\n訊息標題: &#36;pmessagetitle">上一封</a>~;
}
&#36;outboxsplitline = " | " if (&#36;outboxmsgdown ne "" && &#36;outboxmsgup ne "");
if (&#36;outboxmsgdown ne "" || &#36;outboxmsgup ne "")
{
&#36;outboxtempone = "[ ";
&#36;outboxtemptwo = " ]";
}
[/code]
改为:
[code]
        if (&#36;inmsg < @inboxmessages - 1)
{
my &#36;inboxdown = &#36;inmsg + 1;
(undef, &#36;nreadstate, undef, &#36;nmessagetitle, undef) = split(/\t/, &#36;inboxmessages[&#36;outboxdown]);
&#36;inboxmsgdown = qq~<a href=&#36;thisprog?action=read&msg=&#36;inboxdown title="下一条消息: (&#36;readstatus{&#36;nreadstate})\n消息标题: &#36;nmessagetitle">下一条</a>~;
}
if (&#36;inmsg > 0)
{
my &#36;inboxup = &#36;inmsg - 1;
(undef, &#36;preadstate, undef, &#36;pmessagetitle, undef) = split(/\t/, &#36;inboxmessages[&#36;outboxup]);
&#36;inboxmsgup = qq~<a href=&#36;thisprog?action=read&msg=&#36;inboxup title="上一条消息: (&#36;readstatus{&#36;preadstate})\n消息标题: &#36;pmessagetitle">上一条</a>~;
}
&#36;inboxsplitline = " | " if (&#36;inboxmsgdown ne "" && &#36;inboxmsgup ne "");
if (&#36;inboxmsgdown ne "" || &#36;inboxmsgup ne "")
{
&#36;inboxtempone = "[ ";
&#36;inboxtemptwo = " ]";
}
[/code]
解决收件箱上翻下翻页面。[color=&#35;990000][b]tsefai[/b][/color]建议.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[/quote]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.