📄 setmembers.cgi
字号:
#!/usr/bin/perl
#############################################################
# LeoBoard ver.5000 / LB5000 / 雷傲超级论坛 ver.5000
#
# 版权所有: 雷傲工作室(原蓝宝石软件工作室)
#
# 制作人 : 山鹰糊 (Shining Hu)
# 花无缺 (Ifairy Han)
#
# 主页地址: http://www.CGIer.com/ CGI 编程者之家
# http://www.LeoBoard.com/ 雷傲论坛支持主页
# http://www.leoBBS.com/ 本论坛直通车
#
#############################################################
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=1024*150;
$LBCGI::DISABLE_UPLOADS = 1;
$LBCGI::HEADERS_ONCE = 1;
require "data/boardinfo.cgi";
require "data/styles.cgi";
require "lbadmin.lib.pl";
require "lbmail.lib.pl";
require "lb.lib.pl";
require "code.cgi";
$|++; # Unbuffer the output
#################--- Begin the program ---###################
$thisprog = "setmembers.cgi";
$query = new LBCGI;
&ipbanned; #封杀一些 ip
$action = $query -> param('action');
$box = $query -> param('box');
$checkaction = $query -> param('checkaction');
$inletter = $query -> param('letter');
$inmember = $query -> param('member');
$inmember = &unHTML("$inmember");
$action = &unHTML("$action");
$indellast = $query -> param('dellast');
$indellast = &unHTML("$indellast");
$indelposts = $query -> param('delposts');
$indelposts = &unHTML("$indelposts");
$indeltime = $query -> param('deltime');
$indeltime = &unHTML("$indeltime");
$delusetype = $query -> param('delusetype');
$delusetype = &unHTML("$delusetype");
$indelcdrom = $query -> param('delcdrom');
$indelcdrom = &unHTML("$indelcdrom");
$undelname = $query -> param('undelname');
$undelname = &unHTML("$undelname");
$inmembername = $query->cookie("adminname");
$inpassword = $query->cookie("adminpass");
$inmembername =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
$inpassword =~ s/[\a\f\n\e\0\r\t\|\@\;\#\{\}\$]//isg;
&getadmincheck;
print header(-charset=>gb2312);
&admintitle;
&getmember("$inmembername");
if ((($membercode eq "ad")||($membercode eq "smo")) && ($inpassword eq $password) && (lc($inmembername) eq lc($membername))) {
print qq~
<tr><td bgcolor=#333333" colspan=2><font color=#FFFFFF>
<b>欢迎来到论坛管理中心 / 用户管理</b>
</td></tr>
~;
my %Mode = (
'viewletter' => \&viewletter,
'edit' => \&edit,
'deletemember' => \&deletemember,
'unban' => \&unban,
'delnopost' => \&delnopost,
'canceldel' => \&canceldel,
'deleteavatar' => \&deleteavatar,
'boxaction' => \&boxaction,
'delok' => \&delok,
'viewip' => \&viewip,
'viewdelmembers' => \&viewdelmembers,
'undelmember' => \&undelmember
);
if($Mode{$action}) {
$Mode{$action}->();
}
else { &memberoptions; }
print qq~</table></td></tr></table>~;
}
else {
&adminlogin;
}
############### delete member
sub deleteavatar {
$oldmembercode = $membercode;
&getmember("$inmember");
if ((($membercode eq "ad")||($membercode eq "smo")||($membercode eq "cmo")||($membercode eq "mo"))&&($oldmembercode eq "smo")) {
print "<tr><td bgcolor=#EEEEEE colspan=2 align=center><font color=#333333><b>总斑竹无权删除坛主和斑竹资料!</b></td></tr>";
exit;
}
unlink ("${imagesdir}usravatars/$inmember.gif");
unlink ("${imagesdir}usravatars/$inmember.png");
unlink ("${imagesdir}usravatars/$inmember.jpg");
unlink ("${imagesdir}usravatars/$inmember.jpeg");
unlink ("${imagesdir}usravatars/$inmember.swf");
unlink ("${imagesdir}usravatars/$inmember.bmp");
print qq~
<tr>
<td bgcolor=#EEEEEE align=center colspan=2>
<font color=#333333><b>用户头像已经删除了</b>
</td></tr>
~;
} # end routine
##################################################################################
######## Subroutes (forum list)
sub memberoptions {
%iplist=();%lettlerlist=();
open (FILE, "$lbdir/data/lbmember4.cgi");
flock(FILE, 1) if ($OS_USED eq "Unix");
my @file = <FILE>;
close (FILE);
chomp @file;
@file=sort @file;
$nowcount_a = 0;$nowcount_b = 0;
foreach(@file){
my ($getmembername,$getip)=split(/\t/,$_);
my $fr;
($getip,$getip2)=split(/, /,$getip);
$getip = $getip2 if (($getip2 ne "")&&($getip2 ne "unknown"));
$getip=~s/\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$//;
unless(defined($iplist{$getip})) {
$iplist{$getip}="$_";
$ipshow=sprintf("% 3s",$getip);
$ipshow=~s/\s/\ \;/g;
$tempoutput2 .= qq~<br>~ if ($nowcount_b%15 == 0);
$tempoutput2 .= qq~ <a href="$thisprog?action=viewip&letter=$getip">$ipshow</a> ~;
$nowcount_b++;
}
if ($getmembername =~ /^[\w\-]/) {
$fr = substr($getmembername, 0, 1);
$fr =~ tr/a-z/A-Z/;
$frshow=sprintf("%- 2s",$fr);
$frshow=~s/\s/\ \;/g;
} else {
$fr =substr($getmembername, 0, 2);
$frshow=$fr;
}
unless(defined($lettlerlist{$fr})) {
$lettlerlist{$fr}="$_";
$tempoutput .= qq~<br>~ if ($nowcount_a%15 == 0);
$tempoutput .= qq~ <a href="$thisprog?action=viewletter&letter=~ . ($uri_escape eq "no" ? $fr : uri_escape($fr)) . qq~">$frshow</a> ~;
$nowcount_a ++;
}
}
print qq~
<tr>
<td bgcolor=#EEEEEE align=center colspan=2>
<font color=#990000><b>请选择一项</b>
</td>
</tr>
~;
if ($membercode eq "ad") {
print qq~
<tr>
<td bgcolor=#FFFFFF colspan=2>
<font color=#333333><b><a href="foruminit.cgi?action=dogetold">用户数据整理</a></b><br>
对用户数据进行整理,保证论坛高速运行,建议每10-15天运行一次。<BR><BR>
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF colspan=2>
<font color=#333333><b><a href="foruminit.cgi?action=uptop">更新用户排名</a></b><br>
用户排名其实不会自动更新的,除非你在这儿更新一下。<BR><BR>
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF colspan=2>
<font color=#333333><b><a href="foruminit.cgi?action=updatecount">重新计算用户总数</a></b><br>
将更新首页显示的用户数,这样可以用来恢复正确总用户数。<BR><BR>
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF colspan=2>
<font color=#333333><b>删除符合条件的用户</b>(同时会自动更新用户排名)<BR>
预删除并不会真正删除用户,只是做一个统计。斑竹和坛主是不允许在这里删除的。<BR>
预删除和真正删除期间,如果用户访问了论坛,那么在真正删除的时候,此用户资料将被保留。<BR>
真正删除后,用户的所有资料都会丢失,除非你做过备份,否则是无法恢复的。
<form action="setmembers.cgi" method=POST>
<input type=hidden name="action" value="delnopost">
<select name="deltime">
<option value="30" >一个月内没访问
<option value="60" >二个月内没访问
<option value="90" >三个月内没访问
<option value="121">四个月内没访问
<option value="151">五个月内没访问
<option value="182">六个月内没访问
<option value="212">七个月内没访问
<option value="243">八个月内没访问
<option value="273">九个月内没访问
<option value="304">十个月内没访问
<option value="365">一年之内没访问
<option value="730">两年之内没访问
</select> 且
<select name="delposts">
<option value="9999999999">不管发贴总数
<option value="0" >没有发过贴子
<option value="10" >总发贴少于 10
<option value="50" >总发贴少于 50
<option value="100" >总发贴少于 100
<option value="200" >总发贴少于 200
<option value="300" >总发贴少于 300
<option value="500" >总发贴少于 500
<option value="800" >总发贴少于 800
<option value="1000">总发贴少于 1000
</select> 且
<select name="dellast">
<option value="no" >不管访问次数
<option value="5" >访问少于 5 次
<option value="10" >访问少于 10 次
<option value="20" >访问少于 20 次
<option value="50" >访问少于 50 次
<option value="80" >访问少于 80 次
<option value="100" >访问少于 100 次
<option value="200" >访问少于 200 次
<option value="500" >访问少于 500 次
</select> 且
<select name="delcdrom">
<option value="30" >一个月内没发言
<option value="60" >二个月内没发言
<option value="90" >三个月内没发言
<option value="121">四个月内没发言
<option value="151">五个月内没发言
<option value="182">六个月内没发言
<option value="212">七个月内没发言
<option value="243">八个月内没发言
<option value="273">九个月内没发言
<option value="304">十个月内没发言
<option value="365">一年之内没发言
<option value="730">两年之内没发言
</select><BR>符合方式
<select name="delusetype">
<option value="And">AND(所有资料符合)
<option value="OR">OR(某一资料符合)
</select> <BR>输入每次进行处理的用户数 <input type=text name="users" size=3 maxlength=3 value=300> 如果无法正常完成,请尽量减少这个数目,延长处理时间<BR>
<input type=submit value="预 删 除">
</form>
~;
if (-e "${lbdir}data/delmember.cgi") {
open (FILE, "${lbdir}data/delmember.cgi");
@delmembers = <FILE>;
close (FILE);
$delmembersize = @delmembers;
$delmembersize --;
$pretime=$delmembers[0];
if ($delmembersize ne "0") {
chomp $pretime;
$nowtime = time;
$nowtime = $nowtime - 3*24*3600;
if ($nowtime > $pretime) {
$oooput = qq~距离上次预删除时间已经超过3天了 [<a href=$thisprog?action=delok>确定删除</a>]~;
}
else {
$oooput = qq~距离上次预删除时间还未到3天 [<a href=$thisprog?action=delok>不管,强制删除</a>]~;
}
$pretime=&dateformat($pretime);
print qq~
上次预删除时间:$pretime (预删除用户个数: $delmembersize ) [<a href=$thisprog?action=canceldel>取消预删除</a>]<BR>
$oooput [<a href=$thisprog?action=viewdelmembers>查看预删除会员列表</a>]
~;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -