ÿØÿà JFIF ÿÛ „ ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /var/www/html/thietkewebvumi.com/admin_new/mod/ |
<?php class backupdb{ function backupdb(){ global $CORE; switch ($CORE->input['code']){ default : $this-> index(); break; case 'backup' : $this-> backup(); break; case 'restore' : $this-> restore(); break; } } function index(){ global $CORE, $INFO, $TBS; $TBS->LoadTemplate(ADMIN_PATH."skin/backupdb.html"); // get all system informations if (!($sys['server']=$_SERVER["SERVER_SOFTWARE"])) $sys['server']='NO INFO'; if (function_exists("phpversion")) { $tmp=phpversion(); $phpvers=$tmp[0].$tmp[1].$tmp[2]; if ($phpvers>=4.3) $sys['php']=$tmp; else $sys['php']='NO INFO'; } else { $sys['php']='NO INFO'; } $sys['time'] = date('h:i:s',time()); if (@ini_get("safe_mode")=="1") $sys['safe_mode']='On'; else $sys['safe_mode']='Off'; if (function_exists("gzopen")) $sys['gzip']='Yes'; else $sys['gzip']='No'; if (!function_exists("mysql_get_server_info")) $sys['mysqls']='NO INFO'; else $sys['mysqls']=@mysql_get_server_info(); // print system informations $sysinfo[] = $sys; $TBS->MergeBlock('sys',$sysinfo); $TBS->Show(TBS_OUTPUT+TBS_NOTHING); } function backup(){ global $CORE, $INFO, $DB, $TBS, $db_selected; if($CORE->input['dobackup']==0 || $CORE->input['dobackup']=="" || $CORE->input['dobackup']==null){ $TBS->LoadTemplate(ADMIN_PATH."skin/backupdb_backup.html"); $dbList = mysql_list_dbs($DB->connection_id); while ($row = mysql_fetch_object($dbList)) { $dbString[] = $row->Database; } if(!$CORE->input['dbs']){ $db_selected = $INFO['sql_database']; }else{ $db_selected = $CORE->input['dbs']; } // Get list of tables in the database and output form $result = mysql_list_tables($db_selected); $num_tables = mysql_num_rows($result); for ($i = 0; $i < $num_tables; $i++) { $tablename = mysql_tablename($result, $i); $checkboxString[] = $tablename; } $TBS->MergeBlock('dbs',$dbString); $TBS->MergeBlock('tab',$checkboxString); $TBS->Show(TBS_OUTPUT+TBS_NOTHING); }else{ $sql_string = ""; $backup_structure = ($CORE->input['structure'] == "on") ? 1 : 0; $backup_data = ($CORE->input['data'] == "on") ? 1 : 0; $j = 0; $num_tables = $CORE->input['numtab']; for ($i = 0; $i < $num_tables; $i++) { if ($CORE->input['box'.$i]) { $tablename_array[$j] = $CORE->input['box'.$i]; $j++; } } $selected_db = $CORE->input['dbs']; @mysql_select_db($selected_db,$DB->connection_id); $sql_string = $this->backup_data($tablename_array, $backup_structure, $backup_data); $time = date('dMy',time()); header("Content-type: application/force-download"); header("Content-Disposition: attachment; filename={$selected_db}{$time}.bak"); echo $sql_string; exit; } } // backup functions - don't touch ============================================================================== function backup_data($tablename_array, $backup_structure, $backup_data) { for ($i = 0; $i <count($tablename_array); $i++) { $table_sql_string = ""; $data_sql_string = ""; if ($backup_structure) $table_sql_string = $this->create_table_sql_string($tablename_array[$i]); if ($backup_data) $data_sql_string = $this->create_data_sql_string($tablename_array[$i]); if ($table_sql_string) $sql_string = sprintf("%s\n%s", $sql_string, $table_sql_string); if ($data_sql_string) $sql_string = sprintf("%s\n%s", $sql_string, $data_sql_string); } return $sql_string; } function create_table_sql_string($tablename){ // Start the SQL string for this table $sql_string = "CREATE TABLE $tablename"; // Get the field info and output to a string in the correct MySQL syntax $result = mysql_query("DESCRIBE $tablename"); while ($field_info = mysql_fetch_array($result)){ $field_name = $field_info[0]; $field_type = $field_info[1]; $field_not_null = ($field_info[2] == "YES") ? "" : " NOT NULL"; $field_default = ($field_info[4] == NULL) ? "" : sprintf(" default '%s'", $field_info[4]);; $field_auto_increment = ($field_info[5] == NULL) ? "" : sprintf(" %s", $field_info[5]); $field_string = sprintf("%s, %s %s%s%s%s", $field_string, $field_name, $field_type, $field_not_null, $field_auto_increment, $field_default); } // Get the index info and output to a string in the correct MySQL syntax $result = mysql_query("SHOW INDEX FROM $tablename"); while ($index_info = mysql_fetch_array($result)) { $index_name = $index_info[2]; $index_unique = $index_info[1]; $index_field_name = $index_info[4]; $index_type = $index_info[10]; if ($index_name == "PRIMARY") $index_name = "PRIMARY KEY"; if ($index_unique == "1" && $index_type != "FULLTEXT") $index_name = sprintf("KEY %s", $index_name); if ($index_unique == "0" && $index_name != "PRIMARY KEY") $index_name = sprintf("UNIQUE KEY %s", $index_name); if ($index_type == "FULLTEXT") $index_name = sprintf("FULLTEXT KEY %s", $index_name); $index_string = sprintf("%s, %s (%s)", $index_string, $index_name, $index_field_name); } // Get the table type and output it to a string in the correct MySQL syntax $result = mysql_query("SHOW TABLE STATUS"); while ($status_info = mysql_fetch_array($result)) { for ($i = 0; $i < count($status_info); $i++) { if ($status_info[0] == $tablename) $table_type = sprintf("TYPE=%s", $status_info[1]); } } // Remove the first 2 characters (", ") from the field string $field_string = substr($field_string, 2); // Append the index string to the field string $field_string = sprintf("%s%s", $field_string, $index_string); // Put the field string in parantheses $field_string = sprintf("(%s)", $field_string); // Finalise the MySQL create table string $sql_string = sprintf("%s %s %s", $sql_string, $field_string, $table_type); return $sql_string; } function create_data_sql_string($tablename){ global $DB; // Initialise the field string $field_string = ""; // Get field names from MySQL and output to a string in the correct MySQL syntax $result = mysql_query("SELECT * FROM $tablename"); for ($i = 0; $i < mysql_num_fields($result); $i++) { $meta = mysql_fetch_field($result, $i); $field_string = sprintf("%s, %s", $field_string, $meta->name); } // Remove the first 2 characters (", ") from the field string $field_string = substr($field_string, 2); // Put the field string in parantheses $field_string = sprintf("(%s)", $field_string); // Get table data from MySQL and output to a string in the correct MySQL syntax while ($row = mysql_fetch_row($result)) { // Initialise the data string $data_string = ""; // Loop through the records and append data to the string after escaping for ($i = 0; $i < mysql_num_fields($result); $i++) { $data_string = sprintf("%s, '%s'", $data_string, mysql_escape_string($row[$i])); } // Remove the first 2 characters (", ") from the data string $data_string = substr($data_string, 2); // Put the data string in parantheses and prepend "VALUES " $data_string = sprintf("VALUES (%s)", $data_string); // Finalise the MySQL insert into string for this record $sql_string = sprintf("%sINSERT INTO %s %s %s\n", $sql_string, $tablename, $field_string, $data_string); } return $sql_string; } // end - backup funtions ============================================================================================== function restore(){ global $CORE, $INFO, $DB, $TBS; if(!$CORE->input['dbs']){ $TBS->LoadTemplate(ADMIN_PATH."skin/backupdb_restore.html"); $dbList = mysql_list_dbs($DB->connection_id); while ($row = mysql_fetch_object($dbList)) { $dbString[] = $row->Database; } $TBS->MergeBlock('dbs',$dbString); $TBS->Show(TBS_OUTPUT+TBS_NOTHING); }else{ $filename = $_FILES['filename']['name']; $ret_val = move_uploaded_file($_FILES['filename']['tmp_name'], "./$filename"); $db_selected = $CORE->input['dbs']; $restore_structure = ($CORE->input['structure'] == "on") ? 1 : 0; $restore_data = ($CORE->input['data'] == "on") ? 1 : 0; if (!$ret_val) echo "Could not upload file."; $this->restore_data("./$filename", $restore_structure, $restore_data, $db_selected); unlink("./$filename"); } } function restore_data($filename, $restore_structure, $restore_data, $db_selected){ $handle = fopen("$filename", "r"); while (!feof($handle)){ $buffer = fgets($handle); if ($buffer != "\n" && $buffer != "") { // if this line is a create table query then check if the table already exists if (substr($buffer, 0, 12) == "CREATE TABLE") { if ($restore_structure) { $tablename = explode(" ", $buffer); $tablename = $tablename[2]; $result = mysql_list_tables($db_selected); for ($i = 0; $i < mysql_num_rows($result); $i++) { if (mysql_tablename($result, $i) == $tablename) { $rand = substr(md5(time()), 0, 8); $random_tablename = sprintf("%s_bak_%s", $tablename, $rand); mysql_query("RENAME TABLE $tablename TO $random_tablename"); echo "Sao lưu thà nh công bảng dữ liệu $tablename thà nh $random_tablename.<br />\n"; } } $result = mysql_query($buffer); if (!$result) { echo mysql_error()."<br />\n"; } else { echo "Phục hồi thà nh công bảng dữ liệu '$tablename'.<br />\n"; } } } else { if ($restore_data) { $result = mysql_query($buffer); if (!$result) echo mysql_error()."<br />\n"; } } } } fclose($handle); } } $run = new backupdb(); ?>