📄 userrating.cgi
字号:
#!/usr/bin/perl
#######################################################
# LB5000MX 源程序版权所有:CGI编程者之家 (CGIer.com)
#
# 程序编写:山鹰糊 (Shining Hu)、花无缺 (Ifairy Han)
#
# 程序修改:BigJim (94Cool.Net)
#######################################################
BEGIN
{
$LBPATH = '.';
my $pgm = $0;
$pgm =~ s/\\/\//g;
$pgm =~ s/^.*\/([^\/]+)$/$1/g;
unless (-e $LBPATH.'/'.$pgm)
{
foreach ($0, $ENV{'SCRIPT_FILENAME'}, $ENV{'PATH_TRANSLATED'})
{
s!\\!/!g;
s/^(.*)\/[^\/]+$/$1/g;
if (-e $_ . '/' .$pgm)
{
$LBPATH = $_;
last;
}
}
}
unshift(@INC, "$LBPATH");
}
use LBCGI;
$LBCGI::POST_MAX = 10000;
$LBCGI::DISABLE_UPLOADS = 1;
$LBCGI::HEADERS_ONCE = 1;
require "data/boardinfo.cgi";
require "data/styles.cgi";
require "lbmail.lib.pl";
require "lb.lib.pl";
$|++;
$thisprog = "userrating.cgi";
$query = new LBCGI;
$inmembername = $query->param ("inmembername");
$inpassword = $query->param ("password");
$inmembername = $query->cookie("amembernamecookie") if ($inmembername eq "");
$inpassword = $query->cookie("apasswordcookie") if ($inpassword eq "");
$inmembername =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
$inpassword =~ s/[\a\f\n\e\0\r\t\|\@\;\#\{\}\$]//isg;
if ($inmembername eq "" || $inmembername eq "客人")
{
&error("用户投票&没有该注册用户!");
}
else
{
&getmembernolock($inmembername);
&error("用户投票&没有该注册用户!") if ($userregistered eq "no");
&error("用户投票&错误的管理员密码!") if ($inpassword ne $password);
}
$editmembername = $query->param("membername");
&error("普通错误&老大,别乱黑我的程序呀!") if ($editmembername =~ m/\// || $editmembername =~ m/\\/ || $editmembername =~ m/\.\./);
$action = $query->param("action");
$inforum = $query->param("oldforum");
$intopic = $query->param("oldtopic");
$inpostno = $query->param("oldpostno");
&error("普通错误&老大,别乱黑我的程序呀!") if ($inforum !~ /^[0-9]+$/ || $intopic !~ /^[0-9]+$/ || $inpostno !~ /^[0-9]+$/);
&error("论坛投票&投票主题不存在!") unless (-e "${lbdir}forum$inforum/$intopic.pl");
require "data/style${inforum}.cgi" if (-e "${lbdir}data/style${inforum}.cgi");
$action = "login" if ($action ne "logmein" && $action ne "process");
&getoneforum($inforum);
&title;
$forumgraphic = $forumgraphic ? $forumgraphic : $boardlogo;
$forumgraphic = $forumgraphic =~ /\.swf$/i ? qq~<param name=play value=true><param name=loop value=true><param name=quality value=high><embed src=$imagesurl/myimages/$forumgraphic quality=high width=$fgwidth height=$fgheight pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash"></embed>~ : "<img src=$imagesurl/myimages/$forumgraphic border=0>";
$output .= qq~
<table cellPadding=0 cellSpacing=0 border=0 width=$tablewidth align=center><tr>
<td width=30% rowspan=2>$forumgraphic</td>
<td valign=top><font color=$fontcolormisc><img src=$imagesurl/images/closedfold.gif width=15 height=11><a href=leoboard.cgi> $boardname</a><br> <img src=$imagesurl/images/bar.gif width=15 height=15><img src=$imagesurl/images/openfold.gif width=15 height=11> 给用户投票</td>
</tr></table>
<p>
<table cellPadding=0 cellSpacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center><tr><td><table cellPadding=6 cellSpacing=1 border=0 width=100%>~;
if ($action eq "login")
{
$output .= qq~
<form action=$thisprog method=POST>
<input type=hidden name=action value="logmein">
<input type=hidden name=oldforum value="$inforum">
<input type=hidden name=oldtopic value="$intopic">
<input type=hidden name=oldpostno value="$inpostno">
<tr><td bgcolor=$miscbacktwo colSpan=2 align=center><font color=$fontcolormisc><b>请首先登录然后对 $editmembername 投票(仅对坛主和版主开放)</b></font></td></tr>
<tr><td bgcolor=$miscbackone><font color=$fontcolormisc >请输入你的姓名</font></td><td bgcolor=$miscbackone><input type=text name=inmembername value="$inmembername" size=20></td></tr>
<tr><td bgcolor=$miscbackone><font color=$fontcolormisc>请输入你的密码</font></td><td bgcolor=$miscbackone><input type=password name=password value="$inpassword" size=20></td></tr>
<tr><td bgcolor=$miscbackone><font color=$fontcolormisc >被投票用户名称</font></td><td bgcolor=$miscbackone><input type=text name=membername value="$editmembername" size=20></td></tr>
<tr><td bgcolor=$miscbacktwo colSpan=2 align=center><input type=submit name=submit value="登录投票"></td></form></tr>
</table></td></tr></table>~;
}
elsif ($action eq "logmein")
{
&error("用户投票&仅仅本版管理员才能在本版投票") unless ($membercode eq "ad" || $membercode eq "smo" || $inmembmod eq "yes");
&getmember($editmembername);
&error("用户投票&没有该注册用户") if ($userregistered eq "no");
&error("给用户投票&坛主和版主不能被投票") if ($membercode eq "ad" || $membercode eq "smo" || $membercode eq "cmo" || $membercode eq "mo");
$rating = 0 if ($rating eq "");
$rating = -6 if ($rating < -6);
$rating = $maxweiwang if ($rating > $maxweiwang);
if ($rating == $maxweiwang) {$pwout = qq~<input type=radio name=pw value="warn" checked>警告用户(威望减 1)~;}
elsif ($rating == -5) {$pwout = qq~<input type=radio name=pw value="praise" checked>赞扬用户(威望加 1) <input type=radio name=pw value="warn">禁止用户发言(威望减为 -6)</td>~;}
elsif ($rating == -6) {$pwout = qq~<input type=radio name=pw value="praise" checked>恢复用户(威望恢复成 -5)~;}
else {$pwout = qq~<input type=radio name=pw value="praise" checked>赞扬用户(威望加 1) <input type=radio name=pw value="warn">警告用户(威望减 1) <input type=radio name=pw value="reset">清零(威望为 0) <input type=radio name=pw value="worst">禁止发言(威望减为 -6)</td>~;}
$output .= qq~
<tr><td bgcolor=$miscbacktwo align=center><font color=$fontcolormisc><b>$editmembername 目前的威望是: $rating</b></font></td></tr>
<tr><td bgcolor=$miscbackone align=center>
<form action=$thisprog method=POST>
<input type=hidden name=action value=process>
<input type=hidden name=inmembername value="$inmembername">
<input type=hidden name=membername value="$editmembername">
<input type=hidden name=password value="$inpassword">
<input type=hidden name=oldforum value="$inforum">
<input type=hidden name=oldtopic value="$intopic">
<input type=hidden name=oldpostno value="$inpostno">
你的选择是: $pwout
</td></tr>
<tr><td bgcolor=$miscbackone align=center><font color=$fontcolormisc>投票原因:<br><textarea size=20 name=reason cols=40 rows=5></textarea></td></tr>~;
$output .= qq~<tr><td bgcolor=$miscbackone align=center>使用邮件通知用户: <input type=radio name=notify value="yes">是 <input type=radio name=notify value="no" checked>否</td>~ if ($emailfunctions eq "on");
$output .= qq~
<tr><td bgcolor=$miscbacktwo align=center><input type=submit value="确认" name=submit></td></form></tr>
</table></td></tr></table>~;
}
elsif ($action eq "process")
{
&error("用户投票&仅仅本版管理员才能在本版投票") unless ($membercode eq "ad" || $membercode eq "smo" || $inmembmod eq "yes");
&getmember($editmembername);
&error("用户投票&没有该注册用户") if ($userregistered eq "no");
&error("给用户投票&坛主和版主不能被投票") if ($membercode eq "ad" || $membercode eq "smo" || $membercode eq "cmo" || $membercode eq "mo");
my $pw = $query->param("pw");
my $reason = $query->param("reason");
my $notify = $query->param("notify");
&error("用户投票&投票必须说明理由!") if ($reason eq "");
$reason = &cleaninput($reason);
my $oldrating = $rating;
if ($pw eq "praise")
{
$pwmail = $pwmailing = "赞扬";
$rating++;
}
elsif ($pw eq "warn")
{
$pwmail = $pwmailing = "警告";
$rating--;
}
elsif ($pw eq "reset")
{
$pwmail = "恢复威望为 0";
$pwmailing = "恢复";
$rating = 0;
}
else
{
$pwmail = "减低威望到最低";
$pwmailing = "减低";
$rating = -6;
}
$rating = 0 if ($rating eq "");
$rating = -6 if ($rating < -6);
$rating = $maxweiwang if ($rating > $maxweiwang);
$newmembercode = $rating == -6 ? "banned" : $membercode eq "banned" ? "me" : $membercode;
my $memfilename = $editmembername;
$memfilename =~ s/ /\_/sg;
$memfilename =~ tr/A-Z/a-z/;
if ($membername ne "" && $password ne "")
{
my $filetomake = "$lbdir$memdir/$memfilename.cgi";
$filetomake = &stripMETA($filetomake);
&winlock($filetomake) if ($OS_USED eq "Nt");
if (open(FILE0, ">$filetomake"))
{
flock(FILE0, 2) if ($OS_USED eq "Unix");
print FILE0 "$membername\t$password\t$membertitle\t$newmembercode\t$numberofposts|$numberofreplys\t$emailaddress\t$showemail\t$ipaddress\t$homepage\t$oicqnumber\t$icqnumber\t$location\t$interests\t$joineddate\t$lastpostdate\t$signature\t$timedifference\t$privateforums\t$useravatar\t$userflag\t$userxz\t$usersx\t$personalavatar\t$personalwidth\t$personalheight\t$rating\t$lastgone\t$visitno\t$addjy\t$meili\t$mymoney\t$postdel\t$sex\t$education\t$marry\t$work\t$born\t$chatlevel\t$chattime\t$jhmp\t$honor\t$ebankdata\t$onlinetime\t$userquestion\t$useradd6\t$useradd7\t$soccerdata";
close(FILE0);
}
&winunlock($filetomake) if ($OS_USED eq "Nt");
}
if ($rating == -6)
{
my $filetoopen = "${lbdir}data/banemaillist.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, ">>$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
print FILE "$emailaddress\t";
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
$filetoopen = "${lbdir}data/baniplist.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, ">>$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
print FILE "$ipaddress\t";
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
}
else
{
my $filetoopen = "${lbdir}data/banemaillist.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt" || $OS_USED eq "Unix");
open(FILE, $filetoopen);
flock(FILE, 1) if ($OS_USED eq "Unix");
$emaildata = <FILE>;
close(FILE);
chomp($emaildata);
@emaildata = split(/\t/, $emaildata);
open(FILE, ">$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
foreach (@emaildata)
{
next if ($_ eq "");
print FILE "$_\t" if ($emailaddress ne $_);
}
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt" || $OS_USED eq "Unix");
$filetoopen = "${lbdir}data/baniplist.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt" || $OS_USED eq "Unix");
open(FILE, $filetoopen);
flock(FILE, 1) if ($OS_USED eq "Unix");
$ipdata = <FILE>;
close(FILE);
chomp($ipdata);
@ipdata = split(/\t/, $ipdata);
open(FILE, ">$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
foreach (@ipdata)
{
next if ($_ eq "");
print FILE "$_\t" if ($ipaddress ne $_);
}
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt" || $OS_USED eq "Unix");
}
$trueipaddress = $ENV{"HTTP_CLIENT_IP"};
$trueipaddress = $ENV{"HTTP_X_FORWARDED_FOR"} if ($trueipaddress eq "" || $trueipaddress eq "unknown");
$trueipaddress = "no" if ($trueipaddress eq "" || $trueipaddress eq "unknown");
my $thistime = time;
$filetomake = "${lbdir}data/userratinglog.cgi";
&winlock($filetomake) if ($OS_USED eq "Nt");
open(FILE0, ">>$filetomake");
flock(FILE0, 2) if ($OS_USED eq "Unix");
print FILE0 "$editmembername\t$inmembername\t$rating\t$thistime\t$inforum\t$intopic\t$ENV{'REMOTE_ADDR'}\t$trueipaddress\t$reason\t\n";
close(FILE0);
# my $threadtomake = "${lbdir}forum$inforum/$intopic.thd.cgi";
# $inpostno--;
# if (-e $threadtomake)
# {
# &winlock($threadtomake) if ($OS_USED eq "Nt" || $OS_USED eq "Unix");
# open(FILE, $threadtomake);
# flock(FILE, 1) if ($OS_USED eq "Unix");
# my @threads = <FILE>;
# close(FILE);
# if ($inpostno < @threads && $inpostno >= 0)
# {
# my ($membername, $topictitle, $postipaddresstemp, $showemoticons, $showsignature, $postdate, $post, $posticon) = split(/\t/, $threads[$inpostno]);
# $post = "<b><font color=red>版主模式: </font>用户 $editmembername 威望 $oldrating → $rating,<br>理由:$reason。<br>操作者: $inmembername,本贴有威望操作记录。</b><br><br><br>$post";
# $threads[$inpostno] = "$membername\t$topictitle\t$postipaddresstemp\t$showemoticons\t$showsignature\t$postdate\t$post\t$posticon";
# open(FILE, ">$threadtomake");
# flock(FILE, 2) if ($OS_USED eq "Unix");
# foreach (@threads)
# {
# chomp;
# next if ($_ eq "");
# print FILE "$_\n";
# }
# close(FILE);
# }
# &winunlock($threadtomake) if ($OS_USED eq "Nt" || $OS_USED eq "Unix");
# }
if ($notify eq "yes" && $emailfunctions eq "on")
{
my $membertitleout = $newmembercode eq "banned" ? "被禁止" : "普通会员";
my $subject = "你已经被 $inmembername $pwmail !";
my $message = "<br>$homename<br>";
$message .= "<a href=$boardurl/leoboard.cgi target=_blank>$boardurl/leoboard.cgi</a><br>";
$message .= "<a href=$boardurl/topic.cgi?forum=$inforum&topic=$intopic target=_blank>$boardurl/topic.cgi?forum=$inforum&topic=$intopic</a><br><br><br>";
$message .= "你已经被 $inmembername $pwmail !<br><br><br>";
$message .= "你现在的威望是: $rating<br>";
$message .= "你现在的状态是: $membertitleout<br>";
$message .= "你被 $pwmailing 的原因是:<br>";
$message .= "$reason<br><br>";
$message .= "假如你认为有错, 请发信给<br>";
$message .= "坛主: $adminemail_in 解释原因!<br>";
&sendmail($adminemail_out, $adminemail_out, $emailaddress, $subject, $message);
}
$output .= qq~
<tr><td bgcolor=$miscbacktwo align=center><font color=$fontcolormisc><b>$editmembername 已经成功被$pwmail</b></font></td></tr>
<tr><td bgcolor=$miscbackone><font color=$fontcolormisc>具体情况:<br><ul>
<li><a href=topic.cgi?forum=$inforum&topic=$intopic>返回当前主题 </a>$pages
<li><a href=forums.cgi?forum=$inforum>返回当前论坛</a>
<li><a href=leoboard.cgi>返回论坛首页</a>
</ul></td></tr>
</table></td></tr></table>~;
}
print header(-charset=>gb2312);
&output(-Title=>"$boardname - 用户投票", -ToPrint=>$output, -Version=>$versionnumber);
exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -