114 lines
3.2 KiB
PHP
114 lines
3.2 KiB
PHP
<?php
|
||
require_once("admin-header.php");
|
||
|
||
if (!(isset($_SESSION[$OJ_NAME.'_'.'administrator']))){
|
||
echo "<a href='../loginpage.php'>Please Login First!</a>";
|
||
exit(1);
|
||
}
|
||
?>
|
||
|
||
<div class="container">
|
||
<br>
|
||
<br>
|
||
<br>
|
||
<br>
|
||
|
||
<?php
|
||
if(isset($_POST['do'])){
|
||
|
||
require_once(dirname(__FILE__)."/../include/backup.php");
|
||
$target=$OJ_DATA."/0/".$DB_NAME."_".(date('Y-m-d H:i:s')).".sql";
|
||
$db_file=basename($target);
|
||
$dirpath=dirname($target);
|
||
if (!file_exists($dirpath)) {
|
||
mkdir($dirpath);
|
||
}
|
||
$config = array(
|
||
'host' => $DB_HOST,
|
||
'port' => 3306,
|
||
'user' => $DB_USER,
|
||
'password' => $DB_PASS,
|
||
'database' => $DB_NAME,
|
||
'charset' => 'utf-8',
|
||
'target' => $target
|
||
);
|
||
$bak = new DatabaseTool($config);
|
||
$bak->backup();
|
||
|
||
function addDirToZip($path, $zip) {
|
||
global $OJ_DATA;
|
||
if ($path=="data/0") return;
|
||
$handler = opendir($path); //打开当前文件夹由$path指定。
|
||
/*
|
||
循环的读取文件夹下的所有文件和文件夹
|
||
其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,
|
||
为了不陷于死循环,所以还要让$filename !== false。
|
||
一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环
|
||
*/
|
||
while (($filename = readdir($handler)) !== false) {
|
||
if ($filename != "." && $filename != "..") {//文件夹文件名字为'.'和‘..’,不要对他们进行操作
|
||
if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归
|
||
addDirToZip($path . "/" . $filename, $zip);
|
||
} else { //将文件加入zip对象
|
||
$zip->addFile($path . "/" . $filename);
|
||
}
|
||
}
|
||
}
|
||
@closedir($path);
|
||
}
|
||
|
||
$zip = new ZipArchive();
|
||
$ztar=dirname($target)."/backup_".(date('Y-m-d H:i:s')).".zip";;
|
||
//echo $ztar;
|
||
if ($zip->open($ztar, ZipArchive::CREATE) === TRUE) {
|
||
chdir( dirname($OJ_DATA) );
|
||
if(is_dir("data"))
|
||
addDirToZip("data", $zip); //测试数据
|
||
chdir(realpath(dirname(dirname(__FILE__))));
|
||
if($OJ_SaaS_ENABLE && $DOMAIN!=$domain){
|
||
if(is_dir("upload/$domain"))
|
||
addDirToZip("upload/$domain", $zip); //子域题目图片
|
||
}else{
|
||
if(is_dir("upload/"))
|
||
addDirToZip("upload", $zip); //题目图片
|
||
}
|
||
chdir($OJ_DATA."/0");
|
||
if(file_exists($db_file)){
|
||
$zip->addFile($db_file);
|
||
}
|
||
$zip->close(); //关闭处理的zip文件
|
||
}
|
||
|
||
?>
|
||
|
||
|
||
<?php
|
||
}else{
|
||
?>
|
||
<br>
|
||
<br>
|
||
<form method="post" action="backup.php">
|
||
<input type="submit" name="do" value="Backup">
|
||
</form>
|
||
|
||
<?php
|
||
|
||
|
||
}
|
||
?>
|
||
|
||
<button onclick="phpfm(0)" >查看备份文件</button>
|
||
<script src='../template/bs3/jquery.min.js' ></script>
|
||
|
||
<script>
|
||
function phpfm(pid){
|
||
//alert(pid);
|
||
$.post("phpfm.php",{'frame':3,'pid':pid,'pass':''},function(data,status){
|
||
if(status=="success"){
|
||
document.location.href="phpfm.php?frame=3&pid="+pid;
|
||
}
|
||
});
|
||
}
|
||
</script>
|
||
</div>
|