| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015 | <?php$editor=1;//字符过滤function escape_str($str){	global $public_r;	if($public_r['bakescapetype']==2)//real_escape_string	{		$str=escape_dbstr($str);	}	else//addslashes	{		$str=escape_addsstr($str);	}	return $str;}//字符过虑(addslashes)function escape_addsstr($str){	$str=addslashes($str);	$str=str_replace('\\\'','\'\'',$str);	$str=str_replace("\\\\","\\\\\\\\",$str);	$str=str_replace('$','\$',$str);	return $str;}//字符过虑(db)function escape_dbstr($str){	global $empire,$dbtbpre,$public_r;	$str=$empire->EDbEscapeStr($str);	$str=str_replace('\\\'','\'\'',$str);	$str=str_replace("\\\\","\\\\\\\\",$str);	$str=str_replace('$','\$',$str);	return $str;}//修复表function Ebak_Rep($tablename,$dbname,$userid,$username){	global $empire,$ecms_config;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($dbname);	$empire->usequery("use `$dbname`");	$count=count($tablename);	if(empty($count))	{printerror("MustChangeOneTable","history.go(-1)");}	for($i=0;$i<$count;$i++)	{		//$sql1=$empire->query("OPTIMIZE TABLE `$tablename[$i]`;");		//$sql2=$empire->query("CHECK TABLE `$tablename[$i]`;");		//$sql3=$empire->query("ANALYZE TABLE `$tablename[$i]`;");		$sql4=$empire->query("REPAIR TABLE `$tablename[$i]`;");    }	$empire->usequery("use `".$ecms_config['db']['dbname']."`");	//操作日志	insert_dolog("dbname=".$dbname);	printerror("RepireTableSuccess","ChangeTable.php?mydbname=$dbname".hReturnEcmsHashStrHref2(0));}//优化表function Ebak_Opi($tablename,$dbname,$userid,$username){	global $empire,$ecms_config;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($dbname);	$empire->usequery("use `$dbname`");	$count=count($tablename);	if(empty($count))	{printerror("MustChangeOneTable","history.go(-1)");}	for($i=0;$i<$count;$i++)	{		$sql1=$empire->query("OPTIMIZE TABLE `$tablename[$i]`;");    }	$empire->usequery("use `".$ecms_config['db']['dbname']."`");	//操作日志	insert_dolog("dbname=".$dbname);	printerror("OptimTableSuccess","ChangeTable.php?mydbname=$dbname".hReturnEcmsHashStrHref2(0));}//删除数据表function Ebak_Drop($tablename,$dbname,$userid,$username){	global $empire,$ecms_config;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($dbname);	$empire->usequery("use `$dbname`");	$count=count($tablename);	if(empty($count))	{printerror("MustChangeOneDelTable","history.go(-1)");}	$a="";	$first=1;	for($i=0;$i<$count;$i++)	{		if(empty($first))		{			$a.=",";	    }		else		{			$first=0;		}		$a.="`".$tablename[$i]."`";    }	$sql1=$empire->query("DROP TABLE IF EXISTS ".$a.";");	$empire->usequery("use `".$ecms_config['db']['dbname']."`");	//操作日志	insert_dolog("dbname=".$dbname);	printerror("DelTableSuccess","ChangeTable.php?mydbname=$dbname".hReturnEcmsHashStrHref2(0));}//删除数据库function Ebak_DropDb($dbname,$userid,$username){	global $empire;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($dbname);	if(empty($dbname))	{printerror("ChangeDropDb","history.go(-1)");}	$sql=$empire->query("DROP DATABASE `$dbname`");	if($sql)	{		//操作日志		insert_dolog("dbname=".$dbname);		printerror("DropDbSuccess","ChangeDb.php".hReturnEcmsHashStrHref2(1));	}	else	{printerror("DbError","history.go(-1)");}}//建立数据库function Ebak_CreatDb($dbname,$dbchar,$userid,$username){	global $empire,$ecms_config;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($dbname);	if(!trim($dbname)){		printerror("EmptyDbname","history.go(-1)");	}	$a="";	if($dbchar&&$ecms_config['db']['dbver']>='4.1'){		$a=" DEFAULT CHARACTER SET ".$dbchar;	}	$sql=$empire->query("CREATE DATABASE IF NOT EXISTS `$dbname`".$a);	if($sql){		//操作日志		insert_dolog("dbname=".$dbname);		printerror("AddDbSuccess","ChangeDb.php".hReturnEcmsHashStrHref2(1));	}	else	{printerror("DbError","history.go(-1)");}}//清空表function Ebak_EmptyTable($tablename,$dbname,$userid,$username){	global $empire,$ecms_config;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($dbname);	$empire->usequery("use `$dbname`");	$count=count($tablename);	if(empty($count))	{printerror("MustChangeOneTable","history.go(-1)");}	for($i=0;$i<$count;$i++)	{		$sql1=$empire->query("TRUNCATE `".$tablename[$i]."`;");    }	$empire->usequery("use `".$ecms_config['db']['dbname']."`");	//操作日志	insert_dolog("dbname=".$dbname);	printerror("EmptyTableSuccess","ChangeTable.php?mydbname=$dbname".hReturnEcmsHashStrHref2(0));}//---------------------------备份//初使化备份function Ebak_DoEbak($add,$userid,$username){	global $empire,$public_r,$fun_r,$ecms_config;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$dbname=RepPostVar($add['mydbname']);	if(empty($dbname)){		printerror("NotChangeDbname","history.go(-1)");	}	$tablename=$add['tablename'];	$count=count($tablename);	if(empty($count)){		printerror("MustChangeOneTable","history.go(-1)");	}	$add['baktype']=(int)$add['baktype'];	$add['filesize']=(int)$add['filesize'];	$add['bakline']=(int)$add['bakline'];	$add['autoauf']=(int)$add['autoauf'];	if((!$add['filesize']&&!$add['baktype'])||(!$add['bakline']&&$add['baktype'])){		printerror("FileSizeEmpty","history.go(-1)");	}	//目录名	$add['mypath']=RepPostStr($add['mypath'],1);	$bakpath=$public_r['bakdbpath'];	if(empty($add['mypath'])){		$add['mypath']=$dbname."_".date("YmdHis");	}    DoMkdir($bakpath."/".$add['mypath']);	//生成说明文件	$readme=$add['readme'];	$rfile=$bakpath."/".$add['mypath']."/readme.txt";	$readme.="\r\n\r\nBaktime: ".date("Y-m-d H:i:s");	WriteFiletext_n($rfile,$readme);	$b_table="";	$d_table="";	for($i=0;$i<$count;$i++){		$tablename[$i]=RepPostVar($tablename[$i]);		$b_table.=$tablename[$i].",";		$d_table.="\$tb[".$tablename[$i]."]=0;\r\n";    }	//去掉最后一个,	$b_table=substr($b_table,0,strlen($b_table)-1);	$bakstru=(int)$add['bakstru'];	$bakstrufour=(int)$add['bakstrufour'];	$beover=(int)$add['beover'];	$waitbaktime=(int)$add['waitbaktime'];	$bakdatatype=(int)$add['bakdatatype'];	if($add['insertf']=='insert'){		$insertf='insert';	}	else{		$insertf='replace';	}	if($ecms_config['db']['dbver']=='4.0'&&$add['dbchar']=='auto')	{		$add['dbchar']='';	}	$string="<?php	\$b_table=\"".$b_table."\";	".$d_table."	\$b_baktype=".$add['baktype'].";	\$b_filesize=".$add['filesize'].";	\$b_bakline=".$add['bakline'].";	\$b_autoauf=".$add['autoauf'].";	\$b_dbname=\"".$dbname."\";	\$b_stru=".$bakstru.";	\$b_strufour=".$bakstrufour.";	\$b_dbchar=\"".addslashes($add['dbchar'])."\";	\$b_beover=".$beover.";	\$b_insertf=\"".addslashes($insertf)."\";	\$b_autofield=\",".addslashes($add['autofield']).",\";	\$b_bakdatatype=".$bakdatatype.";	?>";	$cfile=$bakpath."/".$add['mypath']."/config.php";	WriteFiletext_n($cfile,$string);	if($add['baktype']){		$phome='BakExeT';	}	else{		$phome='BakExe';	}	echo $fun_r['FirstBakSuccess']."<script>self.location.href='phome.php?phome=$phome&t=0&s=0&p=0&mypath=$add[mypath]&waitbaktime=$waitbaktime".hReturnEcmsHashStrHref(0)."';</script>";	exit();}//执行备份(按文件大小)function Ebak_BakExe($t,$s,$p,$mypath,$alltotal,$thenof,$fnum,$stime=0,$userid,$username){	global $empire,$public_r,$fun_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	if(empty($mypath)){		printerror("ErrorUrl","history.go(-1)");	}	$bakpath=$public_r['bakdbpath'];	$path=$bakpath."/".$mypath;	@include($path."/config.php");	if(empty($b_table)){		printerror("ErrorUrl","history.go(-1)");	}	$waitbaktime=(int)$_GET['waitbaktime'];	if(empty($stime))	{		$stime=time();	}	$header="<?php@include(\"../../inc/header.php\");";	$footer="@include(\"../../inc/footer.php\");?>";	$btb=explode(",",$b_table);	$count=count($btb);	$t=(int)$t;	$s=(int)$s;	$p=(int)$p;	//备份完毕	if($t>=$count)	{		insert_dolog("dbname=".$b_dbname);//操作日志		$varmessage=$fun_r['BakSuccess']."<br><br>".$fun_r['TotalUseTime'].ToChangeUseTime($stime);		$GLOBALS['varmessage']=$varmessage;		printerror('VarMessage','ChangeDb.php'.hReturnEcmsHashStrHref2(1),0,1);    }	$dumpsql=Ebak_ReturnVer();	//选择数据库	$u=$empire->usequery("use `$b_dbname`");	//编码	if($b_dbchar=='auto')	{		if(empty($s))		{			$status_r=Ebak_GetTotal($b_dbname,$btb[$t]);			$collation=Ebak_GetSetChar($status_r['Collation']);			DoSetDbChar($collation);			//总记录数			$num=$public_r[limittype]?-1:$status_r['Rows'];		}		else		{			$collation=$_GET['collation'];			DoSetDbChar($collation);			$num=(int)$alltotal;		}		$dumpsql.=Ebak_ReturnSetNames($collation);	}	else	{		DoSetDbChar($b_dbchar);		if(empty($s))		{			//总记录数			if($public_r[limittype])			{				$num=-1;			}			else			{				$status_r=Ebak_GetTotal($b_dbname,$btb[$t]);				$num=$status_r['Rows'];			}		}		else		{			$num=(int)$alltotal;		}	}	//备份数据库结构	if($b_stru&&empty($s))	{		$dumpsql.=Ebak_Returnstru($btb[$t],$b_strufour);	}	$sql=$empire->query("select * from `".$btb[$t]."` limit $s,$num");	//取得字段数	if(empty($fnum))	{		$return_fr=Ebak_ReturnTbfield($b_dbname,$btb[$t],$b_autofield);		$fieldnum=$return_fr['num'];		$noautof=$return_fr['autof'];	}	else	{		$fieldnum=$fnum;		$noautof=$thenof;	}	//完整插入	$inf='';	if($b_beover==1)	{		$inf='('.Ebak_ReturnInTbfield($b_dbname,$btb[$t]).')';	}	//十六进制	$hexf='';	if($b_bakdatatype==1)	{		$hexf=Ebak_ReturnInStrTbfield($b_dbname,$btb[$t]);	}	$b=0;	while($r=$empire->fetch($sql))	{		$b=1;		$s++;		$dumpsql.="E_D(\"".$b_insertf." into `".$btb[$t]."`".$inf." values(";		$first=1;		for($i=0;$i<$fieldnum;$i++)		{			//首字段			if(empty($first))			{				$dumpsql.=',';			}			else			{				$first=0;			}			$myi=$i+1;			if(!isset($r[$i])||strstr($noautof,','.$myi.','))			{				$dumpsql.='NULL';			}			else			{				$dumpsql.=Ebak_ReSqlFtext($r[$i],$b_bakdatatype,$myi,$hexf);			}		}		$dumpsql.=");\");\r\n";		//是否超过限制		if(strlen($dumpsql)>=$b_filesize*1024)		{			$p++;			$sfile=$path."/".$btb[$t]."_".$p.".php";			$dumpsql=$header.$dumpsql.$footer;			WriteFiletext_n($sfile,$dumpsql);			$empire->free($sql);			//echo $fun_r['BakOneDataSuccess'].Ebak_EchoBakSt($btb[$t],$count,$t,$num,$s)."<script>self.location.href='phome.php?phome=BakExe&s=$s&p=$p&t=$t&mypath=$mypath&alltotal=$num&thenof=$noautof&fieldnum=$fieldnum&stime=$stime".hReturnEcmsHashStrHref(0)."';</script>";			echo"<meta http-equiv=\"refresh\" content=\"".$waitbaktime.";url=phome.php?phome=BakExe&s=$s&p=$p&t=$t&mypath=$mypath&alltotal=$num&thenof=$noautof&fieldnum=$fieldnum&stime=$stime&waitbaktime=$waitbaktime&collation=$collation".hReturnEcmsHashStrHref(0)."\">".$fun_r['BakOneDataSuccess'].Ebak_EchoBakSt($btb[$t],$count,$t,$num,$s);			exit();		}	}	//最后一个备份	if(empty($p)||$b==1)	{		$p++;		$sfile=$path."/".$btb[$t]."_".$p.".php";		$dumpsql=$header.$dumpsql.$footer;		WriteFiletext_n($sfile,$dumpsql);	}	Ebak_RepFilenum($p,$btb[$t],$path);	$t++;	$empire->free($sql);	//进入下一个表	//echo $btb[$t-1].$fun_r['OneTableBakSuccess']."<script>self.location.href='phome.php?phome=BakExe&s=0&p=0&t=$t&mypath=$mypath&stime=$stime".hReturnEcmsHashStrHref(0)."';</script>";	echo"<meta http-equiv=\"refresh\" content=\"".$waitbaktime.";url=phome.php?phome=BakExe&s=0&p=0&t=$t&mypath=$mypath&stime=$stime&waitbaktime=$waitbaktime".hReturnEcmsHashStrHref(0)."\">".$btb[$t-1].$fun_r['OneTableBakSuccess'];	exit();}//执行备份(按记录)function Ebak_BakExeT($t,$s,$p,$mypath,$alltotal,$thenof,$fnum,$auf='',$aufval=0,$stime=0,$userid,$username){	global $empire,$public_r,$fun_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	if(empty($mypath)){		printerror("ErrorUrl","history.go(-1)");	}	$bakpath=$public_r['bakdbpath'];	$path=$bakpath."/".$mypath;	@include($path."/config.php");	if(empty($b_table)){		printerror("ErrorUrl","history.go(-1)");	}	$waitbaktime=(int)$_GET['waitbaktime'];	if(empty($stime))	{		$stime=time();	}	$header="<?php@include(\"../../inc/header.php\");";	$footer="@include(\"../../inc/footer.php\");?>";	$btb=explode(",",$b_table);	$count=count($btb);	$t=(int)$t;	$s=(int)$s;	$p=(int)$p;	//备份完毕	if($t>=$count)	{		insert_dolog("dbname=".$b_dbname);//操作日志		$varmessage=$fun_r['BakSuccess']."<br><br>".$fun_r['TotalUseTime'].ToChangeUseTime($stime);		$GLOBALS['varmessage']=$varmessage;		printerror('VarMessage','ChangeDb.php'.hReturnEcmsHashStrHref2(1),0,1);    }	$dumpsql=Ebak_ReturnVer();	//选择数据库	$u=$empire->usequery("use `$b_dbname`");	//编码	if($b_dbchar=='auto')	{		if(empty($s))		{			$status_r=Ebak_GetTotal($b_dbname,$btb[$t]);			$collation=Ebak_GetSetChar($status_r['Collation']);			DoSetDbChar($collation);			//总记录数			$num=$public_r[limittype]?-1:$status_r['Rows'];		}		else		{			$collation=$_GET['collation'];			DoSetDbChar($collation);			$num=(int)$alltotal;		}		$dumpsql.=Ebak_ReturnSetNames($collation);	}	else	{		DoSetDbChar($b_dbchar);		if(empty($s))		{			//总记录数			if($public_r[limittype])			{				$num=-1;			}			else			{				$status_r=Ebak_GetTotal($b_dbname,$btb[$t]);				$num=$status_r['Rows'];			}		}		else		{			$num=(int)$alltotal;		}	}	//备份数据库结构	if($b_stru&&empty($s))	{		$dumpsql.=Ebak_Returnstru($btb[$t],$b_strufour);	}	//取得字段数	if(empty($fnum))	{		$return_fr=Ebak_ReturnTbfield($b_dbname,$btb[$t],$b_autofield);		$fieldnum=$return_fr['num'];		$noautof=$return_fr['autof'];		$auf=$return_fr['auf'];	}	else	{		$fieldnum=$fnum;		$noautof=$thenof;	}	//自动识别自增项	$aufval=(int)$aufval;	if($b_autoauf==1&&$auf)	{		$sql=$empire->query("select * from `".$btb[$t]."` where ".$auf.">".$aufval." order by ".$auf." limit $b_bakline");	}	else	{		$sql=$empire->query("select * from `".$btb[$t]."` limit $s,$b_bakline");	}	//完整插入	$inf='';	if($b_beover==1)	{		$inf='('.Ebak_ReturnInTbfield($b_dbname,$btb[$t]).')';	}	//十六进制	$hexf='';	if($b_bakdatatype==1)	{		$hexf=Ebak_ReturnInStrTbfield($b_dbname,$btb[$t]);	}	$b=0;	while($r=$empire->fetch($sql))	{		if($auf)		{			$lastaufval=$r[$auf];		}		$b=1;		$s++;		$dumpsql.="E_D(\"".$b_insertf." into `".$btb[$t]."`".$inf." values(";		$first=1;		for($i=0;$i<$fieldnum;$i++)		{			//首字段			if(empty($first))			{				$dumpsql.=',';			}			else			{				$first=0;			}			$myi=$i+1;			if(!isset($r[$i])||strstr($noautof,','.$myi.','))			{				$dumpsql.='NULL';			}			else			{				$dumpsql.=Ebak_ReSqlFtext($r[$i],$b_bakdatatype,$myi,$hexf);			}		}		$dumpsql.=");\");\r\n";	}	if(empty($b))	{		//最后一个备份		if(empty($p))		{			$p++;			$sfile=$path."/".$btb[$t]."_".$p.".php";			$dumpsql=$header.$dumpsql.$footer;			WriteFiletext_n($sfile,$dumpsql);		}		Ebak_RepFilenum($p,$btb[$t],$path);		$t++;		$empire->free($sql);		//进入下一个表		//echo $btb[$t-1].$fun_r['OneTableBakSuccess']."<script>self.location.href='phome.php?phome=BakExeT&s=0&p=0&t=$t&mypath=$mypath&stime=$stime".hReturnEcmsHashStrHref(0)."';</script>";		echo"<meta http-equiv=\"refresh\" content=\"".$waitbaktime.";url=phome.php?phome=BakExeT&s=0&p=0&t=$t&mypath=$mypath&stime=$stime&waitbaktime=$waitbaktime".hReturnEcmsHashStrHref(0)."\">".$btb[$t-1].$fun_r['OneTableBakSuccess'];		exit();	}	//进入下一组	$p++;	$sfile=$path."/".$btb[$t]."_".$p.".php";	$dumpsql=$header.$dumpsql.$footer;	WriteFiletext_n($sfile,$dumpsql);	$empire->free($sql);	//echo $fun_r['BakOneDataSuccess'].Ebak_EchoBakSt($btb[$t],$count,$t,$num,$s)."<script>self.location.href='phome.php?phome=BakExeT&s=$s&p=$p&t=$t&mypath=$mypath&alltotal=$num&thenof=$noautof&fieldnum=$fieldnum&auf=$auf&aufval=$lastaufval&stime=$stime".hReturnEcmsHashStrHref(0)."';</script>";	echo"<meta http-equiv=\"refresh\" content=\"".$waitbaktime.";url=phome.php?phome=BakExeT&s=$s&p=$p&t=$t&mypath=$mypath&alltotal=$num&thenof=$noautof&fieldnum=$fieldnum&auf=$auf&aufval=$lastaufval&stime=$stime&waitbaktime=$waitbaktime&collation=$collation".hReturnEcmsHashStrHref(0)."\">".$fun_r['BakOneDataSuccess'].Ebak_EchoBakSt($btb[$t],$count,$t,$num,$s);	exit();}//输出备份进度条function Ebak_EchoBakSt($tbname,$tbnum,$tb,$rnum,$r){	$table=($tb+1).'/'.$tbnum;	$record=$r;	if($rnum!=-1)	{		$record=$r.'/'.$rnum;	}	?>	<br><br>	<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1">		<tr><td height="25">Table Name : <b><?=$tbname?></b></td></tr>		<tr><td height="25">Table : <b><?=$table?></b></td></tr>		<tr><td height="25">Record : <b><?=$record?></b></td></tr>	</table><br><br>	<?}//输出恢复进度条function Ebak_EchoReDataSt($tbname,$tbnum,$tb,$pnum,$p){	$table=($tb+1).'/'.$tbnum;	$record=$p.'/'.$pnum;	?>	<br><br>	<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1">		<tr><td height="25">Table Name : <b><?=$tbname?></b></td></tr>		<tr><td height="25">Table : <b><?=$table?></b></td></tr>		<tr><td height="25">File : <b><?=$record?></b></td></tr>	</table><br><br>	<?}//取得表记录数function Ebak_GetTotal($dbname,$tbname){	global $empire;	/*	$tr=$empire->fetch1("select count(*) AS total from ".$btb[$t]);	$num=$tr[total];	*/	$tr=$empire->fetch1("SHOW TABLE STATUS LIKE '".$tbname."';");	return $tr;}//返回字符集setfunction Ebak_GetSetChar($char){	global $empire;	if(empty($char))	{		return '';	}	$r=$empire->fetch1("SHOW COLLATION LIKE '".$char."';");	return $r['Charset'];}//返回表字段信息function Ebak_ReturnTbfield($dbname,$tbname,$autofield){	global $empire;	$sql=$empire->query("SHOW FIELDS FROM `".$tbname."`");	$i=0;//字段数	$autof=",";//去除自增字段列表	$f='';//自增字段名	while($r=$empire->fetch($sql))	{		$i++;		if(strstr($autofield,",".$tbname.".".$r[Field].","))		{			$autof.=$i.",";	    }		if($r['Extra']=='auto_increment')		{			$f=$r['Field'];		}    }	$return_r['num']=$i;	$return_r['autof']=$autof;	$return_r['auf']=$f;	return $return_r;}//返回插入字段function Ebak_ReturnInTbfield($dbname,$tbname){	global $empire;	$sql=$empire->query("SHOW FIELDS FROM `".$tbname."`");	$f='';	$dh='';	while($r=$empire->fetch($sql))	{		$f.=$dh.'`'.$r['Field'].'`';		$dh=',';    }	return $f;}//返回字符字段function Ebak_ReturnInStrTbfield($dbname,$tbname){	global $empire;	$sql=$empire->query("SHOW FIELDS FROM `".$tbname."`");	$i=0;	$f='';	$dh='';	while($r=$empire->fetch($sql))	{		$i++;		if(!(stristr($r[Type],'char')||stristr($r[Type],'text')))		{			continue;		}		$f.=$dh.$i;		$dh=',';    }	if($f)	{		$f=','.$f.',';	}	return $f;}//返回字段内容function Ebak_ReSqlFtext($str,$bakdatatype,$i,$tbstrf){	if($bakdatatype==1&&!empty($str)&&strstr($tbstrf,','.$i.','))	{		$restr='0x'.bin2hex($str);	}	else	{		$restr='\''.escape_str($str).'\'';	}	return $restr;}//替换文件数function Ebak_RepFilenum($p,$table,$path){	if(empty($p))	{$p=0;}	$file=$path."/config.php";	$text=ReadFiletext($file);	$rep1="\$tb[".$table."]=0;";	$rep2="\$tb[".$table."]=".$p.";";	$text=str_replace($rep1,$rep2,$text);	WriteFiletext_n($file,$text);}//执行SQLfunction E_D($sql){	global $empire;	$empire->query($sql);}//建立表function E_C($sql){	global $empire;	$empire->query(Ebak_AddDbchar($sql));}//转为Mysql4.0格式function Ebak_ToMysqlFour($query){	$exp="ENGINE=";	if(!strstr($query,$exp))	{		return $query;	}	$exp1=" ";	$r=explode($exp,$query);	//取得表类型	$r1=explode($exp1,$r[1]);	$returnquery=$r[0]."TYPE=".$r1[0];	return $returnquery;}//---------------------返回数据库结构function Ebak_Returnstru($table,$strufour){	global $empire;	$dumpsql.="E_D(\"DROP TABLE IF EXISTS `".$table."`;\");\r\n";	//设置引号	$usql=$empire->query("SET SQL_QUOTE_SHOW_CREATE=1;");	//数据表结构	$r=$empire->fetch1("SHOW CREATE TABLE `$table`;");	$create=str_replace("\"","\\\"",$r[1]);	//转为4.0格式	if($strufour)	{		$create=Ebak_ToMysqlFour($create);	}	$dumpsql.="E_C(\"".$create."\");\r\n";	return $dumpsql;}//返回设置编码function Ebak_ReturnSetNames($char){	if(empty($char))	{		return '';	}	$dumpsql="DoSetDbChar('".$char."');\r\n";	return $dumpsql;}//去除字段中的编码function Ebak_ReplaceFieldChar($sql){	global $ecms_config;	if($ecms_config['db']['dbver']=='4.0'&&strstr($sql,' character set '))	{		$preg_str="/ character set (.+?) collate (.+?) /is";		$sql=preg_replace($preg_str,' ',$sql);	}	return $sql;}//加编码function Ebak_AddDbchar($sql){	global $ecms_config,$b_dbchar;	//加编码	if($ecms_config['db']['dbver']>='4.1'&&!strstr($sql,'ENGINE=')&&($ecms_config['db']['setchar']||$b_dbchar)&&$b_dbchar!='auto')	{		$dbcharset=$b_dbchar?$b_dbchar:$ecms_config['db']['setchar'];		$sql=Ebak_DoCreateTable($sql,$ecms_config['db']['dbver'],$dbcharset);	}	elseif($ecms_config['db']['dbver']=='4.0'&&strstr($sql,'ENGINE='))	{		$sql=Ebak_ToMysqlFour($sql);	}	//去除字段中的编码	$sql=Ebak_ReplaceFieldChar($sql);	return $sql;}//建表function Ebak_DoCreateTable($sql,$mysqlver,$dbcharset){	$type=strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU","\\2",$sql));	$type=in_array($type,array('MYISAM','HEAP'))?$type:'MYISAM';	return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU","\\1",$sql).		($mysqlver>='4.1'?" ENGINE=$type DEFAULT CHARSET=$dbcharset":" TYPE=$type");}//返回版权信息function Ebak_ReturnVer(){	$string="/*		SoftName : EmpireBak		Author   : wm_chief		Copyright: Powered by www.phome.net*/";	return $string;}//转换大小function Ebak_ChangeSize($size){	if($size<1024)	{		$str=$size." B";	}	elseif($size<1024*1024)	{		$str=round($size/1024,2)." KB";	}	elseif($size<1024*1024*1024)	{		$str=round($size/(1024*1024),2)." MB";	}	else	{		$str=round($size/(1024*1024*1024),2)." GB";	}	return $str;}//导入数据function Ebak_ReData($add,$mypath,$userid,$username){	global $empire,$public_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$mypath=RepPostStr($mypath,1);	$add[mydbname]=RepPostStr($add[mydbname],1);	if(empty($mypath)||empty($add[mydbname]))	{printerror("EmptyDbnamePath","history.go(-1)");}	$bakpath=$public_r['bakdbpath'];	$path=$bakpath."/".$mypath;	if(!file_exists($path))	{		printerror("DbPathNotExist","history.go(-1)");    }	@include($path."/config.php");	if(empty($b_table))	{		printerror("BakCsError","history.go(-1)");	}	$waitbaktime=(int)$add['waitbaktime'];	$btb=explode(",",$b_table);	$nfile=$path."/".$btb[0]."_1.php?t=0&p=0&mydbname=$add[mydbname]&mypath=$mypath&waitbaktime=$waitbaktime".hReturnEcmsHashStrHref(0);	Header("Location:$nfile");	exit();}//删除备份目录function Ebak_DelBakpath($path,$userid,$username){	global $public_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$path=RepPostStr($path,1);	if(strstr($path,".."))	{printerror("NotChangeDelPath","history.go(-1)");}	if(!trim($path))	{printerror("NotChangeDelPath","history.go(-1)");}	$bakpath=$public_r['bakdbpath'];	$delpath=$bakpath."/".$path;	if(!file_exists($delpath))	{		printerror("ThisPathNotExist","history.go(-1)");    }	@include_once("../../class/delpath.php");	$delpath=DelPath($delpath);	//操作日志	insert_dolog("path=".$path);	printerror("DelPathSuccess","ChangePath.php?change=".RepPostStr($_GET['change'],1).hReturnEcmsHashStrHref2(0));}//打包目录function ZipFile($path,$zipname){	global $public_r;	$bakpath=$public_r['bakdbpath'];	$bakzippath=$public_r['bakdbzip'];	@include("../../class/phpzip.inc.php");	$z=new PHPZip(); //新建立一个zip的类    $z->Zip($bakpath."/".$path,$bakzippath."/".$zipname); //添加指定目录}//删除压缩包function Ebak_DelZip($file,$userid,$username){	global $public_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$file=RepPostStr($file,1);	if(strstr($file,".."))	{printerror("FileNotExist","history.go(-1)",8);}	if(empty($file))	{		printerror("FileNotExist","history.go(-1)",8);    }	$bakzippath=$public_r['bakdbzip'];	$filename=$bakzippath."/".$file;	if(!file_exists($filename))	{		printerror("FileNotExist","history.go(-1)",8);	}	DelFiletext($filename);	//操作日志	insert_dolog("file=".$file);	printerror("DelZipFileSuccess","history.go(-1)",8);}//压缩目录function Ebak_Dozip($path,$userid,$username){	global $public_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$path=RepPostStr($path,1);	if(strstr($path,".."))	{printerror("ThisPathNotExist","history.go(-1)",8);}	if(empty($path))	{		printerror("ThisPathNotExist","history.go(-1)",8);    }	$bakpath=$public_r['bakdbpath'];    $bakzippath=$public_r['bakdbzip'];	$mypath=$bakpath."/".$path;	if(!file_exists($mypath))	{		printerror("ThisPathNotExist","history.go(-1)",8);	}	$zipname=$path.make_password(10).".zip";	ZipFile($path,$zipname);	echo"<script>self.location.href='DownZip.php?f=$zipname&p=$path".hReturnEcmsHashStrHref2(0)."';</script>";}//转向恢复页面function Ebak_PathGotoRedata($path,$userid,$username){	global $public_r;	//验证权限	CheckLevel($userid,$username,$classid,"dbdata");	$path=RepPostStr($path,1);	if(strstr($path,".."))	{printerror("NotChangeDelPath","history.go(-1)");}	if(!trim($path))	{printerror("NotChangeDelPath","history.go(-1)");}	$bakpath=$public_r['bakdbpath'];	$repath=$bakpath."/".$path;	if(!file_exists($repath))	{		printerror("ThisPathNotExist","history.go(-1)");    }	@include $repath.'/config.php';	Header("Location:ReData.php?mydbname=$b_dbname&mypath=$path".hReturnEcmsHashStrHref2(0));	exit();}?>
 |