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

📄 manage.cgi

📁 这个是分屏聊天室源码。需要分屏的聊天室请参考
💻 CGI
📖 第 1 页 / 共 5 页
字号:
#####################################################
#恢复用户数据
#####################################################
sub restoredata {
	&check_password();
	if ($find_id == 0 ) { &error('你不是系统管理员'); }
	$k = 0;
	$deenfile = "$filehead$backfile";
	if (not -e $deenfile) { &error("用户备份文件不存在"); }
	@backuser     =&readtxtfile($backfile);
	foreach (@backuser) {
		&readuserdata($_);
		if ($mark eq "userdata")  {  
			$userfile = "$userhead$chkusername$userext";
			&writeuserdata;
			chmod(0666,$userfile);
			$k++;	}
	}
	&success("恢复 $k 个用户数据");
}
#########################################################################
# 列出要踢的对象
#########################################################################
sub list_user {
#检查用户是否有踢人的权限
&check_password();
if ( $userlevel < $level_killer ) { &error('没有踢人的权限'); }
 do "$path/write_online.cgi";
 &write_online("line");
 @online=&getlinedata;
 @online=sort @online;
 print <<_dnchat;
	<html><head><title>当前的所有人员列表,您想踢哪个?</title>
	<META HTTP-EQUIV=REFRESH CONTENT="60;URL=$cgiurl$manage?job=setkick$userinfo">
	<style type="text/css">
	<!--
		TABLE { font-family: 宋体; font-size: 14px }
	--></style>
	</head>
	<body bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color>
	<basefont size=2>
	<center><font size=5><b>所有人员列表,您想踢哪个?</b></font><br>
	<table border=1>
	<form method=POST action="$cgiurl$manage?job=add_kick_out$userinfo"  onsubmit="self.status='资料已送出'; return true;">
	<tr bgcolor=ffddff><td>选取</td><td>人员识别</td><td>权限等级</td><td>最后出现时间</td><td>管制状态</td></tr>

_dnchat
  foreach (@online) {
	 &readlinedata($_);
	 if (($chkusername ne $username) && ($chkusername ne $superuser) && ($chkuserlevel < $userlevel )) {
		if ($chkstat ne 'k') { print "<tr bgcolor=ffffdd><td><input type=radio name='kickuser' value='$chkuserip‖$chkusername‖$chkuserlevel‖$chkusersex‖'></td><td><font size=-1>$chkusersex</font> $chkusername($chkuserip)</td><td>$chkuserlevel级</td><td>$chktimen</td><td>正常</td></tr>\n"; }
		else { print "<tr bgcolor=ffffdd><td>----</td><td><font size=-1>$chkusersex</font> $chkusername($chkuserip)</td><td>$chkuserlevel级</td><td>$chktimen</td><td>Kicked</td></tr>\n"; }
	}
	 else { print "<tr bgcolor=ffffdd><td>----</td><td><font size=-1>$chkusersex</font> $chkusername($chkuserip)</td><td>$chkuserlevel级</td><td>$chktimen</td><td>正常</td></tr>\n"; }
  }
   print <<_dnchat;
	</table>
	<br><font color = blue>
	1.只踢指定的用户<br><br>
	2.只踢指定的IP地址<br><br>
	3.前两组IP数字相同的所有用户<br><font color=red>(尽量不用此功能)</font></font>
	<br><br>
	选择踢人方式<SELECT NAME="checkip">
	<option value='1' selected  > 1 </option>
	<option value='2'  > 2 </option>
	<option value='3'  > 3 </option>
	</SELECT>
	<br><br>
	<select name="kickway">
		<option value="1" selected>Level1 - 自动跳离视窗
		<option value="2">Level2 - 禁止发言
		<option value="3">Level3 - 浏览器当机(JS)
		<option value="4">Level4 - 视窗炸弹(JS)
	</select><br>
	<br>
	<input type=submit value="执  行">       <input type=reset value="清  除">
	</form></center></body></html>
_dnchat
}
#########################################################################
# 将选择的人加入被踢名单
#########################################################################
sub add_kick_out {
	  &check_password();
      if ( $userlevel < $level_killer ) { &error('你的权限不够'); }
	  $username   = &get_var('username'    ,'\n|"|<|>|\&|;| |\?|‖') ;
	  $kickuser   = &get_var('kickuser'    ,'\n') ;
	  $kickway    = &get_var('kickway'        ,'\n|‖');
	  $checkip    = &get_var('checkip'        ,'\n|‖');
	  
	  ($chkuserip,$chkusername,$chkuserlevel,$chkusersex)=split(/‖/,$kickuser);
	   &error("呵呵,你不能踢$chkusername") if ($userlevel <= $chkuserlevel) ; 
	  $this_call_time = $secn;
      $message='killdata'."‖".$kickuser.$kickway."‖".$checkip."‖".$this_call_time."‖".$username."‖".'end'."‖";
      open (KICKOUT,">>$filehead$killfile") || die $!;
      print KICKOUT  "$message\n";
      close(KICKOUT);
	  
	  do "$path/write_message.cgi" ;
	  &write_message("kickout"); 
	  do "$path/write_online.cgi";
	  &write_online("kill","$chkusername","$kickway");
	  &success("$chkusername 被踢出聊天室");
 }
###################################
#查看踢人记录
##################################
sub killrec {
&check_password();
print <<eof;
	<html><head><title>踢人记录</title>
	<style type="text/css"> <!--  TABLE { font-family: 宋体; font-size: 14px } 	--></style>
	</head>
	<body bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color>
	<basefont size=2>
	<center><font size=5><b>踢人记录</b></font><br>
	<table border=1>
	<form method=POST action="$cgiurl$manage?job=delekillip$userinfo"  onsubmit="self.status='资料已送出'; return true;">
	<tr><td bgcolor='#FFCC66' align=center  width=10%>选择</td>
	<td bgcolor='#FFCC66' align=center  width=18%>IP地址</td>
    <td bgcolor='#FFCC66' align=center  width=10%>用户名</td>
    <td bgcolor='#FFCC66' align=center  width=6%>级别</td>
	<td bgcolor='#FFCC66' align=center  width=5%>类型</td>
	<td bgcolor='#FFCC66' align=center  width=30%>时间</td>
	<td bgcolor='#FFCC66' align=center  width=10%>杀手</td>
	</tr>
eof
	@bekill=&readtxtfile($killfile,2);
	foreach (@bekill) {
		($mark,$bekill_host,$bekill_name,$bekill_level,$bekill_sex,$bekill_type,$kill_ip,$kill_time,$killer,$markend)=split(/‖/,$_);
		if (($mark eq "killdata") && ($markend eq "end")) {
			($dnsecn,$dnminn,$dnhourn,$dndayn,$dnmonn,$dnyearn,$dnweekn,$dnyeardayn,$dnisdst) = localtime($kill_time+(3600*$time_hour)+($time_min*60));
			$dnmonn=$dnmonn+1;
			$dnyearn = $dnyearn + 1900;
			if ($dnmonn<10)  {$monn="0$dnmonn";}
			if ($dndayn<10)  {$dayn="0$dndayn";}
			if ($dnhourn<10) {$hourn="0$dnhourn";}
			if ($dnminn<10)  {$minn="0$dnminn";}
			if ($dnsecn<10)  {$secn="0$dnsecn";}
			$dndaten="$dnyearn/$dnmonn/$dndayn";
			$dntimen="$dnhourn\:$dnminn\:$dnsecn";
			$dnkill_time = $dndaten." ".$dntimen;
			$killuser = $bekill_host."‖".$bekill_name."‖".$kill_time."‖".$killer."‖";
			print "<tr><td bgcolor='#FFCC66' align=center  width=10%><font size=-1><input type=radio name=killuser value='$killuser'>删除</font></td>\n";
			print "<td bgcolor='#FFCC66' align=center  width=18%>$bekill_host</td>\n";
		    print "<td bgcolor='#FFCC66' align=center  width=10%>$bekill_name</td>\n";
			print "<td bgcolor='#FFCC66' align=center  width=6%>$bekill_level</td>\n";
		    print "<td bgcolor='#FFCC66' align=center  width=5%>$bekill_type</td>\n";
			print "<td bgcolor='#FFCC66' align=center  width=30%>$dnkill_time</td>\n";
			print "<td bgcolor='#FFCC66' align=center  width=10%>$killer</td>\n";
			print "</tr>\n";
		}
	}
	print <<eof;
	</table><br><br>
	<input type=submit value="执  行">  <input type=reset value="清  除">
	</form>	</center></BODY></HTML>
eof
}

####################################
#删除踢人记录
####################################
sub delekillip {
&check_password();
	if ( $userlevel < $level_killer ) { &error("$username 你的权限不够"); }
	$killuser = &get_var('killuser'            ,'\n');
	if ($killuser eq "") { &error("请选择删除的记录"); 	}
	($chkkill_host,$chkkill_name,$chkkill_time,$chkkiller)=split(/‖/,$killuser);
	
	@bekill=&readtxtfile($killfile,2);
	open(BEKILLDATA,">$filehead$killfile") || die $!;
	foreach (@bekill) {
		($mark,$bekill_host,$bekill_name,$bekill_level,$bekill_sex,$bekill_type,$kill_ip,$kill_time,$killer,$markend)=split(/‖/,$_);
		if (($mark eq "killdata") && ($markend eq "end")) {
			if (($chkkill_host eq $bekill_host) && ($chkkill_name eq $bekill_name) && ($chkkill_time eq $kill_time) && ($chkkiller eq $killer)) {
				next; }
			else {
				print BEKILLDATA "$mark‖$bekill_host‖$bekill_name‖$bekill_level‖$bekill_sex‖$bekill_type‖$kill_ip‖$kill_time‖$killer‖$markend‖\n";}
		}
	}
	close(BEKILLDATA);
	&success('删除成功');
}
######################################
#过滤用户功能
######################################
sub filter {
do "$path/write_online.cgi";
$filtername = &get_var('filtername'     ,'\n|‖');  #取过滤用户的名字
&dn_prompt("错误 --- 过滤用户不能为空") if ($filtername eq "");
&dn_prompt("错误 --- 不能将大家,自己,聊天精灵进行过滤") if (($filtername eq '大家')||($filtername eq $username)||($filtername eq $bchatgenius)||($filtername eq $gchatgenius));
$filternametemp="§$filtername§";
&dn_prompt("错误 --- $filtername已经在你的过滤名单") if ($chkfilterlist=~ /$filternametemp/);
if ($chkfilterlist eq "") { $filterlist = "§$filtername§";}
else { $filterlist  = $chkfilterlist. "$filtername§"; }
&write_online("filter");
&dn_prompt(" $filtername 已经加入了你的过滤名单。你的过滤名单中有:$filterlist");
}
######################################
#解除过滤用户功能
######################################
sub unfilter {
do "$path/write_online.cgi";
$filtername = &get_var('filtername'     ,'\n|‖');  #取过滤用户的名字
&dn_prompt("错误 --- 解除过滤用户不能为空") if ($filtername eq "");
$filternametemp="§$filtername§";
&dn_prompt("错误 --- $filtername 不在你的过滤名单") if (not ($chkfilterlist=~ /$filternametemp/));
$filterlist = $chkfilterlist;
$filterlist =~ s/$filternametemp//g;
if ($filterlist  ne "") {
	if (substr ($filterlist, 0, 2) ne "§") { $filterlist ="§".$filterlist; }
	if (substr ($filterlist, -2, 2) ne "§") { $filterlist .="§"; }
}
&write_online("filter");
&dn_prompt(" $filtername 已经从你的过滤名单中解除。你的过滤名单中有:$filterlist");
}
######################################
#显示过滤用户功能
######################################
sub dispfilter {
do "$path/write_online.cgi";
if ($chkfilterlist ne "") { &dn_prompt("你的过滤名单中有:$chkfilterlist"); }
else { &dn_prompt("你的过滤名单中没有用户"); }
}
##############################################
#超级用户的管理页面
##############################################
sub super_html {
#检查用户是否有超级用户的权限
&check_password();
if ($find_id == 0 ) { &error('你不是系统管理员'); }
&getsysnum;
$level_html = "<select name='setlevel'><option value='1' selected> 1 </option>";
for ($i = 2; $i<$maxlevel  ; $i++) { $level_html .="<option value='$i' > $i </option>"; }
$level_html .= "</select>";
print <<eof;
<html><head><title>超级用户管理</title>	</head>
<body bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color>
<br><br><br><div align="center">
<table width="540" border="1" bordercolorlight="#CCFFFF" bordercolordark="#000000" bordercolor="#33CCFF" align="center" bgcolor="#99CCFF" height="150">
 <tr><td colspan="2" bgcolor="#D6D5CD" height="14"><p align="right"><font color="#000000">$roomtitle</font></td></tr>
 <tr><td colspan="2" bgcolor="#FDF0EA" height="14"><p align="center"><font size = 6 color="#0000FF">超级管理</font></td></tr>
<tr><td bgcolor="#EFEDEF" width="270" height="12">
<br><form method=POST action="$cgiurl$manage?job=csuperpass$userinfo"><font color="#0000FF"><SPAN style="FONT-SIZE: 9pt">&nbsp;&nbsp;大网管<font color=red><u>$superuser</u></font>密码</span></font>&nbsp;<input type="text"  name="usuperpass" size="6" maxsize = "20">&nbsp;<INPUT style="BACKGROUND-COLOR: '#DDDDFF'; COLOR: 000000; BORDER-BOTTOM: 1px double; BORDER-LEFT: 1px double; BORDER-RIGHT: 1px double; BORDER-TOP: 1px double; COLOR: 000000; FONT-FAMILY: 宋体, Arial; FONT-SIZE: 9pt" type=submit value=" 修 改 "></form>
</td><td bgcolor="#EFEDEF" width="270" height="12">
<br><form method=POST action="$cgiurl$manage?job=cleanuserlist$userinfo"><font color="#0000FF"><SPAN style="FONT-SIZE: 9pt">&nbsp;&nbsp;删除$user_kill_day天未访问的用户</span></font>    <INPUT style="BACKGROUND-COLOR: '#DDDDFF'; COLOR: 000000; BORDER-BOTTOM: 1px double; BORDER-LEFT: 1px double; BORDER-RIGHT: 1px double; BORDER-TOP: 1px double; COLOR: 000000; FONT-FAMILY: 宋体, Arial; FONT-SIZE: 9pt" type=submit value=" 确 定 "></form></td>
</td></tr>
<tr><td bgcolor="#EFEDEF" width="270" height="12">
<br><form method=POST action="$cgiurl$manage?job=setpoint$userinfo"><font color="#0000FF"><SPAN style="FONT-SIZE: 9pt">&nbsp;&nbsp;所有用户经验置1</span></font>    <INPUT style="BACKGROUND-COLOR: '#DDDDFF'; COLOR: 000000; BORDER-BOTTOM: 1px double; BORDER-LEFT: 1px double; BORDER-RIGHT: 1px double; BORDER-TOP: 1px double; COLOR: 000000; FONT-FAMILY: 宋体, Arial; FONT-SIZE: 9pt" type=submit value=" 确 定 "></form>
</td><td bgcolor="#EFEDEF" width="270" height="12">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -