View file admin_list/backup.php

File size: 4.57Kb
<?
/*
=============================================
Движок: SHCMS Engine
=============================================
Название файла: Управление базой данных
=============================================
Official website: http://shcms.ru
=============================================
Код зашищен авторскими правами
=============================================
*/
define('SHCMS', true);
include_once'../system/inc/basic_settings.php';
$shcmsengine['title'] = 'SHCMS Engine Управление базой данных';
include_once'../template/head.php';
registrat();
$adminka ->admin();

if($_POST['submit'])
{
    $submit = $_POST['submit'];
}
if(!$submit)
{
$sql = "SHOW TABLES ";
$result = mysql_query($sql);
if (!$result) {
    echo "Ошибка базы, не удалось получить список таблиц\n";
    echo 'Ошибка MySQL: ' . mysql_error();
    exit;
}

echo '<div class="maintitle mainrazd">В базе всего: '.mysql_num_rows($result).' таблиц</div>';
echo '<div class="maintext">';
while ($row = mysql_fetch_array($result)) {
    echo "<div class='posts'><img src='../template/icon/sprites.png'>&nbsp<b>{$row[0]} </b><br/>столбиков: ". mysql_num_rows(mysql_query("SHOW COLUMNS FROM `{$row[0]}`"))."</div>\n";
}
echo '</div>';
mysql_free_result($result);

echo '<div class="posts"><img src="../template/icon/warning.png"> Все таблицы сохраняются в папке admin_list/backup/ и по желаю можете еще и на компьютере сохранить.<br/>
Для начала проверьте права 777 к папке backup/ </div>';

echo'<form action="?" method="post">';
echo '<input type="submit" name="submit" value="Сохранить бэкап">';
echo '</form>';
}
else
{
define('MSB_NL', "\r\n");
define('MSB_STRING', 0);
define('MSB_DOWNLOAD', 1);
define('MSB_SAVE', 2);

class MySQL_Backup
{
 var $characters = '';
 var $backup_dir = '';
 var $returnSQL = '';


 function Execute()
 {
 return $this->_active();

 }

 function _active()
 {
 
 $return = $this->_Query('SHOW TABLES');

 while($catch = mysql_fetch_array($return))
 {
 $value[] = $catch['Tables_in_'.$this->database];
 }

 $this->_createTable($value);
 if($take = $this->_SaveToFile())
 {
 echo $this->returnSQL;
 }
 else{
 die('Не могу сохранить файл, не стоят права на папку.');
 }
 
 }


 function _createTable($val)
 {
foreach($val as $a)
 {
 @$create = mysql_fetch_array($this->_Query('SHOW CREATE TABLE '.$a));
$this->returnSQL .= '
--
-- Структура таблицы `' . $a . '`;
--'.MSB_NL;
 $this->returnSQL .= 'DROP TABLE IF EXISTS `' . $a . '`;'.MSB_NL;
 $this->returnSQL .= $create[1].';'.MSB_NL.MSB_NL.MSB_NL;
 $this->returnSQL .= $this->createInsert($a);
 }

 }

 function createInsert($table)
 {
 $value = '';
 if (!($result = $this->_Query('SELECT * FROM ' . $table)))
 {
 return false;
 }
 while ($row = mysql_fetch_row($result))
 {
 $values = '';
 foreach ($row as $data)
 {
 
 $values .= '\'' . addslashes($data) . '\', ';
 }
 $values = substr($values, 0, -2);
 $value .= 'INSERT INTO ' . $table . ' VALUES (' . $values . ');' . MSB_NL;
 }
 return $value;
 }



/* Функции для соеденения и запросов */
 function _Connect()
 {
 mysql_query('SET NAMES '.$this->characters);
 }

 function _Query($sql)
 {
 $result = mysql_query($sql);
 return $result;
 }
/* END Функции для соеденения и запросов */

 function _SaveToFile()
 { 
 $fname = $this->backup_dir.''.time().'_'.DBNAME.'.sql';
 if (!($f = fopen($fname, 'w+')))
 return false;
 
 fwrite($f, $this->returnSQL);
 fclose($f);
 $this->_DownloadFile($fname);
 return $fname;
 }


 function _DownloadFile($fname)
 {
messag('Бекап сайта успешно сохранено в папке admin_list/backup/');
echo ("<a href='backup.php'>Назад</a>");
include_once'../template/foot.php';
exit;
 return true;
 }

}

$backup = new MySQL_Backup();
$backup->fname_format = 'Ymd-His';

$backup->server = DBHOST;
$backup->username = DBUSER;
$backup->password = DBPASS;
$backup->database = DBNAME;
// Кодировка базы
$backup->characters = 'UTF8';
// Место куда будем заливать дамп. Не забываем про слеши.
$backup->backup_dir = 'backup/';
$run = $backup->Execute();
echo $run;
}



include_once'../template/foot.php';
?>