📄 memberlist.cgi
字号:
#!/usr/bin/perl################################################### MEMBERLISTE# v2.4b# by skeptiker####################################################use CGI::Carp "fatalsToBrowser"; # Output errors to browseruse CGI qw(:standard); # Saves loads of workeval {($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1");($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1");require "ikon.lib";require "data/boardinfo.cgi";require "data/boardstats.cgi";require "data/progs.cgi";require "data/styles.cgi";require "data/membertitles.cgi";};if ($@) { print header(-charset=>"gb2312"); print start_html(-title=>"ib2000 出错!"); print "不能够找到文件:$@\n如果您使用的是 Windows 类操作系统,请在每一个程序中更改 require 的设置,填入绝对路径!"; print end_html; exit;}$|++; # Unbuffer the output######### Choose the number of members show in TopTen and the startparameter$backgroundcolor = "005984";$topanzahl = 10; #显示发贴前多少名?显示最新多少个加入的用户?$startseite = "1"; #默认排序: 1->发贴数, 2->前N名, 3->用户名, 4->注册日期######### read and save memberfiles ####################$memberproseite = $maxthreads; #每页显示用户数if (! $inmembername) { $inmembername = cookie("amembernamecookie"); }if (! $inpassword) { $inpassword = cookie("apasswordcookie"); }if ($inmembername eq "") { $inmembername = "客人";}else { &getmemberstime("$inmembername");}&title;&whosonline("$inmembername|用户列表|none|查看用户列表|");chdir("$ikondir" . "members") || die "文件没有找到!";@cgi = glob("*.cgi");@cgi = grep(/\.cgi$/, @cgi);$totlemembertemp=@cgi;foreach $member (@cgi){ $member1 = ucfirst($member); $filetoopen = ("$ikondir" . "members/$member") || ("$ikondir" . "members/$member1"); open(FILE, "$filetoopen" ); $memberdaten = <FILE>; close(FILE); @memberdaten = split(/\|/,$memberdaten); $name = $memberdaten[0]; $anzahl = $memberdaten[4]; $date1 = $memberdaten[13] + ($memberdaten[16] * 3600) + ($timezone * 3600); $postundmember {"$name"} = $anzahl; $datumundmember {"$name"} = $date1;@sortiert = reverse sort { $postundmember{$a} <=> $postundmember{$b} } keys(%postundmember);@sortiert1 = sort { $datumundmember{$a} <=> $datumundmember{$b} } keys(%datumundmember);@sortiert2 = reverse(@sortiert1);}######### Header ######################$output .= qq~ <table cellpadding=0 cellspacing=0 border=0 width=$tablewidth align=center> <tr> <td width=30% rowspan=2 valign=top><img src="$imagesurl/images/$boardlogo" border=0></td> <td valign=middle align=left><font face="$font" color=$fontcolormisc> <img src="$imagesurl/images/closedfold.gif" border=0> <a href="$forumsummaryprog">$boardname</a><br> <img src="$imagesurl/images/bar.gif" border=0 width=15 height=15><img src="$imagesurl/images/openfold.gif" border=0> 用户列表 </td> <tr> <td valign=bottom align=right> $helpurl</td> </tr> </table><br>~;$output .= qq~<html><body bgcolor=$backgroundcolor text=$forumfontcolor link=$forumfontcolor vlink=$forumfontcolor alink=$forumfontcolor>\n<!--Javascript--> <script type="text/javascript"> function openScript(url, width, height) { var Win = window.open(url,"openScript",'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=yes,status=yes' ); }</script>~;######### Ende Header ############################ Sub Namensortiert ###################sub Namensortiert{$query = new CGI;$inpage = $query -> param ("page");if ($inpage eq "") { $inpage = 1; }$a = 3;@memberarray = @cgi;&splitting;$Listenname = "以用户名排序";&Tabellenanfang;foreach $member (@cgi[$startmember ... $endmember]){$member1 = ucfirst($member);if (-e "$member" || -e "member1"){ $filetoopen = ("$ikondir" . "members/$member") || ("$ikondir" . "members/$member1"); open(FILE, "$filetoopen" ); $memberdaten = <FILE>; close(FILE); &Listing;}}$output .= qq~</table>~;}########### Sub Namensortiert ############################## Sub Postsortiert ###################sub Postsortiert{$query = new CGI;$inpage = $query -> param ("page");if ($inpage eq ""){$inpage = 1;}$a = 1;$Listenname = "以发贴总数排序";&Tabellenanfang;foreach $cginame (@sortiert){$cginame .='.cgi';}@memberarray = @sortiert;&splitting;foreach $member (@sortiert[$startmember ... $endmember]){ $member =~s/ /_/g; $member1 = ucfirst($member);if (-e "$member" || -e "member1"){ $filetoopen = ("$ikondir" . "members/$member") || ("$ikondir" . "members/$member1"); open(FILE, "$filetoopen" ); $memberdaten = <FILE>; close(FILE); &Listing;}}$output .= qq~</table>~;}########## Ende Postsortiert ########################### Sub TopTen #################sub Topten{$Listenname = "发贴总数前 $topanzahl 名";&Tabellenanfang;foreach $cginame (@sortiert){$cginame .='.cgi';}@sortiert = splice(@sortiert,0,$topanzahl);foreach $member (@sortiert){ $member =~s/ /_/g; $member1 = ucfirst($member); $filetoopen = ("$ikondir" . "members/$member") || ("$ikondir" . "members/$member1"); open(FILE, "$filetoopen" ); $memberdaten = <FILE>; close(FILE); &Listing;}$output .= qq~</table>~;}######### Ende Sub Topten ##################### Sub Datumsortiert ############sub datum{$query = new CGI;$inpage = $query -> param ("page");if ($inpage eq ""){$inpage = 1;}$a = 4;$Listenname = "以注册时间排序";&Tabellenanfang;foreach $cginame (@sortiert1){$cginame .='.cgi';}@memberarray = @sortiert1;&splitting;foreach $member (@sortiert1[$startmember ... $endmember]){ $member =~s/ /_/g; $member1 = ucfirst($member);if (-e "$member" || -e "member1"){ $filetoopen = ("$ikondir" . "members/$member") || ("$ikondir" . "members/$member1"); open(FILE, "$filetoopen" ); $memberdaten = <FILE>; close(FILE); &Listing;}}$output .= qq~</table>~;}########## Ende Datum ################### Sub Datumsortiert ############sub redatum{$Listenname = "最新 $topanzahl 名注册用户";&Tabellenanfang;foreach $cginame (@sortiert2){$cginame .='.cgi';}@memberarray = @sortiert2;@sortiert2 = splice(@sortiert2,0,$topanzahl);foreach $member (@sortiert2){ $member =~s/ /_/g; $member1 = ucfirst($member);if (-e "$member" || -e "member1"){ $filetoopen = ("$ikondir" . "members/$member") || ("$ikondir" . "members/$member1"); open(FILE, "$filetoopen" ); $memberdaten = <FILE>; close(FILE); &Listing;}}$output .= qq~</table>~;}########## Ende Datum #################### Sub Tabellenanfang ##########sub Tabellenanfang{ $totalpostandthreads = $totalposts + $totalthreads; $output .= qq~<center> <table width=$tablewidth bgcolor=$backgroundcolor cellspacing=0 border=0 bordercolor=$tablebordercolor> <tr> <td> <table cellpadding=6 cellspacing=1 border=0 width=100%> <tr bgcolor=$titleback><td colspan=5 valign=top> >> <B>$Listenname</B> <<<BR><BR> <font face=$font> 总注册用户数: $totlemembertemp 人 发贴总数: $totalpostandthreads 篇</font></td> <td colspan=5 align=right><form method=POST action=memberlist.cgi> <select name=a> <option value=2>发贴总数前 $topanzahl 名</option> <option value=5>最新 $topanzahl 名注册用户</option> <option value=3>用户名</option> <option value=1>发贴总数</option> <option value=4>注册时间</opzion> </select> <input type=submit value="排 序"><br></td></form></tr><tr bgcolor=$titlecolor><td align=center><font face=$font><b>用户名</b></td><td align=center><font face=$font><b>Email</b></td><td align=center><font face=$font><b>ICQ</b></td><td align=center><font face=$font><b>OICQ</b></td><td align=center><font face=$font><b>主页</b></td><td align=center><font face=$font><b>短消息</td><td align=center><font face=$font><b>最后发贴</td><td align=center><font face=$font><b>注册时间</b></td><td align=center><font face=$font><b>等级状态</b></td><td align=center><font face=$font><b>发贴总数</b></td></font></tr>~;}########## Ende Tabellenanfang #########read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});$query = new CGI;$a = $query -> param ("a");if ($a eq '' && $buffer eq ''){$buffer = "a=$startseite";}else{($buffer = "$buffer") || ($buffer = "a=$a");}if ($buffer eq 'a=1') {&Postsortiert}elsif ($buffer eq 'a=2') {&Topten}elsif ($buffer eq 'a=3') {&Namensortiert}elsif ($buffer eq 'a=4') {&datum}elsif ($buffer eq 'a=5') {&redatum}########## Sub Listing #########sub Listing{@memberdaten = split(/\|/,$memberdaten);$name = $memberdaten[0];$status = $memberdaten[2];$anzahl = $memberdaten[4];$email = $memberdaten[5];$home = $memberdaten[8];$aolname = $memberdaten[9];$icq = $memberdaten[10];$date = $memberdaten[13] + ($memberdaten[16] * 3600) + ($timezone * 3600);$rang = $memberdaten[3];$emailstatus = $memberdaten[6];if ($name) {($postdate, $posturl, $posttopic) = split(/\%%%/, $memberdaten[14]);if (($postdate ne "没有发表过")&&($postdate ne "")){ $postdate = $postdate + ($userdetail[16] * 3600) + ($timezone * 3600); $lastpostdate = &longdate ("$postdate"); $lastposttime = &longdate ("$postdate"); if ($badwords) { @pairs = split(/\&/,$badwords); foreach (@pairs) { ($bad, $good) = split(/=/,$_); chop $good; $posttopic=~ s/$bad/$good/isg; } } $lastpostdetails = qq~<a href="$posturl"><img border=0 src=$imagesurl/images/openfold.gif alt=$posttopic></a>~;}else{$lastpostdetails = qq~没有~;}$date = &longdate($date + ($memberdaten[16]*3600) + ($timezone*3600));$postundmember {"$name"} = $anzahl;# if ($anzahl == '0'){$date = 'N/A';}if (($icq) && ($icq =~ /[0-9]/)){ $icqgraphic = qq~<a href="javascript:openScript('$miscprog?action=icq&UIN=$icq',450,300)"><img src="http://wwp.icq.com/scripts/online.dll?icq=$icq&img=5" border=0 width=16 height=16></a>~; }else{$icqgraphic = '没有';}if (($home eq "http://") || ($home eq "")){ $home = '没有'; }else{ $home = "<a href=$home target=_blank><img border=0 src=$imagesurl/images/homepage.gif></a>" }if ($aolname) { $aolgraphic = qq~<a href=http://search.tencent.com/cgi-bin/friend/user_show_info?ln=$aolname target=_blank><img src="http://icon.tencent.com/$aolname/s/00/00/" alt="查看 OICQ:$aolname 的资料" border=0 width=16 height=16></a>~; }else{$aolgraphic = "没有";}if ($email eq "" || $emailstatus eq "no"){ $email = '没有' if ($email eq ""); $email = '保密' if ($emailstatus eq "no");}else {$email = "<a href=mailto:$email><img border=0 src=$imagesurl/images/email.gif></a>" } if ($anzahl >= $mpostmark11) { $mtitle = $mtitle11; $membergraphic = $mgraphic11; } elsif ($anzahl >= $mpostmark10) { $mtitle = $mtitle10; $membergraphic = $mgraphic10; } elsif ($anzahl >= $mpostmark9) { $mtitle = $mtitle9; $membergraphic = $mgraphic9; } elsif ($anzahl >= $mpostmark8) { $mtitle = $mtitle8; $membergraphic = $mgraphic8; } elsif ($anzahl >= $mpostmark7) { $mtitle = $mtitle7; $membergraphic = $mgraphic7; } elsif ($anzahl >= $mpostmark6) { $mtitle = $mtitle6; $membergraphic = $mgraphic6; } elsif ($anzahl >= $mpostmark5) { $mtitle = $mtitle5; $membergraphic = $mgraphic5; } elsif ($anzahl >= $mpostmark4) { $mtitle = $mtitle4; $membergraphic = $mgraphic4; } elsif ($anzahl >= $mpostmark3) { $mtitle = $mtitle3; $membergraphic = $mgraphic3; } elsif ($anzahl >= $mpostmark2) { $mtitle = $mtitle2; $membergraphic = $mgraphic2; } elsif ($anzahl >= $mpostmark1) { $mtitle = $mtitle1; $membergraphic = $mgraphic1; } else { $mtitle = $mtitle0; $membergraphic = ""; } #显示默认等级 if($rang eq "ad") { $mtitle = $adtitle if ($adtitle ne ""); $membergraphic = "$admingraphic" if ($admingraphic ne ""); } if ($rang eq "mo") { $mtitle = $motitle if ($motitle ne ""); $membergraphic = "$modgraphic" if ($modgraphic ne ""); } if ($membergraphic) { $membergraphic = "<img src=\"$imagesurl/images/$membergraphic\" border=\"0\">"; }$memberfilename = $name;$memberfilename =~ y/ /_/;$message = "<a href=javascript:openScript('messanger.cgi?action=new&touser=$memberfilename',600,400)><img src=$imagesurl/images/message.gif border=0></a>";$output .= qq~<tr bgcolor=$forumcolortwo><td><font face=$font> <a href="$profileprog?action=show&member=$memberfilename">$name</a></td><td align=center><font face=$font>$email</td><td align=center><font face=$font>$icqgraphic</td><td align=center><font face=$font>$aolgraphic</td><td align=center><font face=$font>$home</td><td align=center>$message</td><td align=center><font face=$font>$lastpostdetails</td><td align=center><font face=$font>$date</td><td align=center><font face=$font>$mtitle<br>$membergraphic</td><td align=center><font face=$font>$anzahl</td></tr>~;}}########## Ende Listing ####################### Sub Splitting #############sub splitting{$totalpages = @memberarray / $memberproseite;($pagenumbers, $decimal) = split (/\./, $totalpages);if ($decimal > 0){$pagenumbers++;}$page = 1;$pagedigit = 0;$pagelinks = qq~跳转: ~;while ($pagenumbers > $pagedigit){$pagedigit++;if ($inpage ne $page){$pagelinks .= qq~[<a href="$boardurl/memberlist.cgi?a=$a&page=$page">$pagedigit</a>] ~; }else{$pagelinks .= qq~[<B>$pagedigit</B>] ~;}$page++; } # end whileif ($totalpages <= 1){$pagelinks = qq~~;}$startmember = ($inpage - 1) * $memberproseite;$endmember = $startmember + $memberproseite - 1;if ($endmember > (@memberarray-1)){$endtopic = @memberarray - 1;}}######### Ende splitting ################$output .= qq~</td></tr></table><BR>$pagelinks</center></body></html>~;print header(-charset=>"gb2312");&output( -Title => "$boardname - 用户列表", -ToPrint => $output, -Version => $versionnumber );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -