Просмотр файла admin_list/backup.php

Размер файла: 4.57Kb
  1. <?
  2. /*
  3. =============================================
  4. Движок: SHCMS Engine
  5. =============================================
  6. Название файла: Управление базой данных
  7. =============================================
  8. Official website: http://shcms.ru
  9. =============================================
  10. Код зашищен авторскими правами
  11. =============================================
  12. */
  13. define('SHCMS', true);
  14. include_once'../system/inc/basic_settings.php';
  15. $shcmsengine['title'] = 'SHCMS Engine Управление базой данных';
  16. include_once'../template/head.php';
  17. registrat();
  18. $adminka ->admin();
  19.  
  20. if($_POST['submit'])
  21. {
  22. $submit = $_POST['submit'];
  23. }
  24. if(!$submit)
  25. {
  26. $sql = "SHOW TABLES ";
  27. $result = mysql_query($sql);
  28. if (!$result) {
  29. echo "Ошибка базы, не удалось получить список таблиц\n";
  30. echo 'Ошибка MySQL: ' . mysql_error();
  31. exit;
  32. }
  33.  
  34. echo '<div class="maintitle mainrazd">В базе всего: '.mysql_num_rows($result).' таблиц</div>';
  35. echo '<div class="maintext">';
  36. while ($row = mysql_fetch_array($result)) {
  37. 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";
  38. }
  39. echo '</div>';
  40. mysql_free_result($result);
  41.  
  42. echo '<div class="posts"><img src="../template/icon/warning.png"> Все таблицы сохраняются в папке admin_list/backup/ и по желаю можете еще и на компьютере сохранить.<br/>
  43. Для начала проверьте права 777 к папке backup/ </div>';
  44.  
  45. echo'<form action="?" method="post">';
  46. echo '<input type="submit" name="submit" value="Сохранить бэкап">';
  47. echo '</form>';
  48. }
  49. else
  50. {
  51. define('MSB_NL', "\r\n");
  52. define('MSB_STRING', 0);
  53. define('MSB_DOWNLOAD', 1);
  54. define('MSB_SAVE', 2);
  55.  
  56. class MySQL_Backup
  57. {
  58. var $characters = '';
  59. var $backup_dir = '';
  60. var $returnSQL = '';
  61.  
  62.  
  63. function Execute()
  64. {
  65. return $this->_active();
  66.  
  67. }
  68.  
  69. function _active()
  70. {
  71. $return = $this->_Query('SHOW TABLES');
  72.  
  73. while($catch = mysql_fetch_array($return))
  74. {
  75. $value[] = $catch['Tables_in_'.$this->database];
  76. }
  77.  
  78. $this->_createTable($value);
  79. if($take = $this->_SaveToFile())
  80. {
  81. echo $this->returnSQL;
  82. }
  83. else{
  84. die('Не могу сохранить файл, не стоят права на папку.');
  85. }
  86. }
  87.  
  88.  
  89. function _createTable($val)
  90. {
  91. foreach($val as $a)
  92. {
  93. @$create = mysql_fetch_array($this->_Query('SHOW CREATE TABLE '.$a));
  94. $this->returnSQL .= '
  95. --
  96. -- Структура таблицы `' . $a . '`;
  97. --'.MSB_NL;
  98. $this->returnSQL .= 'DROP TABLE IF EXISTS `' . $a . '`;'.MSB_NL;
  99. $this->returnSQL .= $create[1].';'.MSB_NL.MSB_NL.MSB_NL;
  100. $this->returnSQL .= $this->createInsert($a);
  101. }
  102.  
  103. }
  104.  
  105. function createInsert($table)
  106. {
  107. $value = '';
  108. if (!($result = $this->_Query('SELECT * FROM ' . $table)))
  109. {
  110. return false;
  111. }
  112. while ($row = mysql_fetch_row($result))
  113. {
  114. $values = '';
  115. foreach ($row as $data)
  116. {
  117. $values .= '\'' . addslashes($data) . '\', ';
  118. }
  119. $values = substr($values, 0, -2);
  120. $value .= 'INSERT INTO ' . $table . ' VALUES (' . $values . ');' . MSB_NL;
  121. }
  122. return $value;
  123. }
  124.  
  125.  
  126.  
  127. /* Функции для соеденения и запросов */
  128. function _Connect()
  129. {
  130. mysql_query('SET NAMES '.$this->characters);
  131. }
  132.  
  133. function _Query($sql)
  134. {
  135. $result = mysql_query($sql);
  136. return $result;
  137. }
  138. /* END Функции для соеденения и запросов */
  139.  
  140. function _SaveToFile()
  141. {
  142. $fname = $this->backup_dir.''.time().'_'.DBNAME.'.sql';
  143. if (!($f = fopen($fname, 'w+')))
  144. return false;
  145. fwrite($f, $this->returnSQL);
  146. fclose($f);
  147. $this->_DownloadFile($fname);
  148. return $fname;
  149. }
  150.  
  151.  
  152. function _DownloadFile($fname)
  153. {
  154. messag('Бекап сайта успешно сохранено в папке admin_list/backup/');
  155. echo ("<a href='backup.php'>Назад</a>");
  156. include_once'../template/foot.php';
  157. exit;
  158. return true;
  159. }
  160.  
  161. }
  162.  
  163. $backup = new MySQL_Backup();
  164. $backup->fname_format = 'Ymd-His';
  165.  
  166. $backup->server = DBHOST;
  167. $backup->username = DBUSER;
  168. $backup->password = DBPASS;
  169. $backup->database = DBNAME;
  170. // Кодировка базы
  171. $backup->characters = 'UTF8';
  172. // Место куда будем заливать дамп. Не забываем про слеши.
  173. $backup->backup_dir = 'backup/';
  174. $run = $backup->Execute();
  175. echo $run;
  176. }
  177.  
  178.  
  179.  
  180. include_once'../template/foot.php';
  181. ?>