📄 setmembers.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"; # Output errors to browser
use CGI qw(:standard); # Saves loads of work
$CGI::POST_MAX=1024 * 150; # limit post data
$CGI::DISABLE_UPLOADS = 1; # Disable uploads
eval {
($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1");
($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1");
require "ikon.lib"; # Require ikonboard ()
require "ikonadmin.lib"; # Require Admin func()
require "data/progs.cgi"; # Require prog names
require "data/boardinfo.cgi";# Require board info
require "data/styles.cgi"; # Require styles info
};
if ($@) {
print header(-charset=>"gb2312"); print start_html(-title=>"ib2000 出错!");
print "不能够找到文件:$@\n如果您使用的是 Windows 类操作系统,请在每一个程序中更改 require 的设置,填入绝对路径!";
print end_html; exit;
}
$|++; # Unbuffer the output
#################--- Begin the program ---###################
$thisprog = "setmembers.cgi";
$query = new CGI;
&checkVALIDITY;
$action = $query -> param('action');
$checkaction = $query -> param('checkaction');
$inletter = $query -> param('letter');
$inmember = $query -> param('member');
$inmember = &unHTML("$inmember");
$action = &unHTML("$action");
$inmembername = cookie("adminname");
$inpassword = cookie("adminpass");
print header(-charset=>"gb2312");
&admintitle;
&getmember("$inmembername");
if (($membercode eq "ad") && ($inpassword eq $password) && ($inmembername eq $membername)) {
print qq~
<tr><td bgcolor=#333333" colspan=2><font face=宋体 color=#FFFFFF>
<b>欢迎来到论坛管理中心 / 用户管理</b>
</td></tr>
~;
my %Mode = (
'updatecount' => \&docount,
'viewletter' => \&viewletter,
'edit' => \&edit,
'deletemember' => \&deletemember,
'unban' => \&unban
);
if($Mode{$action}) {
$Mode{$action}->();
}
else { &memberoptions; }
print qq~</table></td></tr></table>~;
}
else {
&adminlogin;
}
##################################################################################
######## Subroutes (forum list)
sub memberoptions {
$dirtoopen = "$ikondir" . "members";
opendir (DIR, "$dirtoopen");
@filedata = readdir(DIR);
closedir (DIR);
@sortedfile = sort(@filedata);
@sortedfile = grep(/cgi$/,@sortedfile);
foreach (@sortedfile) {
if ($_ =~ /^\w/) {
$fr = substr($_, 0, 1);
$fr =~ tr/a-z/A-Z/;
}
else {
$fr =substr($_, 0, 2);
}
push(@letters,$fr);
}
@sortedletters = sort(@letters);
print qq~
<tr>
<td bgcolor=#EEEEEE valign=middle align=center colspan=2>
<font face=宋体 color=#990000><b>请选择一项</b>
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF valign=middle align=left colspan=2>
<font face=宋体 color=#333333>1.<b><a href="$thisprog?action=updatecount">计算用户总数</a></b><br>
将得到所有的用户数。
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF valign=middle align=left colspan=2>
<font face=宋体 color=#333333>2.<b>查看、编辑、删除、禁止用户</b><br>
点击下面的字母你可以查看到用户详细资料, 并可编辑、改变用户的信息。<br>
禁止用户:只要简单的点击“编辑用户”在“用户属性”中选择“禁止用户”就可以。<br>
删除用户:只要找到用户,点击删除就可以。<br><br>
~;
$nowcount =0;
foreach (@sortedletters) {
$tempoutput .= qq~<br>~ if ($nowcount == int($nowcount/20)*20);
unless ($_ eq "$ltr") {
$tempoutput .= qq~ <a href="$thisprog?action=viewletter&letter=$_">$_</a> ~;
$ltr = "$_";
$nowcount ++;
}
}
print qq~
注册用户大致列表:<br>$tempoutput
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF valign=middle align=left colspan=2>
<font face=宋体 color=#333333><BR>
<b>注意事项:</b><p>
如果您希望给您的用户一个自定义的头衔,只要编辑他(她)的资料。<br>
这个论坛利用储存的发贴数来确定他们的成员身份.<br>
如果您任命一个用户为版主,而他本身却没有自定义的头衔,那么就会自动添加一个版主头衔。
如果他已有自定义的等级,那么他的原头衔将被保留。<br>
版主只能够管理自己的论坛,但是他们也可以在其他论坛中使用 #Moderation 模式下的功能。<br>
请确保您所提升的版主是可靠的。<br>
版主也和坛主一样,不受灌水预防机制限制。<br>
只有坛主才能够进入管理中心。<br><br>
如果你禁止了一个用户,那么也同时禁止了用他们原名称、邮件、IP 地址重新注册的可能。
</td>
</tr>
~;
} # end routne
##################################################################################
######## Subroutes (Do member count)
sub docount {
$dirtoopen = "$ikondir" . "members";
opendir (DIR, "$dirtoopen");
@filedata = readdir(DIR);
closedir (DIR);
@countvar = grep(/cgi$/,@filedata);
$newtotalmembers = @countvar;
require "$ikondir" . "data/boardstats.cgi";
$filetomake = "$ikondir" . "data/boardstats.cgi";
open(FILE, ">$filetomake");
flock(FILE, 2) if ($OS_USED eq "Unix");
print FILE "\$lastregisteredmember = \"$lastregisteredmember\"\;\n";
print FILE "\$totalmembers = \"$newtotalmembers\"\;\n";
print FILE "\$totalthreads = \"$totalthreads\"\;\n";
print FILE "\$totalposts = \"$totalposts\"\;\n";
print FILE "\n1\;";
close (FILE);
print qq~
<tr>
<td bgcolor=#FFFFFF valign=middle align=center colspan=2>
<font face=宋体 color=#990000>
<b>计算用户总数</b><p>
<font color=#333333>当前共有 $newtotalmembers 个注册用户</font>
</td></tr>
~;
} # end routine
##################################################################################
######## Subroutes (Do member count)
sub viewletter {
$dirtoopen = "$ikondir" . "members";
opendir (DIR, "$dirtoopen");
@filedata = readdir(DIR);
closedir (DIR);
@sortedfile = sort(@filedata);
@sortedfile = grep(/cgi$/,@sortedfile);
@sortedfile = sort alphabetically(@sortedfile);
foreach (@sortedfile) {
if ($_ =~ /^\w/) {
$fr = substr($_, 0, 1);
$fr =~ tr/a-z/A-Z/;
}
else {
$fr =substr($_, 0, 2);
}
push(@letters,$fr);
}
@sortedletters = sort(@letters);
$nowcount =0;
foreach (@sortedletters) {
$tempoutput .= qq~<br>~ if ($nowcount == int($nowcount/20)*20);
unless ($_ eq "$ltr") {
$tempoutput .= qq~ <a href="$thisprog?action=viewletter&letter=$_">$_</a> ~;
$ltr = "$_";
$nowcount ++;
}
}
print qq~
<tr>
<td bgcolor=#EEEEEE valign=middle align=center colspan=2>
<font face=宋体 color=#990000><b>查看所有以 "$inletter" 开头的用户</b><p>
注册用户大致列表:$tempoutput<BR><BR>
</td>
</tr>
<tr>
<td bgcolor=#FFFFFF valign=middle align=center colspan=2>
</td>
</tr>
~;
foreach (@sortedfile) {
if ($_ =~ /^\w/) {
$frr = substr($_, 0, 1);
$frr =~ tr/a-z/A-Z/;
}
else {
$frr =substr($_, 0, 2);
}
if ($inletter eq $frr) {
$_ =~ s/\.cgi$//;
$member = $_;
&getmember("$member");
&showmember;
}
}
} # end route
##################################################################################
######## Subroutes (Show member)
sub showmember {
$joineddate = &longdate("$joineddate");
$cleanmember = $member;
$cleanmember =~ s/\_/ /g;
## Sort last post, and where
($postdate, $posturl, $posttopic) = split(/\%%%/,$lastpostdate);
if ($postdate ne "没有发表过") {
$postdate = &longdate("$postdate");
$lastpostdetails = qq~最后发表 <a href="$posturl">$posttopic</a> 在 $postdate~;
}
else {
$lastpostdetails = "没有发表过";
}
if ($membercode eq "banned") {
$unbanlink = qq~ | [<a href="$thisprog?action=unban&member=$member">取消禁止发言</a>]~;
}
print qq~
<tr>
<td bgcolor=#EEEEEE valign=middle colspan=2 align=center><font face=$font color=$fontcolormisc><b><font color=$fonthighlight>"$cleanmember"</b> 的详细资料 [ <a href="$thisprog?action=edit&member=$member">编辑</a> ] | [ <a href="$thisprog?action=deletemember&member=$member">删除</a> ]$unbanlink</font></td></tr>
<tr>
<td bgcolor=#FFFFFF valign=middle width=30%><font face=宋体 color=#333333><b>注册时间:</b></font></td>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333>$joineddate</font></td></tr>
<tr>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333><b>用户头衔:</b></font></td>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333>$membertitle</font></td></tr>
<tr>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333><b>最后发表:</b></font></td>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333>$lastpostdetails</font></td></tr>
<tr>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333><b>发表总数:</b></font></td>
<td bgcolor=#FFFFFF valign=middle><font face=宋体 color=#333333>$numberofposts</font> 篇</td></tr>
<tr>
<td bgcolor=#FFFFFF valign=middle> </td>
<td bgcolor=#FFFFFF valign=middle> </td></tr>
~;
$unbanlink = "";
} # end routine
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -