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

📄 database.inc.php

📁 创建虚拟磁盘。用户可以创建磁盘
💻 PHP
字号:
<?php 
##
#	Project: PHPDisk
#	This is NOT a freeware, use is subject to license terms.
#
#	Site: http://www.phpdisk.com
#
#	$Id: database.inc.php 201 2009-03-02 06:57:21Z along $
#
#	Copyright (C) 2008-2009 PHPDisk Team. All Rights Reserved.
#
##

if(!defined('IN_PHPDISK') || !defined('IN_ADMINCP')) {
	exit('[PHPDisk] Access Denied');
}
phpdisk_admin();
define('SCRIPT_NAME',$item);

require_once PHPDISK_ROOT.'includes/database.func.php';

require_once lang('adm_'.SCRIPT_NAME);

$lang = array_merge($pub_lang,$lang);
switch($action){
	case 'optimize':
		
		$q = $db->list_tables($configs['dbname']);
		if($q){
			while ($rs = $db->fetch_row($q)) {
				$tables[][] = $rs[0];
			}
		}
		$db->free($q);
		unset($rs);

				if($task =='optimize'){

			for($i=0;$i<count($tables);$i++){
				$db->query("OPTIMIZE TABLE `".$tables[$i][0]."`;");
			}
			$sysmsg[] = $lang['optimize_success'];
			redirect(urr("admincp","item=database&action=optimize"),$sysmsg);
		}else{
			require_once template(SCRIPT_NAME,ADMIN_TPL_NAME);
		}
			
	break;
	
	case 'backup':
		
		if($task =='backup'){
			$tables = gpc('tables','P',array());
			$tableid = gpc('tableid','G',0);
			$fileid = (int)gpc('fileid','G',0);
			$startfrom = (int)gpc('startfrom','G',0);
			$random = gpc('random','G','');
			$sizelimit = (int)gpc('sizelimit','GP',0);
			$fileid = $fileid ? $fileid : 1;

						$bak_dir = PHPDISK_ROOT.'./system/data/';
			$default_index = $bak_dir.'index.htm';
			if(!is_dir($bak_dir)){
				mkdir($bak_dir,0777);
			}
			if(!file_exists($default_index)){
				write_file($default_index,'PHPDisk');
			}

			if($tables && $fileid==1){
				if(!isset($tables) || !is_array($tables)){
					$sysmsg[] = $lang['please_select_backup_db'];
					redirect($_SERVER['HTTP_REFERER'],$sysmsg);
				}
				
			    $random = random(8);
			    cache_write('backup_temp_tables.php', $tables);
			}else{
			    if(!$tables = cache_read('backup_temp_tables.php')){
					$sysmsg[] = $lang['cannot_write_backup_database_list'];
					redirect($_SERVER['HTTP_REFERER'],$sysmsg);
				}
			}
			
			$sqldump = '';
			$tableid = $tableid ? ($tableid - 1) : 0;
			$startfrom = $startfrom ? $startfrom : 0;
			$tablenumber = count($tables);

			for($i = $tableid; $i < $tablenumber && strlen($sqldump) < $sizelimit * 1000; $i++){
				$sqldump .= sql_dumptable($tables[$i], $startfrom, strlen($sqldump));
				$startfrom = 0;
			}
			
			if(trim($sqldump)){
				$sqldump = "# Database backup data,auto-generated by PHPDisk. ".LF."# -------------------------------------------".LF.LF.$sqldump;

				$tableid = $i;
				$filename = $configs['dbname'].'_'.date('Ymd').'_'.$random.'_'.$fileid.'.sql';
				$fileid++;
				
				$bakfile = $bak_dir.$filename;
				if(!is_writable($bak_dir)){
					$sysmsg[] = $lang['sql_cannot_write'];
					redirect($_SERVER['HTTP_REFERER'],$sysmsg);
				}
				file_put_contents($bakfile, $sqldump);

				$gourl = 'item=database&action=backup&task=backup&sizelimit='.$sizelimit.'&tableid='.$tableid.'&fileid='.$fileid.'&startfrom='.$startrow.'&random='.$random;
				$sysmsg[] = $lang['backup_file'].': '.$filename.' ... '.$lang['backup_write_success'];
				$sysmsg[] = '<span class="txtred">'.$lang['backup_database_warning'].'</span>';
				redirect(urr('admincp',$gourl),$sysmsg);
				
			}else{
				cache_delete('backup_temp_tables.php');
			    $sysmsg[] = $lang['backup_database_success'];
				redirect(urr('admincp','item=database&action=restore'),$sysmsg);
			}
				}else{
			$size = $bktables = $bkresults = $results = array();
			$k = 0;
			$totalsize = 0;
			$sql = "SHOW TABLES FROM ".$configs['dbname'];
			$q = $db->query($sql);
			
			while($rs = $db->fetch_row($q)){
				$tables[$k] = $rs[0];
				$count = $db->fetch_one_array("SELECT count(*) as number FROM $rs[0] WHERE 1");
				$results[$k] = $count['number'];
				$bktables[$k] = $rs[0];
				$bkresults[$k] = $count['number'];
                $q2 = $db->query("SHOW TABLE STATUS FROM `".$configs['dbname']."` LIKE '".$rs[0]."'");
				$s = $db->fetch_array($q2);
				$size[$k] = round($s['Data_length']/1024/1024, 2);
				$totalsize += $size[$k];
				$k++;
			}
			$db->free($q);
			unset($rs);
			require_once template(SCRIPT_NAME,ADMIN_TPL_NAME);
		}	
	break;
	
	case 'restore':
	
		if($task =='restore'){
		
			$pre = gpc('pre','G','');
			$fileid = (int)gpc('fileid','G',0);
			if($filename && get_extension($filename)=='sql'){
			
				$sql_file = PHPDISK_ROOT.'./system/data/'.$filename;
				if(!file_exists($sql_file)){
					$sysmsg[] = $sql_file.' ...... '.$lang['file_not_exists'];
					redirect(urr("admincp","item=database&action=restore"),$sysmsg);
				}
				$sql = file_get_contents($sql_file);
				sql_execute($sql);
				$sysmsg[] = $lang['restore_database_success'];
				redirect(urr("admincp","item=database&action=backup"),$sysmsg);
				
			}else{
			
				$fileid = $fileid ? $fileid : 1;
				$filename = $pre.$fileid.'.sql';
				$sql_file = './system/data/'.$filename;
				if(file_exists($sql_file)){
					$sql = file_get_contents($sql_file);
					sql_execute($sql);
					$fileid++;
					$sysmsg[] = $lang['backup_file'].': '.$filename.' ...... '.$lang['restore_sucess'];
					$sysmsg[] = '<span class="txtred">'.$lang['restore_database_warning'].'</span>';
					$gourl = "item=database&action=restore&task=restore&pre=$pre&fileid=$fileid";
					redirect(urr("admincp",$gourl),$sysmsg);
					
				}else{
					$sysmsg[] = $lang['restore_database_success'];
					redirect(urr("admincp","item=database&action=restore"),$sysmsg);
				}
			}
				}else{
		
			 $sqlfiles = glob('./system/data/*.sql');

			 if(is_array($sqlfiles)){
				 $prepre = '';
				 $info = $infos = array();
				 foreach($sqlfiles as $k => $sqlfile)
				 {
					 preg_match("/([a-z0-9_]+_[0-9]{8}_[0-9a-z]{8}_)([0-9]+)\.sql/i",basename($sqlfile),$num);
					 $info['filename'] = basename($sqlfile);
					 $info['filesize'] = round(filesize($sqlfile)/(1024*1024), 2);
					 $info['maketime'] = date('Y-m-d H:i:s', filemtime($sqlfile));
					 $info['pre'] = $num[1];
					 $info['number'] = $num[2];
					 if(!$k) $prebgcolor = '#CCCCCC';
					 if($info['pre'] == $prepre){
						 $info['bgcolor'] = $prebgcolor;
					 }else{
						 $info['bgcolor'] = $prebgcolor == '#CCCCCC' ? '#E4EDF9' : '#CCCCCC';
					 }
					 $prebgcolor = $info['bgcolor'];
					 $prepre = $info['pre'];
					 $infos[] = $info;
				 }
			 }	
			require_once template(SCRIPT_NAME,ADMIN_TPL_NAME);
		}	
	break;
	
	case 'delete':
		$pre = gpc('pre','G','');
		$sqlfiles = glob('./system/data/*.sql');
		if(is_array($sqlfiles)){
			foreach($sqlfiles as $k => $sqlfile){
				if(preg_match("/($pre)([0-9]+)\.sql/i",basename($sqlfile))){
					$sysmsg[] = $lang['delete'].'&nbsp;&nbsp;'.$sqlfile.' ...... '.$lang['success'];
					@unlink($sqlfile);
				}
			}
		}
		redirect(urr("admincp","item=database&action=restore"),$sysmsg);
	break;
}

?>

⌨️ 快捷键说明

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