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

📄 sql.php

📁 CMS系统 提供学习研究修改最好了 比流行的一些CMS简单 但是更容易理解 是帮助你学习PHPCMS系统的好东东哦
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/*################################################################ mysql backup/restore script based on:#### backupDB() - MySQL database backup utility## backupDB() by James Heinrich <info@silisoftware.com>## available at http://www.silisoftware.com#### modified, extended, migrated bzrudi71#################################################################*/$version="1.2.2";/* query Admin email address (in case of backup failure a notice is send) */$adr_query=$GLOBALS['db']->Execute("SELECT email FROM ".PREFIX."users						WHERE groups like '%;".get_group_id_from_name('admin').";%' ORDER BY id ASC");$address=$adr_query->FetchRow();// If any MySQL table errors occur, a notice will be sent hereif(!empty($address[0])):define('ADMIN_EMAIL', "$address[0]");endif;/* get timestamp from config. we append this to the backupfilenames for security reasons...If missing store new value once*/;if(strlen($time_query=read_config("file_time"))>2){	$backuptimestamp    = $time_query;}else{	$backuptimestamp    = time();	write_config("file_time", $backuptimestamp);}define('BACKTICKCHAR',   '');define('QUOTECHAR',      '\'');define('BUFFER_SIZE',    32768);define('TABLES_PER_COL', 40);$GZ_enabled         = (bool) function_exists('gzopen');$DHTMLenabled       = TRUE;  // set $DHTMLenabled = FALSE to prevent JavaScript errors in Netscape                             // set $DHTMLenabled = TRUE to get the nice DHTML display in IE 4.0+/* check for OS to make sure the right line terminator is used */(strtoupper(substr(PHP_OS,0,3)) == "WIN") ? $LineTerminator = "\r\n" : $LineTerminator ="\n";//$LineTerminator     = "\n";  // set to "\n"   for UNIX-style                             // set to "\r\n" for Windows-style                             // set to "\r"   for Macintosh-style$fullbackupfilename = 'db_backup_full-'.$backuptimestamp.'.sql'.($GZ_enabled ? '.gz' : '');$partbackupfilename = 'db_backup_partial-'.$backuptimestamp.'.sql'.($GZ_enabled ? '.gz' : '');$strubackupfilename = 'db_backup_structure-'.$backuptimestamp.'.sql'.($GZ_enabled ? '.gz' : '');$tempbackupfilename = 'db_backup.temp.sql'.($GZ_enabled ? '.gz' : '');$db_connect_filename= 'db_connect.'.$backuptimestamp.'.php';/* OK, now we have to rebuild the "real" path to the users webroot. This is some kindof trick but works. The original way failed on vservers and ~xyz homes ;-) */// we use the scriptname to build the path/*$scriptname=$_SERVER['PATH_TRANSLATED'];if(empty($scriptname)): $scriptname=$HTTP_SERVER_VARS['PATH_TRANSLATED']; endif; //globals on*/$backupabsolutepath = realpath(TOP_DIR).'/sql/';/* db_connect.php file backup (we do this silent as it's not of users interest)*/@copy($backupabsolutepath.'db_connect.php', $backupabsolutepath."$db_connect_filename");chmod($backupabsolutepath.$db_connect_filename,0600);	// change permissions (SECURITY)if (!function_exists('getmicrotime')) {	function getmicrotime() {		list($usec, $sec) = explode(' ', microtime());		return ((float) $usec + (float) $sec);	}}echo "<blockquote>";print("<H2>$mysql_info_header $version</H2>");if (isset($_REQUEST['StartBackup'])) {	echo '<A class="admin" HREF='.@$PHP_SELF.'?page=sql&plugins=1>'.$mysql_cancel.'</A><BR><BR>';}if ($DHTMLenabled) {	echo '<SPAN ID="statusinfo"></SPAN>';} else {	print("$mysql_DHTML_hint");}ob_flush();flush();if (isset($_REQUEST['StartBackup']) && ($_REQUEST['StartBackup'] == 'partial')) {	echo '<SCRIPT LANGUAGE="JavaScript">'.$LineTerminator.'<!--'.$LineTerminator.'function CheckAll(checkornot) {'.$LineTerminator;	echo 'for (var i = 0; i < document.SelectedTablesForm.elements.length; i++) {'.$LineTerminator;	echo '  document.SelectedTablesForm.elements[i].checked = checkornot;'.$LineTerminator;	echo '}'.$LineTerminator.'}'.$LineTerminator.'-->'.$LineTerminator.'</SCRIPT>';	echo '<FORM NAME="SelectedTablesForm" METHOD="POST" ACTION="'.@$PHP_SELF.'?page=sql&plugins=1">';	$db_name_list = mysql_list_dbs();	while (list($dbname) = mysql_fetch_array($db_name_list)) {		if (!defined('DB_NAME') || (defined('DB_NAME') && (DB_NAME == $dbname))) {			$tables = mysql_list_tables($dbname);			if (is_resource($tables)) {				echo '<TABLE class=admintable><TR><TH class=maintable COLSPAN="'.ceil(mysql_num_rows($tables) / TABLES_PER_COL).'"><B>'.$dbname.'</B></TH></TR><TR><TD class=admintable>';				$tablecounter = 0;				while (list($tablename) = mysql_fetch_array($tables)) {					if ($tablecounter++ >= TABLES_PER_COL) {						echo '</TD><TD class=admintable>';						$tablecounter = 0;					}					$SQLquery = 'SELECT COUNT(*) AS num FROM '.$tablename;					mysql_select_db($dbname);					$result = mysql_query($SQLquery);					$row = mysql_fetch_array($result);					echo '<INPUT TYPE="CHECKBOX" NAME="SelectedTables['.htmlentities($dbname, ENT_QUOTES).'][]" VALUE="'.$tablename.'" CHECKED>'.$tablename.' ('.$row['num'].')<BR>';				}				echo '</TD></TR></TABLE><BR>';			}		}	}	print("<INPUT TYPE='BUTTON' OnClick='CheckAll(true)' VALUE='$mysql_select_all'>");	print("<INPUT TYPE='BUTTON' OnClick='CheckAll(false)' VALUE='$mysql_deselect_all'>");	echo '<INPUT TYPE="HIDDEN" NAME="StartBackup" VALUE="complete">';	print("<INPUT TYPE='SUBMIT' NAME='SelectedTablesOnly' VALUE='$mysql_create_backup'></FORM>");	print("<A class='admin' HREF='admin.php?page=sql&plugins=1'>$mysql_back_menu</A>");} else if (isset($_REQUEST['StartBackup'])) {	/* OK do it the local file path way. fails at servers using "private homes i.e ~bzrudi/ */	if (($GZ_enabled && ($zp = gzopen($backupabsolutepath.$tempbackupfilename, 'wb')))	|| (!$GZ_enabled && ($fp = fopen($backupabsolutepath.$tempbackupfilename, 'wb')))){		$fileheaderline = '# LinPHA MySQL backup v'.$version.''.$LineTerminator.'# mySQL backup ('.date('F j, Y g:i a').')   Type = ';		if ($GZ_enabled) {			gzwrite($zp, $fileheaderline, strlen($fileheaderline));		} else {			fwrite($fp, $fileheaderline, strlen($fileheaderline));		}		if ($_REQUEST['StartBackup'] == 'structure') {			if ($GZ_enabled) {				gzwrite($zp, 'Structure Only'.$LineTerminator.$LineTerminator, strlen('Structure Only'.$LineTerminator.$LineTerminator));			} else {				fwrite($fp, 'Structure Only'.$LineTerminator.$LineTerminator, strlen('Structure Only'.$LineTerminator.$LineTerminator));			}			$backuptype = 'full';			unset($SelectedTables);			$db_name_list = mysql_list_dbs();			while (list($dbname) = mysql_fetch_array($db_name_list)) {				if (!defined('DB_NAME') || (defined('DB_NAME') && (DB_NAME == $dbname))) {					$tables = mysql_list_tables($dbname);					if (is_resource($tables)) {						$tablecounter = 0;						while (list($tablename) = mysql_fetch_array($tables)) {							$SelectedTables["$dbname"][] = $tablename;						}					}				}			}		} else if (isset($_REQUEST['SelectedTables']) && is_array($_REQUEST['SelectedTables'])) {			if ($GZ_enabled) {				gzwrite($zp, 'Selected Tables Only'.$LineTerminator.$LineTerminator, strlen('Selected Tables Only'.$LineTerminator.$LineTerminator));			} else {				fwrite($fp, 'Selected Tables Only'.$LineTerminator.$LineTerminator, strlen('Selected Tables Only'.$LineTerminator.$LineTerminator));			}			$backuptype = 'partial';			$SelectedTables = $_REQUEST['SelectedTables'];		} else {			if ($GZ_enabled) {				gzwrite($zp, 'Complete'.$LineTerminator.$LineTerminator, strlen('Complete'.$LineTerminator.$LineTerminator));			} else {				fwrite($fp, 'Complete'.$LineTerminator.$LineTerminator, strlen('Complete'.$LineTerminator.$LineTerminator));			}			$backuptype = 'full';			unset($SelectedTables);			$db_name_list = mysql_list_dbs();			while (list($dbname) = mysql_fetch_array($db_name_list)) {				if (!defined('DB_NAME') || (defined('DB_NAME') && (DB_NAME == $dbname))) {					$tables = mysql_list_tables($dbname);					if (is_resource($tables)) {						$tablecounter = 0;						while (list($tablename) = mysql_fetch_array($tables)) {							$SelectedTables["$dbname"][] = $tablename;						}					}				}			}		}		if (!$DHTMLenabled) {			print("$mysql_table_checks <BR><BR>");		}		$TableErrors = array();		foreach ($SelectedTables as $dbname => $selectedtablesarray) {			mysql_select_db($dbname);			foreach ($selectedtablesarray as $selectedtablename) {				if ($DHTMLenabled) {					echo '<SCRIPT>statusinfo.innerHTML="'.$mysql_table_check.' <B>'.$dbname.'.'.$selectedtablename.'</B>"</SCRIPT>';				}				ob_flush();				flush();				$result = mysql_query('CHECK TABLE '.$selectedtablename);				while ($row = mysql_fetch_array($result)) {					if ($row['Msg_text'] == 'OK') {						mysql_query('OPTIMIZE TABLE '.$selectedtablename);					} else {						$TableErrors[] = $row['Table'].' ['.$row['Msg_type'].'] '.$row['Msg_text'];						if (!isset($TableErrorTables) || !is_array($TableErrorTables) || !in_array($dbname.'.'.$selectedtablename, $TableErrorTables)) {							$TableErrorDB[]     = $dbname;							$TableErrorTables[] = $selectedtablename;						}					}				}			}		}		if ($DHTMLenabled) {			echo '<SCRIPT>statusinfo.innerHTML=""</SCRIPT>';		}		if (isset($TableErrorTables) && is_array($TableErrorTables)) {			for ($t = 0; $t < count($TableErrorTables); $t++) {				mysql_select_db($TableErrorDB["$t"]);				$fixresult = mysql_query('REPAIR TABLE '.$TableErrorTables["$t"].' EXTENDED');				while ($fixrow = mysql_fetch_array($fixresult)) {					$TableErrors[] = $fixrow['Table'].' ['.$fixrow['Msg_type'].'] '.$fixrow['Msg_text'];				}			}		}		if (count($TableErrors) > 0) {			if (defined('ADMIN_EMAIL') && ADMIN_EMAIL) {				mail(ADMIN_EMAIL, 'MySQL Table Error Report', implode($LineTerminator.' * ', $TableErrors));			}			echo '<B>TABLE ERRORS!</B><UL><LI>'.implode('</LI><LI>', $TableErrors).'</LI></UL>';			exit;		}		if ($DHTMLenabled) {			echo '<BR><B><SPAN ID="topprogress">'.$mysql_progress.'</SPAN></B><BR>';		}		$overallrows = 0;		foreach ($SelectedTables as $dbname => $value) {			mysql_select_db($dbname);			echo '<TABLE class=admintable><TR><TH class=maintable COLSPAN="'.ceil(count($SelectedTables["$dbname"]) / TABLES_PER_COL).'"><B>'.$dbname.'</B></TH></TR><TR><TD class=admintable>';			$tablecounter = 0;			for ($t = 0; $t < count($SelectedTables["$dbname"]); $t++) {				if ($tablecounter++ >= TABLES_PER_COL) {					echo '</TD><TD class=admintable>';					$tablecounter = 1;				}				$SQLquery = 'SELECT COUNT(*) AS num FROM '.$SelectedTables["$dbname"]["$t"];				$result = mysql_query($SQLquery);				$row = mysql_fetch_array($result);				$rows["$t"] = $row['num'];				$overallrows += $rows["$t"];				echo '<SPAN ID="rows_'.$dbname.'_'.$SelectedTables["$dbname"]["$t"].'">'.$SelectedTables["$dbname"]["$t"].' ('.number_format($rows["$t"]).' records)</span><BR>';			}			echo '</TD></TR></TABLE><BR>';		}		$starttime = getmicrotime();		$alltablesstructure = '';		foreach ($SelectedTables as $dbname => $value) {			mysql_select_db($dbname);			for ($t = 0; $t < count($SelectedTables["$dbname"]); $t++) {				if ($DHTMLenabled) {					echo '<SCRIPT>statusinfo.innerHTML = " '.$mysql_struct_msg.' <B>'.$dbname.'.'.$SelectedTables["$dbname"]["$t"].'</B>"</SCRIPT>';				}				$fieldnames     = array();				$structurelines = array();				$result = mysql_query('SHOW FIELDS FROM '.$SelectedTables["$dbname"]["$t"]);				while ($row = mysql_fetch_array($result)) {					$structureline  = $row['Field'];					$structureline .= ' '.$row['Type'];					$structureline .= ' '.($row['Null'] ? '' : 'NOT ').'NULL';					if (isset($row['Default'])) {						switch ($row['Type']) {							case 'tinytext':							case 'tinyblob':							case 'text':							case 'blob':							case 'mediumtext':							case 'mediumblob':							case 'longtext':							case 'longblob':								// no default values								break;							default:								$structureline .= ' default \''.$row['Default'].'\'';								break;						}					}					$structureline .= ($row['Extra'] ? ' '.$row['Extra'] : '');					$structurelines[] = $structureline;					$fieldnames[] = $row['Field'];				}				mysql_free_result($result);				$tablekeys    = array();				$uniquekeys   = array();				$fulltextkeys = array();				$result = mysql_query('SHOW KEYS FROM '.$SelectedTables["$dbname"]["$t"]);				while ($row = mysql_fetch_array($result)) {					$uniquekeys[$row['Key_name']] = FALSE;					if ($row['Non_unique'] == 0) {						$uniquekeys[$row['Key_name']] = TRUE;					}					$fulltextkeys[$row['Key_name']] = FALSE;

⌨️ 快捷键说明

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