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>
|