mysql 导入工具 php_简单PHP的MySQL管理工具

$ACCESS_PWD=''; #!!!重要!!! 设置访问密码

#默认数据库连接设置

# --- 重要! --- 如果开启了自动连接,务必设置访问密码

$DBDEF=array(

'user'=>SAE_MYSQL_USER,#必填

'pwd'=>SAE_MYSQL_PASS, #必填

'db'=>SAE_MYSQL_DB, #可选,默认数据库

'host'=>SAE_MYSQL_HOST_M,#可选

'port'=>SAE_MYSQL_PORT,#可选

'chset'=>"utf8",#可选,默认编码

);

file_exists($f=dirname(__FILE__) . '/phpminiconfig.php')&&require($f); // 从配置文件读取设置

if (function_exists('date_default_timezone_set')) date_default_timezone_set('UTC');#PHP版本需要大于 5.1+

//常量

$VERSION='1.9.150108';

$MAX_ROWS_PER_PAGE=50; #最大行数

$D="\r\n"; #默认导出分隔符

$BOM=chr(239).chr(187).chr(191);

$SHOW_D="SHOW DATABASES";

$SHOW_T="SHOW TABLE STATUS";

$DB=array(); #数据库配置

$self=$_SERVER['PHP_SELF'];

session_set_cookie_params(0, null, null, false, true);

session_start();

if (!isset($_SESSION['XSS'])) $_SESSION['XSS']=get_rand_str(16);

$xurl='XSS='.$_SESSION['XSS'];

ini_set('display_errors',1); #TODO turn off before deploy

error_reporting(E_ALL ^ E_NOTICE);

if (get_magic_quotes_gpc()){

$_COOKIE=array_map('killmq',$_COOKIE);

$_REQUEST=array_map('killmq',$_REQUEST);

}

if (!$ACCESS_PWD) {

$_SESSION['is_logged']=true;

loadcfg();

}

if ($_REQUEST['login']){

if ($_REQUEST['pwd']!=$ACCESS_PWD){

$err_msg="Invalid password. Try again";

}else{

$_SESSION['is_logged']=true;

loadcfg();

}

}

if ($_REQUEST['logoff']){

check_xss();

$_SESSION = array();

savecfg();

session_destroy();

$url=$self;

if (!$ACCESS_PWD) $url='/';

header("location: $url");

exit;

}

if (!$_SESSION['is_logged']){

print_login();

exit;

}

if ($_REQUEST['savecfg']){

check_xss();

savecfg();

}

loadsess();

if ($_REQUEST['showcfg']){

print_cfg();

exit;

}

//get initial values

$SQLq=trim($_REQUEST['q']);

$page=$_REQUEST['p']+0;

if ($_REQUEST['refresh'] && $DB['db'] && preg_match('/^show/',$SQLq) ) $SQLq=$SHOW_T;

if (db_connect('nodie')){

$time_start=microtime_float();

if ($_REQUEST['phpinfo']){

ob_start();phpinfo();$sqldr='

'.ob_get_clean().'
';

}else{

if ($DB['db']){

if ($_REQUEST['shex']){

print_export();

}elseif ($_REQUEST['doex']){

check_xss();do_export();

}elseif ($_REQUEST['shim']){

print_import();

}elseif ($_REQUEST['doim']){

check_xss();do_import();

}elseif ($_REQUEST['dosht']){

check_xss();do_sht();

}elseif (!$_REQUEST['refresh'] || preg_match('/^select|show|explain|desc/i',$SQLq) ){

if ($SQLq)check_xss();

do_sql($SQLq);

}

}else{

if ( $_REQUEST['refresh'] ){

check_xss();do_sql($SHOW_D);

}elseif ($_REQUEST['crdb']){

check_xss();do_sql('CREATE DATABASE `'.$_REQUEST['new_db'].'`');do_sql($SHOW_D);

}elseif ( preg_match('/^(?:show\s+(?:databases|status|variables|process)|create\s+database|grant\s+)/i',$SQLq) ){

check_xss();do_sql($SQLq);

}else{

$err_msg="请选择数据库";

if (!$SQLq) do_sql($SHOW_D);

}

}

}

$time_all=ceil((microtime_float()-$time_start)*10000)/10000;

print_screen();

}else{

print_cfg();

}

function do_sql($q){

global $dbh,$last_sth,$last_sql,$reccount,$out_message,$SQLq,$SHOW_T;

$SQLq=$q;

if (!do_multi_sql($q)){

$out_message="Error: ".mysql_error($dbh);

}else{

if ($last_sth && $last_sql){

$SQLq=$last_sql;

if (preg_match("/^select|show|explain|desc/i",$last_sql)) {

if ($q!=$last_sql) $out_message="Results of the last select displayed:";

display_select($last_sth,$last_sql);

} else {

$reccount=mysql_affected_rows($dbh);

$out_message="Done.";

if (preg_match("/^insert|replace/i",$last_sql)) $out_message.=" Last inserted id=".get_identity();

if (preg_match("/^drop|truncate/i",$last_sql)) do_sql($SHOW_T);

}

}

}

}

function display_select($sth,$q){

global $dbh,$DB,$sqldr,$reccount,$is_sht,$xurl;

$rc=array("o","e");

$dbn=$DB['db'];

$sqldr='';

$is_shd=(preg_match('/^show\s+databases/i',$q));

$is_sht=(preg_match('/^show\s+tables|^SHOW\s+TABLE\s+STATUS/',$q));

$is_show_crt=(preg_match('/^show\s+create\s+table/i',$q));

if ($sth===FALSE or $sth===TRUE) return;

$reccount=mysql_num_rows($sth);

$fields_num=mysql_num_fields($sth);

$w='';

if ($is_sht || $is_shd) {$w='wa';

$url='?'.$xurl."&db=$dbn";

$sqldr.="

服务器:

·显示配置变量

·显示统计

·显示进程列表";

if ($is_shd) $sqldr.=" ·创建新的数据库: ";

$sqldr.="
";

if ($is_sht) $sqldr.=" 数据库: ·显示表状态";

$sqldr.="

";

}

if ($is_sht){

$abtn="

选中项";

$sqldr.=$abtn."";

}

$sqldr.="

$headers="

";

if ($is_sht) $headers.="

";

for($i=0;$i

if ($is_sht && $i>0) break;

$meta=mysql_fetch_field($sth,$i);

$meta->name = str_replace(array('Name','Database'),array('表','数据库'),$meta->name);

$headers.="

".$meta->name."";

}

if ($is_shd) $headers.="

创建数据库SQL表状态触发器";

if ($is_sht) $headers.="

类型行数数据大小索引大小创建表SQL详细索引导出删除清空优化修复";

$headers.="

\n";

$sqldr.=$headers;

$swapper=false;

while($row=mysql_fetch_row($sth)){

$sqldr.="

";

for($i=0;$i

$v=$row[$i];$more='';

if ($is_sht && $v){

if ($i>0) break;

$vq='`'.$v.'`';

$url='?'.$xurl."&db=$dbn";

$v=""

."

$v"

."

".$row[1].""

."

".$row[4].""

."

".$row[6].""

."

".$row[8].""

."

显示"

."

详情"

."

索引"

."

导出"

."

删除"

."

清空"

."

优化"

."

修复";

}elseif ($is_shd && $i==0 && $v){

$url='?'.$xurl."&db=$v";

$v="$v

"

."

显示"

."

状态"

."

触发器"

;

}else{

if (is_null($v)) $v="NULL";

elseif (preg_match('/[\x00-\x09\x0B\x0C\x0E-\x1F]+/',$v)) {

$vl=strlen($v);$pf='';

if ($vl>16 && $fields_num>1){

$v=substr($v, 0, 16);$pf='...';

}

$v='BINARY: '.chunk_split(strtoupper(bin2hex($v)),2,' ').$pf;

}else $v=htmlspecialchars($v);

}

if ($is_show_crt) $v="

$v
";

$sqldr.="

$v".(!strlen($v)?"
":'')."";

}

$sqldr.="

\n";

}

$sqldr.="

\n".$abtn;

}

function print_header(){

global $err_msg,$VERSION,$DB,$dbh,$self,$is_sht,$xurl,$SHOW_T;

$dbn=$DB['db'];

?>

phpMiniAdmin <?php eo($VERSION)?>

body{font-family:Arial,sans-serif;font-size:80%;padding:0;margin:0;color:#555;}

th,td{padding:0;margin:0}

a{text-decoration: none;color:#476dd1}

a:hover{text-decoration: underline;}

div{padding:3px}

pre{font-size:125%}

.nav{text-align:center}

.inv{background-color:#333;color:#333;padding:8px;}

.inv a{color:#eee;padding:0 3px;}

table.res{width:100%;empty-cells: show;border-collapse:collapse;margin:10px 0;line-height:24px;}

table.wa{width:auto}

table.res th,table.res td{padding:4px;border:1px solid #e1e1e1;vertical-align: top;color:#666;}

table.restr{vertical-align:top}

tr.e{background-color:#fff}

tr.o{background-color:#f3f3f3}

tr.e:hover, tr.o:hover {background-color:#eee}

tr.h{background-color:#eee;}

tr.s{background-color:#ff9}

.results,.err{padding:0 0 0 20px;line-height:24px;background:#01A31C;color:#fff;}

.err{background:#D44A26;text-align:center;font-weight:bold;}

.frm{width:380px;border:1px solid #e1e1e1;background-color:#f9f9f9;padding:15px;text-align:left;color:#666;}

.frm dl{margin-bottom:15px;}

.frm label .l{width:80px;float:left}

.dot{border-bottom: 1px solid #e1e1e1;}

.qnav{width:30px}

.sqldr{padding:10px 0;}

select{background-color:#F6F6F6;}

input[type=text],

input[type=password],

textarea{border:1px solid #CCC; padding:3px; border-top-color:#666;border-left-color:#666;background-color:#F6F6F6; line-height:14px; width:150px;vertical-align:middle;outline:0;}

input[type=text]:focus,

input[type=password]:focus,

textarea:focus{border:1px solid #5EA2D9;background-color:#EDF3F8;}

input[type=submit],

input[type=button],

button{border:1px solid #999;overflow:hidden;outline:0;border-top:#E0E0E0;border-left:#E0E0E0;background-color:#E0E0E0;font-weight:bold;color:#555;padding:0 5px; line-height:17px;height:23px;cursor: pointer;}

var LSK='pma_',LSKX=LSK+'max',LSKM=LSK+'min',qcur=0,LSMAX=32;

function $(i){return document.getElementById(i)}

function frefresh(){

var F=document.DF;

F.method='get';

F.refresh.value="1";

F.submit();

}

function go(p,sql){

var F=document.DF;

F.p.value=p;

if(sql)F.q.value=sql;

F.submit();

}

function ays(){

return confirm('Are you sure to continue?');

}

function chksql(){

var F=document.DF,v=F.q.value;

if(/^\s*(?:delete|drop|truncate|alter)/.test(v)) if(!ays())return false;

if(lschk(1)){

var lsm=lsmax()+1,ls=localStorage;

ls[LSK+lsm]=v;

ls[LSKX]=lsm;

//keep just last LSMAX queries in log

if(!ls[LSKM])ls[LSKM]=1;

var lsmin=parseInt(ls[LSKM]);

if((lsm-lsmin+1)>LSMAX){

lsclean(lsmin,lsm-LSMAX);

}

}

return true;

}

function tc(tr){

if (tr.className=='s'){

tr.className=tr.classNameX;

}else{

tr.classNameX=tr.className;

tr.className='s';

}

}

function lschk(skip){

if (!localStorage || !skip && !localStorage[LSKX]) return false;

return true;

}

function lsmax(){

var ls=localStorage;

if(!lschk() || !ls[LSKX])return 0;

return parseInt(ls[LSKX]);

}

function lsclean(from,to){

ls=localStorage;

for(var i=from;i<=to;i++){

delete ls[LSK+i];ls[LSKM]=i+1;

}

}

function q_prev(){

var ls=localStorage;

if(!lschk())return;

qcur--;

var x=parseInt(ls[LSKM]);

if(qcur

$('q').value=ls[LSK+qcur];

}

function q_next(){

var ls=localStorage;

if(!lschk())return;

qcur++;

var x=parseInt(ls[LSKX]);

if(qcur>x)qcur=x;

$('q').value=ls[LSK+qcur];

}

function after_load(){

var p=document.DF.pwd;

if (p) p.focus();

qcur=lsmax();

}

function logoff(){

if(lschk()){

var ls=localStorage;

var from=parseInt(ls[LSKM]),to=parseInt(ls[LSKX]);

for(var i=from;i<=to;i++){

delete ls[LSK+i];

}

delete ls[LSKM];delete ls[LSKX];

}

}

function cfg_toggle(){

var e=$('cfg-adv');

e.style.display=e.style.display=='none'?'':'none';

}

function chkall(cab){

var e=document.DF.elements;

if (e!=null){

var cl=e.length;

for (i=0;i

}

}

function sht(f){

document.DF.dosht.value=f;

}

phpMiniAdmin

| 数据库: - 选择/刷新 - - 显示全部 -

<?php echo $z.'&q='.urlencode($SHOW_T)?>'>表结构

<?php echo $z?>&shex=1'>导出

<?php echo $z?>&shim=1'>导入

| 设置

<?php if ($GLOBALS['ACCESS_PWD']){?> | 注销 <?php }?>

| phpinfo()

}

function print_screen(){

global $out_message, $SQLq, $err_msg, $reccount, $time_all, $sqldr, $page, $MAX_ROWS_PER_PAGE, $is_limited_sql, $last_count;

$nav='';

if ($is_limited_sql && ($page || $reccount>=$MAX_ROWS_PER_PAGE) ){

$nav="

";

}

print_header();

?>

SQL查询 (多行查询使用";"分割): <>

if (empty($out_message)) {

?>

<?php eo($reccount); if(!is_null($last_count) && $reccount<$last_count){eo(' out of '.$last_count);}?> 行, 查询花费 <?php eo($time_all)?> 秒

}else{

?>

}?>

print_footer();

}

function print_footer(){

?>

}

function print_login(){

print_header();

?>

请输入访问密码

密码:

print_footer();

}

function print_cfg(){

global $DB,$err_msg,$self;

print_header();

?>

数据库连接设置

用户名:
密码:
数据库名称:
数据库地址:
端口:
编码:
- default -<?php echo chset_select($DB['chset'])?>
保存配置

print_footer();

}

//* utilities

function db_connect($nodie=0){

global $dbh,$DB,$err_msg;

$dbh=@mysql_connect($DB['host'].($DB['port']?":$DB[port]":''),$DB['user'],$DB['pwd']);

if (!$dbh) {

$err_msg='Cannot connect to the database because: '.mysql_error();

if (!$nodie) die($err_msg);

}

if ($dbh && $DB['db']) {

$res=mysql_select_db($DB['db'], $dbh);

if (!$res) {

$err_msg='Cannot select db because: '.mysql_error();

if (!$nodie) die($err_msg);

}else{

if ($DB['chset']) db_query("SET NAMES ".$DB['chset']);

}

}

return $dbh;

}

function db_checkconnect($dbh1=NULL, $skiperr=0){

global $dbh;

if (!$dbh1) $dbh1=&$dbh;

if (!$dbh1 or !mysql_ping($dbh1)) {

db_connect($skiperr);

$dbh1=&$dbh;

}

return $dbh1;

}

function db_disconnect(){

global $dbh;

mysql_close($dbh);

}

function dbq($s){

global $dbh;

if (is_null($s)) return "NULL";

return "'".mysql_real_escape_string($s,$dbh)."'";

}

function db_query($sql, $dbh1=NULL, $skiperr=0){

$dbh1=db_checkconnect($dbh1, $skiperr);

$sth=@mysql_query($sql, $dbh1);

if (!$sth && $skiperr) return;

if (!$sth) die("Error in DB operation:
\n".mysql_error($dbh1)."
\n$sql");

return $sth;

}

function db_array($sql, $dbh1=NULL, $skiperr=0, $isnum=0){

$sth=db_query($sql, $dbh1, $skiperr);

if (!$sth) return;

$res=array();

if ($isnum){

while($row=mysql_fetch_row($sth)) $res[]=$row;

}else{

while($row=mysql_fetch_assoc($sth)) $res[]=$row;

}

return $res;

}

function db_row($sql){

$sth=db_query($sql);

return mysql_fetch_assoc($sth);

}

function db_value($sql){

$sth=db_query($sql);

$row=mysql_fetch_row($sth);

return $row[0];

}

function get_identity($dbh1=NULL){

$dbh1=db_checkconnect($dbh1);

return mysql_insert_id($dbh1);

}

function get_db_select($sel=''){

global $DB,$SHOW_D;

if (is_array($_SESSION['sql_sd']) && $_REQUEST['db']!='*'){//check cache

$arr=$_SESSION['sql_sd'];

}else{

$arr=db_array($SHOW_D,NULL,1);

if (!is_array($arr)){

$arr=array( 0 => array('Database' => $DB['db']) );

}

$_SESSION['sql_sd']=$arr;

}

return @sel($arr,'Database',$sel);

}

function chset_select($sel=''){

global $DBDEF;

$result='';

if ($_SESSION['sql_chset']){

$arr=$_SESSION['sql_chset'];

}else{

$arr=db_array("show character set",NULL,1);

if (!is_array($arr)) $arr=array(array('Charset'=>$DBDEF['chset']));

$_SESSION['sql_chset']=$arr;

}

return @sel($arr,'Charset',$sel);

}

function sel($arr,$n,$sel=''){

foreach($arr as $a){

$b=$a[$n];

$res.="$b";

}

return $res;

}

function microtime_float(){

list($usec,$sec)=explode(" ",microtime());

return ((float)$usec+(float)$sec);

}

/* page nav

*/

function get_nav($pg, $all, $PP, $ptpl, $show_all=''){

$n=' ';

$sep=" $n|$n\n";

if (!$PP) $PP=10;

$allp=floor($all/$PP+0.999999);

$pname='';

$res='';

$w=array('Less','More','Back','Next','First','Total');

$sp=$pg-2;

if($sp<0) $sp=0;

if($allp-$sp<5 && $allp>=5) $sp=$allp-5;

$res="";

if($sp>0){

$pname=pen($sp-1,$ptpl);

$res.="$w[0]";

$res.=$sep;

}

for($p_p=$sp;$p_p

$first_s=$p_p*$PP+1;

$last_s=($p_p+1)*$PP;

$pname=pen($p_p,$ptpl);

if($last_s>$all){

$last_s=$all;

}

if($p_p==$pg){

$res.="$first_s..$last_s";

}else{

$res.="$first_s..$last_s";

}

if($p_p+1

}

if($sp+5

$pname=pen($sp+5,$ptpl);

$res.="$w[1]";

}

$res.="
\n";

if($pg>0){

$pname=pen($pg-1,$ptpl);

$res.="$w[2] $n|$n ";

$pname=pen(0,$ptpl);

$res.="$w[4]";

}

if($pg>0 && $pg+1

if($pg+1

$pname=pen($pg+1,$ptpl);

$res.="$w[3]";

}

if ($show_all) $res.=" ($w[5] - $all) ";

return $res;

}

function pen($p,$np=''){

return str_replace('%p%',$p, $np);

}

function killmq($value){

return is_array($value)?array_map('killmq',$value):stripslashes($value);

}

function savecfg(){

$v=$_REQUEST['v'];

$_SESSION['DB']=$v;

unset($_SESSION['sql_sd']);

if ($_REQUEST['rmb']){

$tm=time()+60*60*24*30;

newcookie("conn[db]", $v['db'],$tm);

newcookie("conn[user]",$v['user'],$tm);

newcookie("conn[pwd]", $v['pwd'],$tm);

newcookie("conn[host]",$v['host'],$tm);

newcookie("conn[port]",$v['port'],$tm);

newcookie("conn[chset]",$v['chset'],$tm);

}else{

newcookie("conn[db]", FALSE,-1);

newcookie("conn[user]",FALSE,-1);

newcookie("conn[pwd]", FALSE,-1);

newcookie("conn[host]",FALSE,-1);

newcookie("conn[port]",FALSE,-1);

newcookie("conn[chset]",FALSE,-1);

}

}

// Allow httponly cookies, or the password is stored plain text in a cookie

function newcookie($n,$v,$e){$x;return setcookie($n,$v,$e,$x,$x,!!$x,!$x);}

//during login only - from cookies or use defaults;

function loadcfg(){

global $DBDEF;

if( isset($_COOKIE['conn']) ){

$a=$_COOKIE['conn'];

$_SESSION['DB']=$_COOKIE['conn'];

}else{

$_SESSION['DB']=$DBDEF;

}

if (!strlen($_SESSION['DB']['chset'])) $_SESSION['DB']['chset']=$DBDEF['chset'];

}

//each time - from session to $DB_*

function loadsess(){

global $DB;

$DB=$_SESSION['DB'];

$rdb=$_REQUEST['db'];

if ($rdb=='*') $rdb='';

if ($rdb) {

$DB['db']=$rdb;

}

}

function print_export(){

global $self,$xurl,$DB;

$t=$_REQUEST['t'];

$l=($t)?"表 $t":"数据库";

print_header();

?>

导出<?php eo($l)?>

表结构

数据

.sql

.csv (Excel的风格,仅单表)

( ) .csv (要导出CSV - 点击表结构导出单表)

import has super privileges
压缩为 .gz

print_footer();

exit;

}

function do_export(){

global $DB,$VERSION,$D,$BOM,$ex_isgz;

$rt=str_replace('`','',$_REQUEST['t']);

$t=explode(",",$rt);

$th=array_flip($t);

$ct=count($t);

$z=db_row("show variables like 'max_allowed_packet'");

$MAXI=floor($z['Value']*0.8);

if(!$MAXI)$MAXI=838860;

$aext='';$ctp='';

$ex_super=($_REQUEST['sp'])?1:0;

$ex_isgz=($_REQUEST['gz'])?1:0;

if ($ex_isgz) {

$aext='.gz';$ctp='application/x-gzip';

}

ex_start();

if ($ct==1&&$_REQUEST['et']=='csv'){

ex_hdr($ctp?$ctp:'text/csv',"$t[0].csv$aext");

if ($DB['chset']=='utf8') ex_w($BOM);

$sth=db_query("select * from `$t[0]`");

$fn=mysql_num_fields($sth);

for($i=0;$i

$m=mysql_fetch_field($sth,$i);

ex_w(qstr($m->name).(($i

}

ex_w($D);

while($row=mysql_fetch_row($sth)) ex_w(to_csv_row($row));

ex_end();

exit;

}

ex_hdr($ctp?$ctp:'text/plain',"$DB[db]".(($ct==1&&$t[0])?".$t[0]":(($ct>1)?'.'.$ct.'tables':'')).".sql$aext");

ex_w("-- phpMiniAdmin dump $VERSION$D-- Datetime: ".date('Y-m-d H:i:s')."$D-- Host: $DB[host]$D-- Database: $DB[db]$D$D");

ex_w("/*!40030 SET NAMES $DB[chset] */;$D");

$ex_super && ex_w("/*!40030 SET GLOBAL max_allowed_packet=16777216 */;$D$D");

ex_w("/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;$D$D");

$sth=db_query("show tables from `$DB[db]`");

while($row=mysql_fetch_row($sth)){

if (!$rt||array_key_exists($row[0],$th)) do_export_table($row[0],1,$MAXI);

}

ex_w("/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;$D$D");

ex_w("$D-- phpMiniAdmin dump end$D");

ex_end();

exit;

}

function do_export_table($t='',$isvar=0,$MAXI=838860){

global $D;

@set_time_limit(600);

if($_REQUEST['s']){

$sth=db_query("show create table `$t`");

$row=mysql_fetch_row($sth);

$ct=preg_replace("/\n\r|\r\n|\n|\r/",$D,$row[1]);

ex_w("DROP TABLE IF EXISTS `$t`;$D$ct;$D$D");

}

if ($_REQUEST['d']){

$exsql='';

ex_w("/*!40000 ALTER TABLE `$t` DISABLE KEYS */;$D");

$sth=db_query("select * from `$t`");

while($row=mysql_fetch_row($sth)){

$values='';

foreach($row as $v) $values.=(($values)?',':'').dbq($v);

$exsql.=(($exsql)?',':'')."(".$values.")";

if (strlen($exsql)>$MAXI) {

ex_w("INSERT INTO `$t` VALUES $exsql;$D");$exsql='';

}

}

if ($exsql) ex_w("INSERT INTO `$t` VALUES $exsql;$D");

ex_w("/*!40000 ALTER TABLE `$t` ENABLE KEYS */;$D$D");

}

flush();

}

function ex_hdr($ct,$fn){

header("Content-type: $ct");

header("Content-Disposition: attachment; filename=\"$fn\"");

}

function ex_start(){

global $ex_isgz,$ex_gz,$ex_tmpf;

if ($ex_isgz){

$ex_tmpf=tmp_name().'.gz';

if (!($ex_gz=gzopen($ex_tmpf,'wb9'))) die("Error trying to create gz tmp file");

}

}

function ex_w($s){

global $ex_isgz,$ex_gz;

if ($ex_isgz){

gzwrite($ex_gz,$s,strlen($s));

}else{

echo $s;

}

}

function ex_end(){

global $ex_isgz,$ex_gz,$ex_tmpf;

if ($ex_isgz){

gzclose($ex_gz);

readfile($ex_tmpf);

unlink($ex_tmpf);

}

}

function print_import(){

global $self,$xurl,$DB;

print_header();

?>

导入数据库

.sql 或者 .gz 文件:

print_footer();

exit;

}

function do_import(){

global $err_msg,$out_message,$dbh,$SHOW_T;

$err_msg='';

$F=$_FILES['file1'];

if ($F && $F['name']){

$filename=$F['tmp_name'];

$pi=pathinfo($F['name']);

if ($pi['extension']!='sql'){//if not sql - assume .gz

$tmpf=tmp_name();

if (($gz=gzopen($filename,'rb')) && ($tf=fopen($tmpf,'wb'))){

while(!gzeof($gz)){

if (fwrite($tf,gzread($gz,8192),8192)===FALSE){$err_msg='Error during gz file extraction to tmp file';break;}

}//extract to tmp file

gzclose($gz);fclose($tf);$filename=$tmpf;

}else{$err_msg='Error opening gz file';}

}

if (!$err_msg){

if (!do_multi_sql('', $filename)){

$err_msg='Import Error: '.mysql_error($dbh);

}else{

$out_message='Import done successfully';

do_sql($SHOW_T);

return;

}}

}else{

$err_msg="Error: Please select file first";

}

print_import();

exit;

}

// multiple SQL statements splitter

function do_multi_sql($insql,$fname=''){

@set_time_limit(600);

$sql='';

$ochar='';

$is_cmt='';

$GLOBALS['insql_done']=0;

while ($str=get_next_chunk($insql,$fname)){

$opos=-strlen($ochar);

$cur_pos=0;

$i=strlen($str);

while ($i--){

if ($ochar){

list($clchar, $clpos)=get_close_char($str, $opos+strlen($ochar), $ochar);

if ( $clchar ) {

if ($ochar=='--' || $ochar=='#' || $is_cmt ){

$sql.=substr($str, $cur_pos, $opos-$cur_pos );

}else{

$sql.=substr($str, $cur_pos, $clpos+strlen($clchar)-$cur_pos );

}

$cur_pos=$clpos+strlen($clchar);

$ochar='';

$opos=0;

}else{

$sql.=substr($str, $cur_pos);

break;

}

}else{

list($ochar, $opos)=get_open_char($str, $cur_pos);

if ($ochar==';'){

$sql.=substr($str, $cur_pos, $opos-$cur_pos+1);

if (!do_one_sql($sql)) return 0;

$sql='';

$cur_pos=$opos+strlen($ochar);

$ochar='';

$opos=0;

}elseif(!$ochar) {

$sql.=substr($str, $cur_pos);

break;

}else{

$is_cmt=0;if ($ochar=='/*' && substr($str, $opos, 3)!='/*!') $is_cmt=1;

}

}

}

}

if ($sql){

if (!do_one_sql($sql)) return 0;

$sql='';

}

return 1;

}

//read from insql var or file

function get_next_chunk($insql, $fname){

global $LFILE, $insql_done;

if ($insql) {

if ($insql_done){

return '';

}else{

$insql_done=1;

return $insql;

}

}

if (!$fname) return '';

if (!$LFILE){

$LFILE=fopen($fname,"r+b") or die("Can't open [$fname] file $!");

}

return fread($LFILE, 64*1024);

}

function get_open_char($str, $pos){

if ( preg_match("/(\/\*|^--|(?<=\s)--|#|'|\"|;)/", $str, $m, PREG_OFFSET_CAPTURE, $pos) ) {

$ochar=$m[1][0];

$opos=$m[1][1];

}

return array($ochar, $opos);

}

#RECURSIVE!

function get_close_char($str, $pos, $ochar){

$aCLOSE=array(

'\'' => '(?

'"' => '(?

'/*' => '\*\/',

'#' => '[\r\n]+',

'--' => '[\r\n]+',

);

if ( $aCLOSE[$ochar] && preg_match("/(".$aCLOSE[$ochar].")/", $str, $m, PREG_OFFSET_CAPTURE, $pos ) ) {

$clchar=$m[1][0];

$clpos=$m[1][1];

$sl=strlen($m[2][0]);

if ($ochar=="'" && $sl){

if ($sl % 2){ #don't count as CLOSE char if number of slashes before ' ODD

list($clchar, $clpos)=get_close_char($str, $clpos+strlen($clchar), $ochar);

}else{

$clpos+=strlen($clchar)-1;$clchar="'";#correction

}

}

}

return array($clchar, $clpos);

}

function do_one_sql($sql){

global $last_sth,$last_sql,$MAX_ROWS_PER_PAGE,$page,$is_limited_sql, $last_count;

$sql=trim($sql);

$sql=preg_replace("/;$/","",$sql);

if ($sql){

$last_sql=$sql;$is_limited_sql=0;

$last_count=NULL;

if (preg_match("/^select/i",$sql) && !preg_match("/limit +\d+/i", $sql)){

$sql1='select count(*) from ('.$sql.') ___count_table';

$last_count=db_value($sql1);

$offset=$page*$MAX_ROWS_PER_PAGE;

$sql.=" LIMIT $offset,$MAX_ROWS_PER_PAGE";

$is_limited_sql=1;

}

$last_sth=db_query($sql,0,'noerr');

return $last_sth;

}

return 1;

}

function do_sht(){

global $SHOW_T;

$cb=$_REQUEST['cb'];

if (!is_array($cb)) $cb=array();

$sql='';

switch ($_REQUEST['dosht']){

case 'exp':$_REQUEST['t']=join(",",$cb);print_export();exit;

case 'drop':$sq='DROP TABLE';break;

case 'trunc':$sq='TRUNCATE TABLE';break;

case 'opt':$sq='OPTIMIZE TABLE';break;

}

if ($sq){

foreach($cb as $v){

$sql.=$sq." $v;\n";

}

}

if ($sql) do_sql($sql);

do_sql($SHOW_T);

}

function to_csv_row($adata){

global $D;

$r='';

foreach ($adata as $a){

$r.=(($r)?",":"").qstr($a);

}

return $r.$D;

}

function qstr($s){

$s=nl2br($s);

$s=str_replace('"','""',$s);

return '"'.$s.'"';

}

function get_rand_str($len){

$result='';

$chars=preg_split('//','ABCDEFabcdef0123456789');

for($i=0;$i

return $result;

}

function check_xss(){

global $self;

if ($_SESSION['XSS']!=trim($_REQUEST['XSS'])){

unset($_SESSION['XSS']);

header("location: $self");

exit;

}

}

function rw($s){

echo hs($s)."
\n";

}

function tmp_name() {

if ( function_exists('sys_get_temp_dir')) return tempnam(sys_get_temp_dir(),'pma');

if( !($temp=getenv('TMP')) )

if( !($temp=getenv('TEMP')) )

if( !($temp=getenv('TMPDIR')) ) {

$temp=tempnam(__FILE__,'');

if (file_exists($temp)) {

unlink($temp);

$temp=dirname($temp);

}

}

return $temp ? tempnam($temp,'pma') : null;

}

function hs($s){

return htmlspecialchars($s, ENT_COMPAT|ENT_HTML401,'UTF-8');

}

function eo($s){//echo+escape

echo hs($s);

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值