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

📄 admin1.php3

📁 使用PHP编程的聊天室
💻 PHP3
字号:
<?php
// This sheet is diplayed when the admin wants to modify perms for registered users
// or remove the profiles of some of them

// The admin has required an action to be done
if (isset($FORM_SEND) && $FORM_SEND == 1)
{
	// A registred user have to be deleted or banished?
	$DELETE_MODE = ($submit_type == A_SHEET1_6)? 1:0;
	$BANISH_MODE = ($submit_type == A_SHEET1_9)? 1:0;

	// Get the list of the users
	$DbLink->query("SELECT username,perms FROM ".C_REG_TBL);
	$users = Array();
	while (list($username, $perms) = $DbLink->next_record())
	{
		if ($perms == "admin") continue;
		$users[] = $username;
	}
	$DbLink->clean_results();

	for (reset($users); $username=current($users); next($users))
	{
		$usr = urlencode($username);
		$VarName = "user_".$usr;
		if (!isset($$VarName)) continue;
		// Delete a profile after having sent a message to the user if he is connected
		if ($DELETE_MODE)
		{
			$VarName = "selected_".$usr;
			if (isset($$VarName))
			{
				$uuu = addslashes($username);
				$DbLink->query("DELETE FROM ".C_REG_TBL." WHERE username='$uuu'");
				$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
				$in_room = ($DbLink->num_rows() != 0);
				if ($in_room)
				{
					list($room) = $DbLink->next_record();
					$DbLink->clean_results();
					$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
					list($type) = $DbLink->next_record();
					$DbLink->clean_results();
					$DbLink->query("UPDATE ".C_USR_TBL." SET status='u' WHERE username='$uuu'");
					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS delreg', '', ".time().", '$uuu', 'L_ADM_2')");
				};
				// Optimize the registered users table when a MySQL DB is used
				if (C_DB_TYPE == "mysql") $DbLink->optimize(C_REG_TBL);
			};
		}
		// Banish an user
		elseif ($BANISH_MODE)
		{
			$VarName = "selected_".$usr;
			if (isset($$VarName))
			{
				$uuu = addslashes($username);
				$DbLink->query("SELECT latin1,ip FROM ".C_REG_TBL." WHERE username='$uuu' LIMIT 1");
				list($Latin1, $IP) = $DbLink->next_record();
				$DbLink->clean_results();
				$DbLink->query("SELECT count(*) FROM ".C_BAN_TBL." WHERE username='$uuu' LIMIT 1");
				list($Nb) = $DbLink->next_record();
				$DbLink->clean_results();
				if ($Nb == "0")
				{
					$Until = time() + round(C_BANISH * 60 * 60 * 24);
					if ($Until > 99999999999) $Until = "99999999999";
					$DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$uuu','$Latin1','$IP','**ToDefine**','$Until')");
				};
				$Message = A_SHEET1_10;
			};
		}
		// Modify perms for a registered user and send him a message if he is connected
		else
		{
			$VarName = "perms_".$usr; $ppp = $$VarName;
			$VarName = "rooms_".$usr; $rrr = $$VarName;
			$VarName = "old_perms_".$usr; $old_ppp = $$VarName;
			$VarName = "old_rooms_".$usr; $old_rrr = $$VarName;
			if ($ppp == $old_ppp && $rrr == $old_rrr) continue;
			$uuu = addslashes($username);
			$DbLink->query("UPDATE ".C_REG_TBL." SET perms='$ppp', rooms='$rrr' WHERE username='$uuu'");
			$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
			$in_room = ($DbLink->num_rows() != 0);
			if ($in_room)
			{
				list($room) = $DbLink->next_record();
				$DbLink->clean_results();

				// Find the changes in moderated rooms list
				$old_rooms_Tab = explode(",",$old_rrr);
				$new_rooms_Tab = explode(",",$rrr);
				$diff_rooms_Tab = array();

				for (reset($old_rooms_Tab); $room2Check=current($old_rooms_Tab); next($old_rooms_Tab))
				{
					if ($room2Check == "") continue;
					if (!room_in($room2Check, $rrr)) $diff_rooms_Tab[] = $room2Check;
				};
				for (reset($new_rooms_Tab); $room2Check=current($new_rooms_Tab); next($new_rooms_Tab))
				{
					if ($room2Check == "") continue;
					if (!room_in($room2Check, $old_rrr)) $diff_rooms_Tab[] = $room2Check;
				};
				unset($old_rooms_Tab);
				unset($new_rooms_Tab);

				if (count($diff_rooms_Tab) > 0) $diff_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$diff_rooms_Tab)));
				unset($diff_rooms_Tab);

				// Send a message to the user if he chats into one of the 'diff' rooms
				if (room_in(addslashes($room), $diff_rooms))
				{
					if (room_in(addslashes($room), $rrr))	// user becomes moderator for the room he chats into
					{
						$status = "m";
						$message = "sprintf(L_MODERATOR, \"".addslashes(htmlspecialchars(stripslashes($uuu)))."\")";
					}
					else	// user becomes user for the room he chats into
					{
						$status = "r";
						$message = "sprintf(L_ADM_1, \"".addslashes(htmlspecialchars(stripslashes($uuu)))."\")";
					};
					$DbLink->query("UPDATE ".C_USR_TBL." SET status='$status' WHERE username='$uuu'");
					$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
					list($type) = $DbLink->next_record();
					$DbLink->clean_results();
					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS promote', '', ".time().", '', '$message')");
				};
			}
			else
			{
				$DbLink->clean_results();
			};
		};
	};
};

// Remove profiles of users that have not been chatting for a time > C_REG_DEL
if (!isset($FORM_SEND) && C_REG_DEL != 0) $DbLink->query("DELETE FROM ".C_REG_TBL." WHERE reg_time < ".(time() - C_REG_DEL * 60 * 60 * 24)." AND perms != 'admin'");

// Remove moderator status if no room is specified
$DbLink->query("UPDATE ".C_REG_TBL." SET perms='user' WHERE perms='moderator' AND rooms=''");
?>

<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
<!--
// Ensure an user for who a room name is entered have moderator status
function reset_perms(user)
{
	if (document.all) {
		var1 = document.all["perms_" + user];
		var2 = document.all["rooms_" + user];
	} else if (document.Form1.elements) {
		var1 = document.Form1.elements["perms_" + user];
		var2 = document.Form1.elements["rooms_" + user];
	} else {
		return;
	}
	i = (var2.value == '' ? 0:1);
	var1.options[i].selected = true;
}
// -->
</SCRIPT>

<?php
if (isset($Message) && $Message != "") echo("<SPAN CLASS=\"error\">$Message</SPAN><BR><BR>\n");
?>

<TABLE BORDER=0 CELLPADDING=3 CLASS=table>

<?php
// Ensure at least one registered user exist (exept the administrator) before displaying the modify status
$DbLink->query("SELECT COUNT(*) FROM ".C_REG_TBL." WHERE perms != 'admin' LIMIT 1");
list($count_RegUsers) = $DbLink->next_record();
$DbLink->clean_results();
if ($count_RegUsers != 0)
{
?>
<!-- Registered users form -->
<TR>
	<TD ALIGN=CENTER>
		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form1">
		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
		<INPUT TYPE=hidden NAME="user" value="<?php echo(htmlspecialchars(stripslashes($user))); ?>">
		<INPUT TYPE=hidden NAME="pswd" value="<?php echo($pswd); ?>">
		<INPUT TYPE=hidden NAME="sortBy" value="<?php echo($sortBy); ?>">
		<INPUT TYPE=hidden NAME="sortOrder" value="<?php echo($sortOrder); ?>">
		<INPUT TYPE=hidden NAME="FORM_SEND" value="1">
		<TABLE BORDER=0 CELLSPACING=5 WIDTH=100%>
		<TR>
			<TH COLSPAN=6 CLASS=tabtitle><?php echo(A_SHEET1_1); ?></TH>
		</TR>
		<TR>
			<TD VALIGN=CENTER ALIGN=CENTER>
				&nbsp;
			</TD>
			<TD VALIGN=CENTER ALIGN=LEFT>
				<A HREF="<?php echo("$From?$URLQueryBody_Links&sortBy=username"); if ($sortBy == "username") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_2); ?></A>
			</TD>
			<TD VALIGN=CENTER ALIGN=CENTER>
				<A HREF="<?php echo("$From?$URLQueryBody_Links&sortBy=reg_time"); if ($sortBy == "reg_time") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_11); ?></A>
			</TD>
			<TD VALIGN=CENTER ALIGN=CENTER>
				<A HREF="<?php echo("$From?$URLQueryBody_Links&sortBy=ip"); if ($sortBy == "ip") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET2_2); ?></A>
			</TD>
			<TD VALIGN=CENTER ALIGN=CENTER>
				<A HREF="<?php echo("$From?$URLQueryBody_Links&sortBy=perms"); if ($sortBy == "perms") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_3); ?></A>
			</TD>
			<TD VALIGN=CENTER ALIGN=CENTER>
				<?echo(A_SHEET1_4)?> (*)
			</TD>
		</TR>

		<?php
		function special_char($str,$lang)
		{
			return ($lang ? htmlentities($str) : htmlspecialchars($str));
		}

		$DbLink->query("SELECT username,latin1,perms,rooms,reg_time,ip FROM ".C_REG_TBL." ORDER BY $sortBy $sortOrder");
		while (list($username,$Latin1,$perms,$rooms,$lastTime,$IP) = $DbLink->next_record())
		{
			if ($perms == "admin") continue;
			?>
			<INPUT TYPE="hidden" NAME="user_<?echo(urlencode($username))?>" VALUE="1">
			<TR>
				<TD VALIGN=CENTER ALIGN=CENTER>
					<INPUT type=checkbox name="selected_<?echo(urlencode($username))?>" value="1">
				</TD>
				<TD VALIGN=CENTER ALIGN=LEFT>
					<?echo(special_char($username,$Latin1));?>
				</TD>
				<TD VALIGN=CENTER ALIGN=LEFT>
					<?echo(date("M j, Y - h:i a",$lastTime + C_TMZ_OFFSET*60*60));?>
				</TD>
				<TD VALIGN=CENTER ALIGN=CENTER>
					<?php echo($IP); ?>
				</TD>
				<TD VALIGN=CENTER ALIGN=CENTER>
					<SELECT name="perms_<?echo(urlencode($username))?>">
						<OPTION value="user"<?if($perms=="user") echo(" SELECTED")?>><?echo(A_USER)?></OPTION>
						<OPTION value="moderator"<?if($perms=="moderator") echo(" SELECTED")?>><?echo(A_MODER)?></OPTION>
					</SELECT>
					<INPUT type="hidden" name="old_perms_<?echo(urlencode($username))?>" value="<?echo($perms)?>">
				</TD>
				<TD VALIGN=CENTER ALIGN=CENTER>
					<INPUT type=text name="rooms_<?echo(urlencode($username))?>" value="<?echo(stripslashes(htmlspecialchars($rooms)))?>" SIZE="40" onChange="javascript:reset_perms('<?echo(urlencode($username))?>');">
					<INPUT type="hidden" name="old_rooms_<?echo(urlencode($username))?>" value="<?echo(htmlspecialchars($rooms))?>">
				</TD>
			</TR>
			<?
		};
		$DbLink->clean_results();
		?>
		<TR>
			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=6>
				<FONT size=-1>* <?echo(A_SHEET1_5)?></FONT>
			</TD>
		</TR>
		<TR><TD>&nbsp;</TD></TR>
		<TR>
			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=5>
				<INPUT TYPE="submit" NAME=submit_type VALUE="<?php echo(A_SHEET1_6); ?>">
				<BR><BR>
				<INPUT TYPE="submit" NAME=submit_type VALUE="<?php echo(A_SHEET1_9); ?>">
			</TD>
			<TD VALIGN=CENTER ALIGN=CENTER>
				<INPUT TYPE="submit" NAME=submit_type VALUE="<?php echo(A_SHEET1_7); ?>">
			</TD>
		</TR>
		</TABLE>
		</FORM>
	</TD>
</TR>

<?php
}
else
{
?>

<TR>
	<TH COLSPAN=6>
		<TABLE BORDER=0 WIDTH=100%>
		<TR>
			<TH COLSPAN=6 CLASS=tabtitle><?php echo(A_SHEET1_1); ?></TH>
		</TR>
		<TR><TD>&nbsp;</TD></TR>
		<TR>
			<TD COLSPAN=6 ALIGN=CENTER CLASS=error><?php echo(A_SHEET1_8); ?></TD>
		</TR>
		</TABLE>
	</TH>
</TR>

<?php
};
?>

</TABLE>

<?php
?>

⌨️ 快捷键说明

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