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

📄 backup.php

📁 是个关于网格编程的程序
💻 PHP
字号:
<?php
//*****************************************
//       id: backup
//       EasyTalk V3.0 2008.5.6 20:50
//       by 仙踪云影
//*****************************************

define('is_admin_path', 'yes');
require_once '../common.php';
$smarty->template_dir = "templates";    
$smarty->compile_dir = "templates_c";     
$query = "select * from ".$DBprefix."settings";
$result=mysql_query($query);
$data = @mysql_fetch_array($result); 
$seokey=$data['seokey'];
$description=$data['description'];
$web_name=$data[0];
$web_name2=$data[1];
$web_miibeian=$data['web_miibeian'];
if ($admin_login !="yes" || $isadmin!=1)
header("Location: admin_login.php");
global $server, $db_username, $db_password, $db_name;
include("mydb.php");
$d=new db($server,$db_username,$db_password,$db_name);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="keywords" content="<?php echo $seokey;?>" />
<meta name="description" content="<?php echo $description;?> - EasyTalk" />
<link rel="shortcut icon" href="favicon.ico" />
<link rel="stylesheet" href="<?php echo $webaddr;?>/admin/images/default/style.css" type="text/css" media="screen" />
<title><?php echo $web_name?> - <?php echo $web_name2;?></title>
<link rel="shortcut icon" href="../favicon.ico" />
</head>
<body>
<div id="container">
	<div id="header">
		<h1><a href="index.php"><img src="<?=$webaddr?>/admin/images/default/logo.gif" /><span>首页</span></a></h1>
	</div>
 <div id="main">
		<div id="content">
            <div id="stream" class="message">
			<h3>后台管理 - 数据库管理 - 数据库备份</h3>
<?php
mysql_query("set names gbk");
if(!$_POST['act']){
$msgs[]="服务器备份目录为backup";
$msgs[]="对于较大的数据表,强烈建议使用分卷备份";
$msgs[]="只有选择备份到服务器,才能使用分卷备份功能";
show_msg($msgs);
?>
<form name="form1" method="post" action="backup.php">
  <table width="100%" border="1" cellpadding='0' cellspacing='1'>
    <tr align="center" class='header'><td colspan="2">数据备份</td></tr>
    <tr><td colspan="2">备份方式</td></tr>
    <tr><td><input type="radio" name="bfzl" value="quanbubiao" checked>        备份全部数据</td><td>备份全部数据表中的数据到一个备份文件</td></tr>
    <tr><td><input type="radio" name="bfzl" value="danbiao">备份单张表数据 
        <select name="tablename"><option value="">请选择</option>
          <?mysql_query("set names gbk");
		$d->query("show table status from $db_name");
		while($d->nextrecord()){
		echo "<option value='".$d->f('Name')."'>".$d->f('Name')."</option>";}
		?>
        </select></td><td>备份选中数据表中的数据到单独的备份文件</td></tr>
    <tr><td colspan="2">使用分卷备份</td></tr>
    <tr><td colspan="2"><input type="checkbox" name="fenjuan" value="yes">
        分卷备份 <input name="filesize" type="text" size="10"> K</td></tr>
    <tr><td colspan="2">选择目标位置</td></tr>
    <tr><td colspan="2"><input type="radio" name="weizhi" value="server" checked>备份到服务器</td></tr><tr class="cells"><td colspan='2'> <input type="radio" name="weizhi" value="localpc">
        备份到本地</td></tr>
    <tr><td colspan="2" align='center'><input type="submit" name="act" value="备份"></td></tr>
  </table></form>
<? 
}else{
if($_POST['weizhi']=="localpc"&&$_POST['fenjuan']=='yes')
	{$msgs[]="只有选择备份到服务器,才能使用分卷备份功能";
show_msg($msgs); pageend();}
if($_POST['fenjuan']=="yes"&&!$_POST['filesize'])
	{$msgs[]="您选择了分卷备份功能,但未填写分卷文件大小";
show_msg($msgs); pageend();}
if($_POST['weizhi']=="server"&&!writeable("./backup"))
	{$msgs[]="备份文件存放目录'./backup'不可写,请修改目录属性";
show_msg($msgs); pageend();}

if($_POST['bfzl']=="quanbubiao"){
if(!$_POST['fenjuan']){
mysql_query("set names gbk");
if(!$tables=$d->query("show table status from $db_name"))
	{$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();}
$sql="";
while($d->nextrecord($tables))
	{mysql_query("set names gbk");
	$table=$d->f("Name");
	$sql.=make_header($table);
	$d->query("select * from $table");
	$num_fields=$d->nf();
	while($d->nextrecord())
	{$sql.=make_record($table,$num_fields);}
	}
$filename=date("Ymd",time())."_all.sql";
if($_POST['weizhi']=="localpc") down_file($sql,$filename);
elseif($_POST['weizhi']=="server")
	{if(write_file($sql,$filename))
$msgs[]="全部数据表数据备份完成,生成备份文件'./backup/$filename'<br /><br /><br /><center><a href='backup.php'>点击返回</a></center>";
	else $msgs[]="备份全部数据表失败";
	show_msg($msgs);
	pageend();
	}
}else{
if(!$_POST['filesize'])
	{$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();}
mysql_query("set names gbk");
if(!$tables=$d->query("show table status from $db_name"))
	{$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();}
$sql=""; $p=1;
$filename=date("Ymd",time())."_all";
mysql_query("set names gbk");
while($d->nextrecord($tables))
{mysql_query("set names gbk");
	$table=$d->f("Name");
	$sql.=make_header($table);
	$d->query("select * from $table");
	$num_fields=$d->nf();
	while($d->nextrecord())
	{$sql.=make_record($table,$num_fields);
	if(strlen($sql)>=$_POST['filesize']*1000){
			$filename.=("_v".$p.".sql");
			if(write_file($sql,$filename))
			$msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";
			else $msgs[]="备份表-".$_POST['tablename']."-失败";
			$p++;
			$filename=date("Ymd",time())."_all";
			$sql="";}
	}
}
if($sql!=""){$filename.=("_v".$p.".sql");		
if(write_file($sql,$filename))
$msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";}
show_msg($msgs);
}
}
elseif($_POST['bfzl']=="danbiao"){
if(!$_POST['tablename'])
	{$msgs[]="请选择要备份的数据表"; show_msg($msgs); pageend();}
if(!$_POST['fenjuan']){
$sql=make_header($_POST['tablename']);
mysql_query("set names gbk");
$d->query("select * from ".$_POST['tablename']);
$num_fields=$d->nf();
while($d->nextrecord())
	{$sql.=make_record($_POST['tablename'],$num_fields);}
$filename=date("Ymd",time())."_".$_POST['tablename'].".sql";
if($_POST['weizhi']=="localpc") down_file($sql,$filename);
elseif($_POST['weizhi']=="server")
	{if(write_file($sql,$filename))
$msgs[]="表-".$_POST['tablename']."-数据备份完成,生成备份文件'./backup/$filename'";
	else $msgs[]="备份表-".$_POST['tablename']."-失败";
	show_msg($msgs);
	pageend();
	}
}
else{
if(!$_POST['filesize'])
	{$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();}
$sql=make_header($_POST['tablename']); $p=1; 
	$filename=date("Ymd",time())."_".$_POST['tablename'];
mysql_query("set names gbk");
	$d->query("select * from ".$_POST['tablename']);
	$num_fields=$d->nf();
	while ($d->nextrecord()) 
	{	
		$sql.=make_record($_POST['tablename'],$num_fields);
	   if(strlen($sql)>=$_POST['filesize']*1000){
			$filename.=("_v".$p.".sql");
			if(write_file($sql,$filename))
			$msgs[]="表-".$_POST['tablename']."-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";
			else $msgs[]="备份表-".$_POST['tablename']."-失败";
			$p++;
			$filename=date("Ymd",time())."_".$_POST['tablename'];
			$sql="";}
	}
if($sql!=""){$filename.=("_v".$p.".sql");		
if(write_file($sql,$filename))
$msgs[]="表-".$_POST['tablename']."-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";}
show_msg($msgs);
}}}
function write_file($sql,$filename)
{
$re=true;
if(!@$fp=fopen("./backup/".$filename,"w+")) {$re=false; echo "failed to open target file";}
if(!@fwrite($fp,$sql)) {$re=false; echo "failed to write file";}
if(!@fclose($fp)) {$re=false; echo "failed to close target file";}
return $re;
}
function down_file($sql,$filename)
{
	ob_end_clean();
	header("Content-Encoding: none");
	header("Content-Type: ".(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));
			
	header("Content-Disposition: ".(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'inline; ' : 'attachment; ')."filename=".$filename);
			
	header("Content-Length: ".strlen($sql));
	header("Pragma: no-cache");
			
	header("Expires: 0");
	echo $sql;
	$e=ob_get_contents();
	ob_end_clean();
}
function writeable($dir)
{
	
	if(!is_dir($dir)) {
	@mkdir($dir, 0777);
	}
	
	if(is_dir($dir)) 
	{
	
	if($fp = @fopen("$dir/test.test", 'w'))
		{
@fclose($fp);
	@unlink("$dir/test.test");
	$writeable = 1;
} 
	else {
$writeable = 0;
	}
}
	return $writeable;
}
function make_header($table)
{global $d;
$sql="DROP TABLE IF EXISTS ".$table."\n";
$d->query("show create table ".$table);
$d->nextrecord();
$tmp=preg_replace("/\n/","",$d->f("Create Table"));
$sql.=$tmp."\n";
return $sql;
}
function make_record($table,$num_fields)
{global $d;
$comma="";
mysql_query("set names gbk");
$sql .= "INSERT INTO ".$table." VALUES(";
for($i = 0; $i < $num_fields; $i++) 
{$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";}
$sql .= ")\n";
return $sql;
}
function show_msg($msgs)
{
$title="提示:";
echo "<table width='100%' border='0'  cellpadding='0' cellspacing='1'>";
echo "<tr><td>".$title."</td></tr>";
echo "<tr><td><br><ul>";
while (list($k,$v)=each($msgs))
	{
	echo "<li>".$v."</li>";
	}
echo "</ul></td></tr></table>";
}
function pageend()
{
exit();
}
?>
</div></div></div>
<?php include("templates/right.htm");?>
<div id="footer">
<font size=2><p><a>EasyTalk <font color=red><?php echo $version;?></font>&nbsp;&nbsp;&copy; 2007 通盛视界<a href="http://www.tonsenz.com" target="_blank">www.tonsenz.com</a></a></p>
<p><b><font color="#3169AD">Powered by</font>&nbsp<font color="#FF8400">EasyTalk <?=$version;?></font></b>&nbsp<a href="http://www.miibeian.gov.cn" target="_blank" id="miibeian"><?php echo $web_miibeian;?></p>
</font>
</div>
</body>
</html>

⌨️ 快捷键说明

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