⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.php

📁 xm2sv1.0寻梦二手网 v1.0,一个经过我调试的PHP原代码,有机会大家多交流哈
💻 PHP
📖 第 1 页 / 共 2 页
字号:
				"<td bgcolor=\"".ALTBG1."\"><a href=\"admincp.php?action=import&from=server&datafile_server=$info[filename]&importsubmit=yes\"".
				($info['version'] != strip_tags($version) ? " onclick=\"return confirm('导入和当前 Discuz! 版本不一致的数据极有可能产生无法解决的故障,您确定继续吗?');\"" : "").">[导入]</a></td>\n";
		}

?>
<table cellspacing="0" cellpadding="0" border="0" width="90%" align="center">
<tr><td bgcolor="<?=BORDERCOLOR?>">
<table border="0" cellspacing="<?=BORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="100%">
<tr class="header"><td>特别提示</td></tr>
<tr bgcolor="<?=ALTBG1?>"><td>
<br><ul><li>本功能在恢复备份数据的同时,将全部覆盖原有数据,请确定是否需要恢复,以免造成数据损失。</ul>
<ul><li>数据恢复功能只能恢复由当前版本 Discuz! 导出的数据文件,其他软件导出格式可能无法识别。</ul>
<ul><li>从本地恢复数据需要服务器支持文件上传并保证数据尺寸小于允许上传的上限,否则只能使用从服务器恢复。</ul>
<ul><li>如果您使用了分卷备份,只需手工导入文件卷 1,其他数据文件会由系统自动导入。</ul>
</td></tr></table></td></tr></table>

<br><form name="restore" method="post" action="admincp.php?action=import" enctype="multipart/form-data">
<table cellspacing="0" cellpadding="0" border="0" width="90%" align="center">
<tr><td bgcolor="<?=BORDERCOLOR?>">
<table border="0" cellspacing="<?=BORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="100%">
<tr class="header">
<td colspan="2">数据恢复</td>
</tr>

<tr>
<td bgcolor="<?=ALTBG1?>" width="40%"><input type="radio" name="from" value="server" checked onclick="this.form.datafile_server.disabled=!this.checked;this.form.datafile.disabled=this.checked">从服务器(填写文件名或 URL):</td>
<td bgcolor="<?=ALTBG2?>" width="60%"><input type="text" size="40" name="datafile_server" value="./forumdata/"></td></tr>

<tr>
<td bgcolor="<?=ALTBG1?>" width="40%"><input type="radio" name="from" value="local" onclick="this.form.datafile_server.disabled=this.checked;this.form.datafile.disabled=!this.checked">从本地文件:</td>
<td bgcolor="<?=ALTBG2?>" width="60%"><input type="file" size="29" name="datafile" disabled></td></tr>

</table></td></tr></table><br><center>
<input type="submit" name="importsubmit" value="恢复数据"></center>
</form>

<br><form method="post" action="admincp.php?action=import">
<table cellspacing="0" cellpadding="0" border="0" width="90%" align="center">
<tr><td bgcolor="<?=BORDERCOLOR?>">
<table border="0" cellspacing="<?=BORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="100%" class="smalltxt">
<tr class="header"><td colspan="9">数据备份记录</td></tr>
<tr align="center" class="header"><td width="45"><input type="checkbox" name="chkall" class="header" onclick="checkall(this.form)">删?</td>
<td>文件名</td><td>版本</td>
<td>备份时间</td><td>类型</td>
<td>尺寸</td><td>多卷</td>
<td>卷号</td><td>操作</td></tr>
<?=$exportinfo?>
</table></td></tr></table><br><center>
<input type="submit" name="deletesubmit" value="删除选定备份"></center></form>
<?

	 } elseif($importsubmit) {

		$readerror = 0;
		if($from == "server") {
			$datafile = $datafile_server;
			$datafile_size = @filesize($datafile_server);
		}
		@$fp = fopen($datafile, "r");
		if($datafile_size) {
			@flock($fp, 3);
			$sqldump = @fread($fp, $datafile_size);
		} else {
			$sqldump = @fread($fp, 99999999);
		}
		@fclose($fp);
		if(!$sqldump) {
			if($autoimport) {
				updatecache();
				cpmsg("分卷数据成功导入论坛数据库。");
			} else {
				cpmsg("数据文件不存在:可能服务器不允许上传文件或尺寸超过限制。");
			}
		} elseif(!strpos($sqldump, "Discuz! Data Dump")) {
			cpmsg("数据文件非 Discuz! 格式,无法导入。");
		} else {
			$identify = explode(',', base64_decode(preg_replace("/^# Identify:\s*(\w+).*/s", "\\1", substr($sqldump,0, 256))));
			$dumpinfo = array('multivol' => $identify[3], 'volume' => intval($identify[4]));

			$sqlquery = splitsql($sqldump);
			unset($sqldump);
			foreach($sqlquery as $sql) {
				if(trim($sql) != '') {
					$db->query($sql);
				}
			}

			if($dumpinfo['multivol']) {
				$datafile_next = str_replace("-$dumpinfo[volume].sql", '-'.($dumpinfo['volume'] + 1).'.sql', $datafile_server);
				if($dumpinfo['volume'] == 1) {
					cpmsg('分卷数据成功导入数据库,您需要自动导入本次其他的的备份吗?',
						"admincp.php?action=import&from=server&datafile_server=$datafile_next&autoimport=yes&importsubmit=yes",
						'form');
				} elseif($autoimport) {
					cpmsg("数据文件 #$dumpinfo[volume] 成功导入,程序将自动继续。", "admincp.php?action=import&from=server&datafile_server=$datafile_next&autoimport=yes&importsubmit=yes");
				} else {
					updatecache();
					cpmsg("数据成功导入论坛数据库。");
				}
			} else {
				updatecache();
				cpmsg("数据成功导入论坛数据库。");
			}
		}
	} elseif($deletesubmit) {

		if(is_array($delete)) {
			foreach($delete as $filename) {
				@unlink($filename);
			}
			cpmsg("指定备份文件成功删除。");
		} else {
			cpmsg("您没有选择要删除的备份文件,请返回。");
		}

	}

} elseif($action == "runquery") {

	if(!$sqlsubmit) {

?>
<br><br><form method="post" action="admincp.php?action=runquery">
<table cellspacing="0" cellpadding="0" border="0" width="550" align="center">
<tr><td bgcolor="<?=BORDERCOLOR?>">
<table border="0" cellspacing="<?=BORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="100%">
<tr class="header"><td colspan=2>Discuz! 数据库升级</td></tr>
<tr bgcolor="<?=ALTBG1?>" align="center">
<td valign="top">请将数据库升级语句粘贴在下面:<br><textarea cols="85" rows="10" name="queries"></textarea><br>
<br><center>注意:为确保升级成功,请不要修改 SQL 语句的任何部分。<br><br>
<input type="submit" name="sqlsubmit" value="数据库升级"></center>
</td>
</tr>
</table>
</td></tr></table>
</form></td></tr>
<?

	} else {

		$sqlquery = splitsql(str_replace(" cdb_", " $tablepre", $queries));
		foreach($sqlquery as $sql) {
			if(trim($sql) != "") {
				$db->query(stripslashes($sql), 1);
				$sqlerror = $db->error();
				if($sqlerror) {
					break;
				}
			}
		}

		cpmsg($sqlerror ? "升级错误,MySQL 提示:$sqlerror" : "Discuz! 数据结构成功升级。");
	}	

} elseif($action == "optimize") {

	$query = $db->query("SELECT VERSION()");
	$dbversion = $db->result($query, 0);
	if($dbversion < '3.23') {
		cpmsg("MySQL 版本低于 3.23,不支持优化功能。");
	} else {
?>
<table cellspacing="0" cellpadding="0" border="0" width="90%" align="center">
<tr><td bgcolor="<?=BORDERCOLOR?>">
<table border="0" cellspacing="<?=BORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="100%">
<tr class="header"><td>特别提示</td></tr>
<tr bgcolor="<?=ALTBG1?>"><td>
<br><ul><li>数据表优化的功能如同磁盘整理程序,推荐您定期优化数据库以减少数据碎片,保持良好的存取和检索性能。</ul>
<ul><li>本功能需 MySQL 3.23 以上版本支持,当前服务器 MySQL 版本:<?=$dbversion?>。</ul>
</td></tr></table></td></tr></table>

<br><br><form name="optimize" method="post" action="admincp.php?action=optimize">
<table cellspacing="0" cellpadding="0" border="0" width="90%" align="center">
<tr><td bgcolor="<?=BORDERCOLOR?>">
<table border="0" cellspacing="<?=BORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="100%">
<tr align="center" class="header">
<td>优化</td><td>数据表名</td><td>类型</td><td>记录数</td>
<td>数据</td><td>索引</td><td>碎片</td></tr>
<?
		$optimizetable = "";
		$totalsize = 0;
		if(!$optimizesubmit) {
			$query = $db->query("SHOW TABLE STATUS LIKE '$tablepre%'");
			while($table = $db->fetch_array($query)) {
				echo "<tr>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\"><input type=\"checkbox\" name=\"$table[Name]\" value=\"1\" checked></td>\n".
					"<td td onClick=\"document.optimize.$table[Name].checked = !document.optimize.$table[Name].checked;\" style=\"cursor: hand\" onmouseover=\"this.style.backgroundColor='".ALTBG1."';\" onmouseout=\"this.style.backgroundColor='".ALTBG2."';\" bgcolor=\"".ALTBG2."\" align=\"center\">$table[Name]</td>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">$table[Type]</td>\n".
					"<td bgcolor=\"".ALTBG2."\" align=\"center\">$table[Rows]</td>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">$table[Data_length]</td>\n".
					"<td bgcolor=\"".ALTBG2."\" align=\"center\">$table[Index_length]</td>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">$table[Data_free]</td>\n".
					"</tr>\n";
				$totalsize += $table[Data_length] + $table[Index_length];
			}
			echo "<tr class=\"header\"><td colspan=\"7\" align=\"right\">共占用数据库:".sizecount($totalsize)."</td></tr></table><tr><td align=\"center\"><br><input type=\"submit\" name=\"optimizesubmit\" value=\"优化数据表\"></td></tr>\n";
		} else {
			$db->unbuffered_query("DELETE FROM $table_subscriptions");
			$query = $db->query("SHOW TABLE STATUS LIKE '$tablepre%'");
			while($table = $db->fetch_array($query)) {
				$tablename = ${$table[Name]};
				if(!$tablename) {
					$tablename = "未优化";
				} else {
					$tablename = "优化";
					$db->query("OPTIMIZE TABLE $table[Name]");
				}
				echo "<tr>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">$tablename</td>\n".
					"<td bgcolor=\"".ALTBG2."\" align=\"center\">$table[Name]</td>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">$table[Type]</td>\n".
					"<td bgcolor=\"".ALTBG2."\" align=\"center\">$table[Rows]</td>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">$table[Data_length]</td>\n".
					"<td bgcolor=\"".ALTBG2."\" align=\"center\">$table[Index_length]</td>\n".
					"<td bgcolor=\"".ALTBG1."\" align=\"center\">0</td>\n".
					"</tr>\n";
				$totalsize += $table[Data_length] + $table[Index_length];
			}
			echo "<tr class=\"header\"><td colspan=\"7\" align=\"right\">共占用数据库:".sizecount($totalsize)."</td></tr></table>";
		}
	}

	echo "</table></form>";
}

?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -