⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userrating.cgi

📁 一个linux论坛
💻 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 + -