📄 ad_mysql.php
字号:
if ( preg_match( "|win|i", $os ) )
{
$b = "\\";
}
else
{
$b = "/";
}
$out = opendir( $DIR.$b."archive_out" );
while ( $file = readdir( $out ) )
{
if ( preg_match( "|(.*?).sql|", $file ) )
{
$ADMIN->html .= "<option value='".$DIR.$b."archive_out".$b.$file."'>{$file}</option>";
}
}
closedir( $out );
$in = opendir( $DIR.$b."archive_in" );
while ( $file = readdir( $in ) )
{
if ( preg_match( "|(.*?).sql|", $file ) )
{
$ADMIN->html .= "<option value='".$DIR.$b."archive_in".$b.$file."'>{$file}</option>";
}
}
closedir( $in );
$ADMIN->html .= "</select>";
$ADMIN->html .= "</td></tr>";
$ADMIN->html .= $SKIN->end_form( "删除数据文件" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "act", "mysql" ),
2 => array( "code", "ad_del" )
) );
$ADMIN->html .= $SKIN->start_table( "根据选择的条件删除数据文件..." );
$ADMIN->html .= $SKIN->add_td_row( array( "<b>删除多少小时前的数据文件</b>", "<input type='text' name='hour'>" ) );
$ADMIN->html .= $SKIN->add_td_row( array( "<b>删除多少天前的数据文件</b>", "<input type='text' name='day'>" ) );
$ADMIN->html .= $SKIN->add_td_row( array( "<b>删除多少月前的数据文件</b>", "<input type='text' name='mou'>" ) );
$ADMIN->html .= $SKIN->end_form( "删除" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function do_manage( )
{
global $ADMIN;
global $SKIN;
global $HTTP_POST_VARS;
$count = 0;
$all = count( $HTTP_POST_VARS['files'] );
foreach ( $HTTP_POST_VARS['files'] as $to_del )
{
$count += @unlink( $to_del );
}
$ADMIN->page_title = "数据文件管理结果";
$ADMIN->page_detail = "数据文件删除结果";
$ADMIN->html .= $SKIN->start_table( "显示结果" );
$ADMIN->html .= $SKIN->add_td_row( array(
"总数 {$all} 文件中 {$count} 文件被删除"
) );
$ADMIN->output( );
}
function ad_del( )
{
global $ADMIN;
global $SKIN;
global $HTTP_POST_VARS;
$current = time( );
if ( $HTTP_POST_VARS['hour'] != "" )
{
$del = $HTTP_POST_VARS['hour'] * 3600;
$deltime = $current - $del;
}
else if ( $HTTP_POST_VARS['day'] != "" )
{
$del = $HTTP_POST_VARS['day'] * 86400;
$deltime = $current - $del;
}
else if ( $HTTP_POST_VARS['mou'] != "" )
{
$del = $HTTP_POST_VARS['mou'] * 2592000;
$deltime = $current - $del;
}
else
{
$ADMIN->page_title = "显示结果";
$ADMIN->page_detail = "数据文件删除结果";
$ADMIN->html .= $SKIN->start_table( "显示结果" );
$ADMIN->html .= $SKIN->add_td_row( array( "没有删除文件" ) );
$ADMIN->output( );
exit( );
}
$count = 0;
$DIR = getcwd( );
$os = @php_uname( );
if ( preg_match( "|win|i", $os ) )
{
$b = "\\";
}
else
{
$b = "/";
}
$out = opendir( $DIR.$b."archive_out" );
while ( $file = readdir( $out ) )
{
if ( preg_match( "|(.*?).sql|", $file ) )
{
$date = str_replace( ".sql", "", $file );
$date = explode( "_", $file );
$date = $date[4];
if ( $date < $deltime )
{
$count = @unlink( $DIR.$b."archive_out".$b.$file );
}
}
}
closedir( $out );
$out = opendir( $DIR.$b."archive_in" );
while ( $file = readdir( $out ) )
{
if ( preg_match( "|(.*?).sql|", $file ) )
{
$date = str_replace( ".sql", "", $file );
$date = explode( "_", $file );
$date = $date[4];
if ( $date < $deltime )
{
$count = @unlink( $DIR.$b."archive_in".$b.$file );
}
}
}
closedir( $out );
$ADMIN->page_title = "显示结果";
$ADMIN->page_detail = "数据文件删除结果";
$ADMIN->html .= $SKIN->start_table( "显示结果" );
$ADMIN->html .= $SKIN->add_td_row( array(
"{$count} 文件已经删除"
) );
$ADMIN->output( );
}
function do_safe_backup( $tbl_name = "" )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
if ( $tbl_name == "" )
{
$skip = intval( $IN['skip'] );
$create_tbl = intval( $IN['create_tbl'] );
$enable_gzip = intval( $IN['enable_gzip'] );
$filename = "ibf_dbbackup";
}
else
{
$skip = 0;
$create_tbl = 0;
$enable_gzip = 1;
$filename = $tbl_name;
}
$output = "";
@header( "Pragma: no-cache" );
$do_gzip = 0;
if ( $enable_gzip )
{
$phpver = phpversion( );
if ( "4.0" <= $phpver && extension_loaded( "zlib" ) )
{
$do_gzip = 1;
}
}
if ( $do_gzip != 0 )
{
@ob_start( );
@ob_implicit_flush( 0 );
header( "Content-Type: text/x-delimtext; name=\"{$filename}.sql.gz\"" );
header( "Content-disposition: attachment; filename={$filename}.sql.gz" );
}
else
{
header( "Content-Type: text/x-delimtext; name=\"{$filename}.sql\"" );
header( "Content-disposition: attachment; filename={$filename}.sql" );
}
if ( $tbl_name == "" )
{
$tmp_tbl = $DB->get_table_names( );
foreach ( $tmp_tbl as $tbl )
{
if ( preg_match( "/^".$INFO['sql_tbl_prefix']."/", $tbl ) )
{
$this->get_table_sql( $tbl, $create_tbl, $skip );
}
}
}
else
{
$this->get_table_sql( $tbl_name, $create_tbl, $skip );
}
if ( $do_gzip )
{
$size = ob_get_length( );
$crc = crc32( ob_get_contents( ) );
$contents = gzcompress( ob_get_contents( ) );
ob_end_clean( );
echo $this->str_gzip_header.substr( $contents, 0, strlen( $contents ) - 4 ).$this->gzip_four_chars( $crc ).$this->gzip_four_chars( $size );
}
exit( );
}
function get_table_sql( $tbl, $create_tbl, $skip = 0 )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
if ( $create_tbl )
{
if ( $IN['addticks'] )
{
$DB->query( "SHOW CREATE TABLE `".$INFO['sql_database'].".".$tbl."`" );
}
else
{
$DB->query( "SHOW CREATE TABLE ".$INFO['sql_database'].".".$tbl );
}
$ctable = $DB->fetch_row( );
echo $this->sql_strip_ticks( $ctable['Create Table'] ).";\n";
}
if ( $skip == 1 && ( $tbl == $INFO['sql_tbl_prefix']."admin_sessions" || $tbl == $INFO['sql_tbl_prefix']."sessions" || $tbl == $INFO['sql_tbl_prefix']."reg_anti_spam" || $tbl == $INFO['sql_tbl_prefix']."search_results" ) )
{
return $ret;
}
$DB->query( "SELECT * FROM {$tbl}" );
$row_count = $DB->get_num_rows( );
if ( $row_count < 1 )
{
return TRUE;
}
$f_list = "";
$fields = $DB->get_result_fields( );
$cnt = count( $fields );
$i = 0;
for ( ; $i < $cnt; ++$i )
{
$f_list .= $fields[$i]->name.", ";
}
$f_list = preg_replace( "/, \$/", "", $f_list );
while ( $row = $DB->fetch_row( ) )
{
$d_list = "";
$i = 0;
for ( ; $i < $cnt; ++$i )
{
if ( !isset( $row[$fields[$i]->name] ) )
{
$d_list .= "NULL,";
}
else if ( $row[$fields[$i]->name] != "" )
{
$d_list .= "'".$this->sql_add_slashes( $row[$fields[$i]->name] )."',";
}
else
{
$d_list .= "'',";
}
}
$d_list = preg_replace( "/,\$/", "", $d_list );
echo "INSERT INTO {$tbl} ({$f_list}) VALUES({$d_list});\n";
}
return TRUE;
}
function sql_strip_ticks( $data )
{
return str_replace( "`", "", $data );
}
function sql_add_slashes( $data )
{
$data = str_replace( "\\", "\\\\", $data );
$data = str_replace( "'", "\\'", $data );
$data = str_replace( "\r", "\\r", $data );
$data = str_replace( "\n", "\\n", $data );
return $data;
}
function sbup_splash( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$ADMIN->page_detail = "你可以使用此功能备份你的论坛数据。";
$ADMIN->page_title = "mySQL ".$this->true_version." 数据备份";
if ( $this->mysql_version < 32321 )
{
$ADMIN->error( "对不起,你的 mySQL 数据库版本低于 3.23.21,数据库不支持备份功能,请先升级你的数据库系统。" );
}
$SKIN->td_header[] = array( " ", "100%" );
$ADMIN->html .= $SKIN->start_table( "Simple Back Up" );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>备份论坛 mySQL 数据:</b><br><br>一旦你点击了下面的链接,请耐心等待直到你的浏览器弹出备份成功对话框。备份数据所需的时间取决于你论坛数据的大小。<br><br>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b><a href='{$ADMIN->base_url}&act=mysql&code=dosafebackup&create_tbl={$IN['create_tbl']}&addticks={$IN['addticks']}&skip={$IN['skip']}&enable_gzip={$IN['enable_gzip']}'>按此开始进行论坛数据备份</a></b>"
) );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function show_backup_form( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$ADMIN->page_detail = "此功能允许你对论坛数据进行备份。<br><br><b>普通论坛数据备份</b>\n\t\t\t\t\t\t\t <br>此功能将自动生成一个数据备份文件让你选择保存。(需要 PHP 打开安全模式参数)建议小型数据选用此功能进行数据备份。<!--<br><br>\n\t\t\t\t\t\t\t <b>高级论坛数据备份</b>\n\t\t\t\t\t\t\t <br>此功能允许你生成一个经过压缩的数据备份文件,并且可以直接保存到磁盘中。<br>注意:需要 PHP 打开安全模式参数才能使用此功能。-->";
$ADMIN->page_title = "mySQL ".$this->true_version." 数据备份";
if ( $this->mysql_version < 32321 )
{
$ADMIN->error( "对不起,你的 mySQL 数据库版本低于 3.23.21,数据库不支持备份功能,请先升级你的数据库系统。" );
}
$SKIN->td_header[] = array( " ", "60%" );
$SKIN->td_header[] = array( " ", "40%" );
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "act", "mysql" ),
2 => array( "code", "safebackup" )
) );
$ADMIN->html .= $SKIN->start_table( "普通论坛数据备份" );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>是否添加 'CREATE TABLE' 语句?</b><br>是否在数据表名称添加返回符号?<br>(如果你在备份时发现数据库错误信息,请选择此项) <input type='checkbox' name='addticks' value=1>",
$SKIN->form_yes_no( "create_tbl", 1 )
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>是否省略无意义的数据?</b><br>将不保存下列数据:ibf_sessions, ibf_admin_sessions, ibf_search_results, ibf_reg_anti_spam.",
$SKIN->form_yes_no( "skip", 1 )
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>是否使用 GZIP 功能?</b><br>将自动生成一个经过压缩的数据备份文件。",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -