📄 debug.fun.php
字号:
<?
function debugtools() {
global $_COOKIE, $_SESSION, $_DCOOKIE, $_DCACHE, $_DSESSION, $_DCACHE, $_DPLUGIN, $sqldebug, $debuginfo, $sqlspenttimes;
$table1 = "<table cellspacing=".INNERBORDERWIDTH." cellpadding=".TABLESPACE." width=".TABLEWIDTH." align=center class=tableborder><tr><td class=altbg2 style=\\\"font-size:12px;\\\">";
$table2 = "</td></tr></table>";
$sqldebuglist = $table1.preg_replace('/\r\n/', '', daddslashes($sqldebug, '"')).$table2;
$dcookielist = $table1."<div style=\\\"border:1px soild black;background:#DDD\\\">$_DCOOKIE</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_DCOOKIE, true), '"'));
$dcookielist .= "<div style=\\\"border:1px soild black;background:#DDD\\\">$_COOKIE</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_COOKIE, true), '"')).$table2;
$includelist = $table1.preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r(get_included_files(), true), '"')).$table2;
$settingslist = $table1."<div style=\\\"border:1px soild black;background:#DDD\\\">SETTIONS</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_DCACHE['settings'], true), '"')).$table2;
$dsessionlist = $table1."<div style=\\\"border:1px soild black;background:#DDD\\\">$_DSESSION</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_DSESSION, true), '"')).$table2;
$dsessionlist .= $table1."<div style=\\\"border:1px soild black;background:#DDD\\\">$_SESSION</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_SESSION, true), '"')).$table2;
$dcachelist = $table1."<div style=\\\"border:1px soild black;background:#DDD\\\">$_DCACHE</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_DCACHE, true), '"')).$table2;
$dpluginlist = $table1."<div style=\\\"border:1px soild black;background:#DDD\\\">$_DPLUGIN</div><br>".preg_replace(array('/\n/', '/\s/'), array('<br>', ' '), daddslashes(print_r($_DPLUGIN, true), '"')).$table2;
$debugwinenv = $table1."<ul><li>PHP版本: ".PHP_VERSION."</li><li>MYSQL版本: ".mysql_get_server_info()."</li></ul>".$table2;
$debugwintools = $table1."<ul><li><a href=\\\"member.php?action=clearcookies\\\">[清除DCOOKIE]</li></ul>".$table2;
$out = "document.write(\"<div style=\\\"left:0px;top:0px;width:100%;z-index:99\\\">\");\r\n";
$out .= "document.write(\"<table cellspacing=\\\"".INNERBORDERWIDTH."\\\" cellpadding=\\\"".TABLESPACE."\\\" width=\\\"".TABLEWIDTH."\\\" align=\\\"center\\\" class=\\\"tableborder\\\">\");\r\n";
$out .= "document.write(\"<tr class=\\\"header\\\"><td colspan=\\\"3\\\">\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('')\\\">[关闭]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwinquery')\\\"> | [查询 ".$debuginfo['queries']." 次]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwininclude')\\\"> | [引用".count(get_included_files())." 个]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwindcookie')\\\"> | [DCOOKIE]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwindsession')\\\"> | [DSESSION]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwincache')\\\"> | [DCACHE]</span>\");\r\n";
//$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwinplugin')\\\"> | [DPLUGIN]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwinsettings')\\\"> | [settings]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwinenv')\\\"> | [环境]</span>\");\r\n";
$out .= "document.write(\"<span style=\\\"cursor:pointer;\\\" onclick=\\\"debugdisplay('debugwintools')\\\"> | [工具]</span> \");\r\n";
foreach($sqlspenttimes as $v) {
$out .="document.write(\"{$comma}{$v}\");";
$comma = " / ";
}
$out .= "document.write(\" 毫秒</td></tr></table>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwinquery\\\" style=\\\"display:block;background:#eee\\\">".$sqldebuglist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwindcookie\\\" style=\\\"display:none;background:#eee\\\">".$dcookielist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwindsession\\\" style=\\\"display:none;background:#eee\\\">".$dsessionlist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwincache\\\" style=\\\"display:none;background:#eee\\\">".$dcachelist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwinplugin\\\" style=\\\"display:none;background:#eee\\\">".$dpluginlist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwininclude\\\" style=\\\"display:none;background:#eee\\\">".$includelist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwinsettings\\\" style=\\\"display:none;background:#eee\\\">".$settingslist."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwinenv\\\" style=\\\"display:none;background:#eee\\\">".$debugwinenv."</div>\");\r\n";
$out .= "document.write(\"<div id=\\\"debugwintools\\\" style=\\\"display:none;background:#eee\\\">".$debugwintools."</div>\");\r\n";
$out .= "var debugwinarray = new Array(\r\n";
$out .= "'debugwinquery', 'debugwininclude', 'debugwindcookie'\r\n";
$out .= ", 'debugwindsession', 'debugwincache', 'debugwinplugin'\r\n";
$out .= ", 'debugwinuser', 'debugwinpower', 'debugwingroup'\r\n";
$out .= ", 'debugwinsettings', 'debugwinenv', 'debugwintools'\r\n";
$out .= ");\r\n";
$out .= "function debugdisplay(debugwinid) {\r\n";
$out .= " for(i = 0; i < debugwinarray.length; i++) {\r\n";
$out .= " if(did = document.getElementById(debugwinarray[i])) {\r\n";
$out .= " if(debugwinid == debugwinarray[i]) {\r\n";
$out .= " did.style.display = did.style.display == '' ? 'none' : ''; \r\n";
$out .= " }else{\r\n";
$out .= " did.style.display = 'none'; \r\n";
$out .= " }\r\n";
$out .= " }\r\n";
$out .= " }\r\n";
$out .= "}\r\n";
$fp = fopen(DISCUZ_ROOT.'include/debug.js', 'w');
fwrite($fp, $out, strlen($out));
fclose($fp);
}
function sqlshowformat($sql) {
$sql = " $sql ";
$tab = " ";
if(strtolower(substr($sql, 0, 7)) == ' select') {
$strs = spliti("FROM", $sql);
$select = $strs[0];
$strs = spliti("WHERE", ' FROM '.$strs[1]);
$from = $strs[0];
$where = empty($strs[1]) ? '' : ' WHERE '.$strs[1];
$commas = 0;
$str2 = '';
for($i = 0; $i < strlen($select); $i++) {
if($select{$i} == ',') {
if((++$commas % 6 ) == 0) {
$str2 .="<br>$tab,";
continue;
}
}
$str2 .=$select{$i};
}
$select = $str2;
$sql = $select.$from.$where;
} elseif(strtolower(substr($sql, 0, 7)) == ' update') {
$strs = spliti("SET", $sql);
$update = $strs[0];
$strs = spliti("WHERE", ' SET '.$strs[1]);
$set = $strs[0];
$where = empty($strs[1]) ? '' : ' WHERE '.$strs[1];
$commas = 0;
$str2 = '';
for($i = 0; $i < strlen($set); $i++) {
if($set{$i} == ',') {
if(( ++$commas % 6 ) == 0 ) {
$str2 .="<br>$tab,";
continue;
}
}
$str2 .=$set{$i};
}
$set = $str2;
$sql = htmlspecialchars($update.$set.$where);
}
$p = array(
'/ /'
, '/ (SELECT|FROM|WHERE|UPDATE|SET|ORDER BY|GROUP BY) /i'
, '/ (AS|DESC|LIMIT|AND|OR) /i'
, '/[\r\n]+/'
, '/[\x00-\x09]+/'
, '/ (LEFT JOIN) /i'
);
$r = array(
' '
, "<br><font color=green> <b>\\1</b>$tab</font>"
, '<font color=green><b> \\1 </b></font>'
, ''
, ' '
, "<br><font color=green>$tab<b>\\1</b> </font>"
);
$sql = preg_replace($p, $r, $sql);
return $sql;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -