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

📄 admincp.php

📁 beiyubbsTXT312 一个相对完整的PHP系统,可以用来参考或模拟
💻 PHP
字号:
<?php
!defined('SAFE') && exit('Forbidden');
$a='#54659C';
$b='#F5F5FF';
$c='#CED4E8';
$baysoft_version="3.1.2";
empty($db_debug) && error_reporting(0);
unset($GLOBALS,$_ENV,$HTTP_ENV_VARS,$_REQUEST,$HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_POST_FILES,$HTTP_COOKIE_VARS);
if(!ini_get('register_globals'))
{
	extract($_GET,EXTR_SKIP);
	extract($_POST,EXTR_SKIP);
	extract($_FILES,EXTR_SKIP);
	extract($_COOKIE,EXTR_SKIP);
}
foreach($_POST as $_key=>$_value){
	$_POST[$_key]=str_replace('|','│',$_value);
	$$_key=$_POST[$_key];
}

foreach($_GET as $_key=>$_value){
	$_GET[$_key]=str_replace('|','│',$_value);
	$$_key=$_GET[$_key];
}
$REQUEST_URI=$_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI']:$_SERVER['PHP_SELF'];
$sysos=PHP_OS;
$cptop="<table width=95% align=center cellspacing=0 cellpadding=0 bgcolor=333333><tr><td><table width=100% cellspacing=1 cellpadding=3><tr><td class=head>";
$cpbottom="</td></tr></table></td></tr></table>";
$admintopad="<tr><td colspan=2><table width=100% border=0 cellspacing=2 cellpadding=5 ><tr class=head><td width=30%><a href='http://baysoft.very.cc'><font color='#ffffff'><span class=bold>检查最新版本</span></font></a></td><td width=30% align=center ><a href='http://baysoft.very.cc' target=_blank><font color='#ffffff'><span class=bold>Baysoft 用户交流</font></span></a></td><td width=30% align=right><a href='index.php'><font color='#ffffff'><span class=bold>论坛首页</span></font></a></TD></tr></table></td></tr>";
$adminbottomad="<tr><td bgcolor=$b valign=middle align=left colspan=2><blockquote><br><br><br><br><hr size=0 noshade color='#000000' width=100%><center><font style=font-size: 11px; font-family: Tahoma, Verdana, Arial>Powered by <a href='http://baysoft.very.cc' target=_blank> <span class=bold>baysoft</span> $baysoft_version</a> &nbsp;&copy; 2003-04,<b style='color: #FF9900'>Baysoft</span> <span class=bold><a href='http://baysoft.very.cc' target=_blank>cp</a></span></font></blockquote></td></tr>";
$admin_login_ip=$_SERVER['REMOTE_ADDR'];
$timestamp=time();
$oldstarttime=date("Y-m-d H:i",$timestamp);


if(strpos($REQUEST_URI,'?')===false || $adminjob=='settings') $ob_check=1;/*解决打开 ob_gzhandler 进后台出现下载问题*/
require "./bbsdata/config.php";
require "./bbsdata/level.php";

if(!is_writeable('session') && !chmod('session',0777)){
	die('请设置 session 目录为可写模式(777)');
}else{
	session_set_cookie_params(0,$ckpath,$ckdomain);
	session_name('S');
	session_save_path('session');
	session_cache_limiter('private, must-revalidate');
	session_start();
}
if($adminjob=='quit'){
	session_unset();
	eval("\$leftforum = \"".gettemplate('adminlogin')."\";");
	adminmsg('成 功 退 出 管 理<br><br><a href=index.php>进 入 首 页</a>');
}


$bbsrecordfile="bbsdata/admin_record.php";
$F_count=F_L_count($bbsrecordfile,2000);
$L_T=1200-($timestamp-filemtime($bbsrecordfile));
$L_left=15-$F_count;
if($F_count>15 && $L_T>0){
	eval("\$leftforum = \"".gettemplate('adminlogin')."\";");
	adminmsg("已经连续 $F_count 次进行无效登陆,您将在 20 分钟内无法正常登陆后台,还剩余 $L_T 秒");
}

if (file_exists("install.php")){
	eval("\$leftforum = \"".gettemplate('adminlogin')."\";");
	adminmsg("install.php 文件仍然在您的服务器上,请马上利用 FTP 来将其删除!! 当你删除之后,刷新本页面重新进入管理中心。");
}
if (file_exists("bbsdata/manager.php")) 
	include("./bbsdata/manager.php");
else{
	eval("\$leftforum = \"".gettemplate('adminlogin')."\";");
	adminmsg("论坛管理员文件不存在,请重新上传 manager.php文件");
}

if($_POST['admin_pwd'] && $_POST['admin_name']){
	$_SESSION['baysoftadminid']=$admin_name=$_POST['admin_name'];
	$_SESSION['baysoftadminpwd']=$admin_pwd=md5($_POST['admin_pwd']);
}else{
	$admin_name=$_SESSION['baysoftadminid'];
	$admin_pwd=$_SESSION['baysoftadminpwd'];
}

/*
*管理员验证
*/
if (($admin_name!=$manager || $admin_pwd!=$manager_pwd || strlen($admin_pwd)<16) && !checkpass($admin_name,$admin_pwd)) 
{
	if ($admin_name<>"")
	{
		session_unset();
		$new_adminrecord="<?die;?>|$admin_name|$_POST[admin_pwd]|Logging Failed|$admin_login_ip|$timestamp|\n";
		writeover($bbsrecordfile,$new_adminrecord,"ab");
	}
	eval("\$leftforum = \"".gettemplate('adminlogin')."\";");
	
	if($_POST['Login_f']==1){
		adminmsg("密码错误,您还可以尝试 $L_left 次");
	}

	eval("dooutput(\"".gettemplate('tpl_login')."\");");
}else{
	$_SESSION['baysoftadminid']=$_SESSION['baysoftadminid'];
	$_SESSION['baysoftadminpwd']=$_SESSION['baysoftadminpwd'];
}
eval("\$leftforum = \"".gettemplate('admin_left')."\";");

//管理员日记
$new_adminrecord="<?die;?>|$admin_name||$basename?adminjob=$adminjob$action|$admin_login_ip|$timestamp|\n";
writeover($bbsrecordfile,$new_adminrecord,"ab");
//日记结束


function Cookie($ck_Var,$ck_Value,$ck_Time='F',$ck_O='Y'){
  	global $cookietime,$ckpath,$ckdomain;
    $ck_Time=='F' && $ck_Time = $cookietime;
	$ck_O=='Y' ? setCookie($ck_Var,$ck_Value,$ck_Time,$ckpath,$ckdomain):setCookie($ck_Var,$ck_Value,$ck_Time);
}
//获得模版函数
function gettemplate($template,$EXT="htm") 
{
	$path='admin';
	$thiss=implode("",openfile("template/$path/$template.$EXT"));
	$thiss=addslashes($thiss);
	return $thiss;
}
//页面输出函数
function dooutput($vartext)
{
	global $db_footertime,$starttime,$db_obstart,$ob_check;
	//ob_end_clean();
	!$ob_check && $db_obstart==1 ? ob_start('ob_gzhandler') : ob_start();
	$vartext = stripslashes($vartext);
    echo "$vartext";
    exit;
}
function checkpass($admin_name,$admin_pwd)
{
	global $checkpower;
	if (!$admin_name) return false;
	if (!$admin_pwd) return false;
	if (!file_exists("userdata/admin/$admin_name.php") || strpos($admin_name,"..")!==false || strpos($admin_name,".")!==false) return false;
	$admin_info=explode("|",readover("userdata/admin/$admin_name.php"));
	$adminpwd=$admin_info[2];
	$checkpower=$admin_info[3];
	if ($admin_pwd==$adminpwd)
		return true;
	else 
		return false;
}

function gets($filename,$value)
{
	if($handle=@fopen($filename,"rb")){
		flock($handle,LOCK_SH);
		$getcontent=fread($handle,$value);//fgets调试
		fclose($handle);
	}
	return $getcontent;
}
function readover($filename,$method="rb",$readsize="D")
{
	$filesize=filesize($filename);
	if($readsize!="D") $filesize=min($filesize,$readsize);/*备份时解决list的负载控制*/
	if($handle=@fopen($filename,$method)){
		flock($handle,LOCK_SH);
		$filedata=fread($handle,$filesize);
		fclose($handle);
	}
	return $filedata;
}
function writeover($filename,$data,$method="rb+")
{
	touch($filename);/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/
	$handle=fopen($filename,$method);
	flock($handle,LOCK_EX);
	fputs($handle,$data);
	if($method=="rb+") ftruncate($handle,strlen($data));
	fclose($handle);
}
function openfile($filename,$style='Y')
{
	if($style=='Y'){
		$filedata=readover($filename);
		$filedata=str_replace("\n","\n<:baysoft:>",$filedata);
		$filedb=explode("<:baysoft:>",$filedata);
		//array_pop($filedb);
		$count=count($filedb);
		if($filedb[$count-1]==''||$filedb[$count-1]=="\r"){unset($filedb[$count-1]);}
		if(empty($filedb)){$filedb[0]="";}
		return $filedb;
	}else{
		$filedb=file($filename);
		return $filedb;
	}
}
function adminmsg($msg,$ifjump=0,$time=0)
{
	global $admintopad,$a,$b,$c,$adminbottomad,$basename,$leftforum,$url;
	$ifecho=array("jump1"    => "<!--","jump2"    => " -->");
	if($ifjump==1){$ifecho[jump1]="";$ifecho[jump2]="";}
	if(empty($url)) $url=$basename;
	eval("dooutput(\"".gettemplate('admin_msg')."\");");
}
function safeconvert($msg)
{
	$msg = str_replace("\t","",$msg);
	$msg = str_replace("<","&lt;",$msg);  
	$msg = str_replace(">","&gt;",$msg);
	$msg = str_replace("\r","",$msg);
	$msg = str_replace("\n","<br />",$msg);
	$msg = str_replace("|","│",$msg);
	$msg = str_replace("   "," &nbsp; ",$msg);#编辑时比较有效
	return $msg;
}
function ieconvert($msg)
{
	$msg = str_replace('"','&quot;',$msg);
	$msg = str_replace("\t","",$msg);
	$msg = str_replace("\r","",$msg);
	$msg = str_replace("\n","<br />",$msg);
	$msg = str_replace("|","│",$msg);
	$msg = str_replace("   "," &nbsp; ",$msg);#编辑时比较有效
	return $msg;
}
function deldir($path)
{
	$deldb=@opendir("$path/");
	while (false!==($delfile=@readdir($deldb)))
	{
		if (($delfile!=".") && ($delfile!="..") && ($delfile!="")&&strpos($delfile,".php"))
		{
			@unlink("$path/$delfile");
		}
	}
	@closedir($deldb);
	@rmdir($path);
}
function getusergroup($username,$getpostnum='N')
{
	global $userpath;
	include "./bbsdata/level.php";
	if(file_exists("$userpath/$username.php"))
	{
		$userinfo=readover("$userpath/$username.php");
		$detail=explode("|",$userinfo);
		if(ereg("^[0-9]{1,}",$detail[5]) || $getpostnum=='Y')
		{
			$lpost[0]=0;
			$count=count($lpost);
			for($i=0;$i<$count;$i++)
			{
				if($detail[16]>=$lpost[$i] && $detail[16]<$lpost[$i+1])
					$detail[5]=$i;
			}
		}
		$group=$detail[5];
	}
	settype($group, "string");
	return $group;
}
/*
*$cgma:为了安全考虑超级管理员采用的是非用户组思想,所以除了在缓冲思想那可以用$cgma=1其他地方请不要加这一设置!
*/
function changegroup($username,$newgroup,$cgma=N)
{
	global $userpath;
	if(file_exists("$userpath/$username.php")){
		$db=readover("$userpath/$username.php");
		$detail=explode("|",$db);
		if($cgma==N && $detail[5]=="manager") adminmsg("不能修改管理员权限");
		if(!is_numeric($detail[5]) && !is_numeric($newgroup) && $detail[5]!='admin' 
			&& ($newgroup!='admin' || ($detail[5]!='superadmin' && $detail[5]!='banned' && 
			$detail[5]!='ctuser'))){
			global $ltitle;
			$N_litle=$ltitle[$detail[5]];
			adminmsg("该用户为非普通用户组:<b>$N_litle</b>  ! 为了避免特殊组记录的混乱 您在修改该特殊用户为其他特殊或管理组时,<br><br>请先到相应的特殊或管理组删除原记录,还原改用户为普通用户组");
		}
		$detail[5]=$newgroup;
		$fp=implode("|",$detail);
		writeover("$userpath/$username.php",$fp);
	}
}


/*
*此函数主要解决 baysoft 后台批量管理维护list索引文件时,当索引文件大至几十M时产生的无法写入问题
*当然此函数还可以应用于其他比如 userarray.php 这样容易产生负载的数据文件
*/
function writelist($filename,$lst_array)
{
	$size=5000;									 //控制每次list.php每次写入的长度
	$count=floor(count($lst_array)/$size)+1;
	for($i=0;$i<$count;$i++){
		//debug echo "$i 次";
		$array1=array_slice ($lst_array,$i*$size,$size);
		$i!=0 ? $method="ab":$method="wb";/*第一次重建时,一定要清空*/
		writeover($filename,implode("",$array1),$method);
	}
}


function ifadmin($adminname)
{
	$adminpath="bbsdata/admin.php";
	$adminarray=openfile($adminpath);
	$acount=count($adminarray);
	$ifadmin=0;
	for($j=0;$j<$acount;$j++)
	{
		$temp=explode("|",$adminarray[$j]);
		if(trim($temp[2])==$adminname)
		{
			$ifadmin=1;
			break;
		}
	}
	return $ifadmin;
}
function ifcheck($var,$out){
	global ${$out.'_Y'},${$out.'_N'};
	if($var) ${$out.'_Y'}="CHECKED"; else ${$out.'_N'}="CHECKED";

}

function F_L_count($filename,$offset)
{
	global $admin_login_ip;
	$count=0;
	if($fp=fopen($filename,"rb")){
		flock($fp,LOCK_SH);
		fseek($fp,-$offset,SEEK_END);
		$readb=fread($fp,$offset);
		fclose($fp);
		$readb=trim($readb);
		$readb=explode("|Logging Failed|$admin_login_ip|",$readb);
		$count=count($readb);
	}
	return $count;
}
?>

⌨️ 快捷键说明

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