admin-dbsql.php
Код: Выделить всё
<?php
define('IN_PHP', 1);
define('IN_PHPBB', 1);
$version = "<p> v1.03 (20/12/2005) ©alexenin</p>";
if ( !empty($setmodules) )
{
$file = basename(__FILE__);
# $module['Groups']['Manage'] = $filename;
$module['General']['sql'] = "$file";
return;
}
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);
$show_result = 0;
$show_timer = 1;
$params = array('repair_go' => 'repair_go',
'show_result' => 'show_result',
'showtables' => 'showtables',
'show_timer' => 'show_timer',
'loadfile' => 'loadfile',
'sql' => 'sql');
while( list($var, $param) = @each($params) )
{
if ( !empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]) )
{
$$var = ( !empty($HTTP_POST_VARS[$param]) ) ? $HTTP_POST_VARS[$param] : $HTTP_GET_VARS[$param];
}
else
{
$$var = '';
}
}
$sql=stripslashes($sql);
if ($sql=="") $sql="SELECT count(*) FROM phpbb_users WHERE user_posts>0;";
if ($repair_go)
{
$sql="SHOW tables";
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not obtain sql', '', __LINE__, __FILE__, $sql);
}
$sql="";
$sql_t="";
while($res = $db->sql_fetchrow($result))
{
while( list($k, $v) = each($res) )
{
if ($sql_t != "") $sql_t.=", ";
$sql_t.=$v;
}
}
$sql.="REPAIR TABLE ".$sql_t.";";
unset($v);
unset($sql_t);
unset($res);
}
if ($showtables)
{
$sql="SHOW tables;";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="./subSilver.css">
</head>
<body bgcolor="#E5E5E5" text="#000000" link="#006699" vlink="#5493B4">
<center>
<h2 style="margin-top:10px">SQL запрос</h2>
<table width="99%" cellpadding="2" cellspacing="0" border="0" align="center" class="forumline">
<!-- Заказы -->
<?
$loadfile=0;
if (!isset($HTTP_POST_VARS['go'])&&!$loadfile)
{
?>
<tr><th colspan=2 class="thHead">Выполнить запрос</th></tr>
<tr><td>
<table width="100%" cellpadding="2" cellspacing="1" border="0" align="center">
<form action=<?=append_sid("admin_sql.$phpEx")?> method=post enctype="multipart/form-data">
<tr>
<td class="row1" width=31% valign=top><span class="genmed">Выполнить sql запрос</span></td>
<td class="row1">
<textarea name="sql" rows=15 cols=35 wrap=virtual style='width:95%;color:black' tabindex=3 class=row1>
<?=$sql?></textarea>
</td>
</tr>
<tr>
<td class="row1" valign=middle><span class="genmed">Показывать результат запроса</span></td>
<td class="row2">
<span class="genmed">
Да <input type="radio" name="show_result" value="1" checked />
Нет <input type="radio" name="show_result" value="0" /></span>
</td>
</tr>
<tr>
<td class="row1" valign=middle><span class="genmed">Показывать время выполнения этапов</span></td>
<td class="row2">
<span class="genmed">
Да <input type="radio" name="show_timer" value="1" checked />
Нет <input type="radio" name="show_timer" value="0"/></span>
</td>
</tr>
<tr>
<td class="row1" valign=middle><span class="genmed">Результат отправить в файле</span></td>
<td class="row2">
<span class="genmed">
Да <input type="radio" name="loadfile" value="1" />
Нет <input type="radio" name="loadfile" value="0" checked /></span>
</td>
</tr>
<tr>
<td class="row1" valign=middle><span class="genmed">Произвести восстановление базы</span></td>
<td class="row2">
<span class="genmed">
Да <input type="radio" name="repair_go" value="1" />
Нет <input type="radio" name="repair_go" value="0" checked /></span>
</td>
</tr>
<tr>
<td class="row1" valign=middle><span class="genmed">Показать таблицы</span></td>
<td class="row2">
<span class="genmed">
Да <input type="radio" name="showtables" value="1" />
Нет <input type="radio" name="showtables" value="0" checked /></span>
</td>
</tr>
<tr>
<td colspan=2 class="row1" valign=bottom align=center>
<span class="genmed"><input type=hidden name=go><input class="mainoption" type=submit value="Выполнить"></span></td>
</tr>
</form>
</table>
</td>
</tr>
</table>
<?
echo $version;
exit;
}
else
{
?>
<form action=<?=append_sid("admin_sql.$phpEx")?> method=post enctype="multipart/form-data">
<input type="hidden" name="sql" value="<?=$sql?>">
<input type=hidden name=back>
<tr><th colspan=2 class="thHead">Текст запроса</th></tr>
<tr><td colspan=2 class="row1" align=center> </td></tr>
<tr><td colspan=2 class="row1" align=center><span class="gen"><?=$sql?></span></td></tr>
<tr><td colspan=2 class="row1" align=center> </td></tr>
<tr>
<td colspan=2 class="row1" align=center>
<input class="mainoption" type=submit value="Вернуться на страницу SQL запроса.">
</td>
</tr>
<tr><td colspan=2 class="row1" align=center> </td></tr>
</table>
</form>
<?
}
if ($show_result || $show_timer){
?>
<br>
<table width="99%" cellpadding="0" cellspacing="0" border="0" align="center" class="forumline">
<?
}
$starttime='';
$temptime='';
function outin($mode='0',$data1='', $data2=' ')
{
if ($mode==0) echo "<tr><td colspan=2 class=\"row1\">".$data1.$data2."</td></tr>\n";
if ($mode==1) echo "<tr><td class=\"row1\" width=35% valign=middle><span class=\"genmed\">".$data1."</span></td>
<td class=\"row2\" valign=middle><span class=\"genmed\">$data2</span></td></tr>\n";
if ($mode==2) echo "<tr><td colspan=2 class=\"row1\" valign=middle><span class=\"genmed\">$data1</span></td></tr>\n";
if ($mode==3) echo "<tr><td class=\"row1\" width=35% valign=middle><span class=\"gengood\">$data1</span></th>
<th class=\"row1\" valign=middle><span class=\"gengood\">$data2</span></th></tr>\n";
if ($mode==4) echo "<tr><td colspan=2 class=\"thHead\" valign=middle><span class=\"gengood\">$data1</span></td></tr>\n";
}
class Debug
{
function startTimer()
{
global $starttime;
$mtime = microtime ();
$mtime = explode (' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
}
function startTimer1()
{
global $temptime;
$mtime = microtime ();
$mtime = explode (' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
$temptime = $mtime;
}
function endTimer()
{
global $starttime;
$mtime = microtime ();
$mtime = explode (' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = round (($endtime - $starttime), 5);
return $totaltime;
}
function endTimer1()
{
global $temptime;
$mtime = microtime ();
$mtime = explode (' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = round (($endtime - $temptime), 5);
return $totaltime;
}
}
$Debug = new Debug;
// product
$Debug->startTimer();
#outin ();
if ($show_result||$show_timer) outin (4,"Выполнение запроса");
$res=array();
# echo $sql;
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not obtain sql', '', __LINE__, __FILE__, $sql);
}
echo "<tr><td colspa=2 class=\"row1\"><table width=99% cellpadding=2 cellspacing=1 border=0 align=center class=forumline>";
echo "<tr>";
if (preg_match('/^(INSERT|UPDATE|DELETE)*$/is', $sql))
{
echo "<th>Запрос выполнен</th>";
}
else
{
while($res = $db->sql_fetchrow($result))
{
while( list($k, $v) = each($res) )
{
$resu{$k} = 1;
$val[]= $v;
}
}
while( list($k, $v) = each($resu) )
{
echo "<th>".$k."</th>";
}
echo "</tr>";
$count=count($resu);
for ($i=0; $i<count($val);$i+=$count)
{
echo "<tr>";
for ($j=$i; $j<$count+$i;$j++)
{
echo "<td class=\"row1\">".$val[$j]."</td>";
}
echo "</tr>";
}
}
echo "</table></td></tr>";
outin();
outin(2,"<span class=\"quote\"> Запрос выполнен за ".$Debug->endTimer()." сек. </span>");
#echo "</td></tr></table>";
?>
</td></tr>
<?=outin();?>
</table>
</td></tr></table>
</center>
<br>
<br>
<span class="gen"><a class="gengood" href="<?=append_sid("admin_sql.$phpEx")?>">Вернуться на страницу SQL запроса.</a></span>
<br>
<?=$version;?>
</body>
</html>