get_row_prepare("SELECT * FROM MN_bs WHERE name=? limit 1", [$cxname]);
if(isset($rowse)) {
exit('{"code":100,"msg":"该程序名称已被其他程序占用"}');
}
$wjdhlmym=strtolower(substr(strrchr($_FILES['filecx']['name'], '.'), 1));
//获取文件标识名并转换为小写
if($wjdhlmym!='zip' && $wjdhlmym!='7z' && $wjdhlmym!='rar' && $wjdhlmym!='gzip' && $wjdhlmym!='jar') {
exit('{"code":100,"msg":"源码类型错误:目前仅支持zip,7z,rar,gzip,jar类型的压缩包"}');
}
if(is_dir('../filecx')) {
} else {
mkdir('../filecx');
}
//判断根目录下的filecx文件夹是否存在
for ($isx=1;$isx<200;$isx++) {
$sf = $date.mt_rand(16,999).$cxname.$cxjs.$cxarmb;
$rqsj=md5($sf);
$hsks=mt_rand(0,5);
$hskr=mt_rand(6,10);
$wjjm=substr($rqsj, $hsks , 8);
//算法计算文件夹名称
if(!is_dir('../filecx/'.$wjjm)) {
$isx=2000;
break;
}
//避免目录名称重复
}
$sfjgf='../filecx/'.$wjjm;
//此程序所在的文件夹
mkdir($sfjgf);
//新建文件夹
//下面开始程序源码的保存
$cxxiname=$sfjgf.'/'.'cxym.'.$wjdhlmym;
//源码文件的路径以及名称
copy($_FILES['filecx']['tmp_name'],$cxxiname);
//拷贝文件
unlink($_FILES['filecx']['tmp_name']);
//删除原文件
//程序的保存到此结束 程序的源码名称统一为cxym标识名取原名称
unset($_FILES['filecx']);
//去掉上传的程序源码的数组
mkdir($sfjgf.'/tp');
//在程序文件夹中新建一个文件夹用来存储图片
$acft='0';
//新建一个变量用来标识每张图片的名称每次循环完成后都会+1
$szaie=array();
//创建一个空的数组
foreach ($_FILES['imgfile']['tmp_name'] as $aryqs=>$_value) {
//下面开始图片的保存
$cxxname=$sfjgf.'/tp/'.$acft.'.'.substr(strrchr($_FILES['imgfile']['name'][$aryqs], '.'), 1);
//图片文件的路径以及名称
copy($_value,$cxxname);
//拷贝图片
unlink($_value);
//删除原文件
//图片的保存到此结束 图片的名称为1,2,3依次排序
$acft++;
//变量+1
array_push($szaie,$cxxname);
//插入一个字符串
}
$fn_cz=$_POST['czf'];
foreach ($fn_cz as $xbd=>$val) {
if($val['cz']=='setwj' || $val['cz']=='setwjt') {
//判断操作是否为修改文件内容
$wjszwz=$sfjgf.'/setwj';
//此操作文件的所在位置
mkdir($wjszwz);
//新建文件
file_put_contents ($wjszwz.'/'.$xbd.'.setwj',$val['nr']);
//写入文件内容
$fn_cz[$xbd]['nr']=$wjszwz.'/'.$xbd.'.setwj';
//修改数组
}
}
$jsonzd=json_encode(array($cxwebkj,$cxsqlkj));
//程序所需最低配置
$jsonsjz=json_encode($fn_cz,256);
//程序的安装配置
$jsonipt=daddslashes(json_encode($_POST['bdf'],256));
//安装前表单填写的配置
$jsontp=daddslashes(json_encode($szaie,256));
//程序的图片
$rowe=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE 1 order by id desc limit 1");
$id=$rowe['id']+1;
$tj=json_encode(array());
if($DB->query_prepare("INSERT INTO `MN_bs` (`id`, `name`, `jc`, `src`, `date`, `cxwz`, `sxpz`, `tj`, `jg`, `inp`, `pz`, `alet`, `qk`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", [$id, $cxname, $cxjs, $jsontp, $date, $cxxiname, $jsonzd, $tj, $cxrmb, $jsonipt, $jsonsjz, $alerts, $kg])) {
exit('{"code":200,"msg":"添加成功!"}');
} else {
exit('{"code":100,"msg":"添加失败'.$DB->error().'"}');
}
return;
}
if($egn=='cxxgjl') {
$id=daddslashes($_POST['id']);
$name=daddslashes($_POST['cxname']);
$jc=daddslashes($_POST['cxjc']);
$web=daddslashes($_POST['webkj']);
$sql=daddslashes($_POST['sqlkj']);
$jg=daddslashes($_POST['cxrmb']);
$alerts=daddslashes($_POST['alerts']);
$kg=daddslashes($_POST['cxkg']);
$websql=json_encode(array($web,$sql));
$cres=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE id=? limit 1", [$id]);
$fn_cz=$_POST['czf'];
foreach ($fn_cz as $xbd=>$val) {
if($val['cz']=='setwj' || $val['cz']=='setwjt') {
//判断操作是否为修改文件内容
$sfjgf='../filecx/'.explode("/",$cres['cxwz'])[2];
$wjszwz=$sfjgf.'/setwj';
//此操作文件的所在位置
@unlink($wjszwz.'/'.$xbd.'.setwj');
//删除文件
if(is_dir($wjszwz)) {
} else {
mkdir($wjszwz);
}
//判断setwj文件夹是否存在
file_put_contents ($wjszwz.'/'.$xbd.'.setwj',$val['nr']);
//新建并写入文件内容
$fn_cz[$xbd]['nr']=$wjszwz.'/'.$xbd.'.setwj';
//修改数组
}
}
$jsonsjz=json_encode($fn_cz,256);
//程序的安装配置
$jsonipt=json_encode($_POST['bdf'],256);
//安装前表单填写的配置
if($DB->query_prepare("update `MN_bs` set `name` =?, `jc` =?, `jg` =?, `inp` =?, `sxpz` =?, `qk` =?, `pz`=?, `alet`=? where `id`=?", [$name, $jc, $jg, $jsonipt, $websql, $kg, $jsonsjz, $alerts, $id]))json_exit('修改成功'); else json_exit('修改失败!');
return;
}
if($egn=='cxsc') {
$id=$_POST['id'];
$val=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE id=? limit 1", [$id]);
if(explode("/",$val['cxwz'])[2]!=null) {
deldir('../filecx/'.explode("/",$val['cxwz'])[2]);
}
if($DB->query_prepare("DELETE FROM MN_bs WHERE id=? limit 1", [$id]))json_exit('删除成功'); else json_exit('删除失败'.$DB->error());
return;
}
if($egn=='cxscxz') {
$idsz=$_POST['idsz'];
$scqkr=0;
$scqke=0;
foreach($idsz as $id) {
$val=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE id=? limit 1", [$id]);
if($DB->query_prepare("DELETE FROM MN_bs WHERE id=? limit 1", [$id])) {
if(explode("/",$val['cxwz'])[2]!=null) {
deldir('../filecx/'.explode("/",$val['cxwz'])[2]);
}
$scqke++;
} else $scqkr++;
}
json_exit($scqke, ['codr' => $scqkr]);
return;
}
if($egn=='listbs') {
//程序列表
$sorting=strtoupper($_POST['sortOrder']??'')==='DESC'?'DESC':'ASC';
$paixu=preg_replace('/[^a-zA-Z0-9_]/','',$_POST['sort']??'id')?:'id';
$pagesize=intval($_POST['limit']);
$pageu=(intval($_POST['page'])-1) * $pagesize;
$countdata=$DB->count_prepare("SELECT count(*) from MN_bs WHERE 1");
$data=["total"=>$countdata];
$data["rows"]=$DB->get_all_prepare("SELECT * FROM MN_bs order by $paixu $sorting limit $pageu,$pagesize");
foreach ($data["rows"] as &$res) {
$res['cxdx']=sprintf( "%.2f ",filesize($res['cxwz'])/1048576);
$fn_cz=json_decode($res['pz'],true);
if($fn_cz!=null) {
foreach ($fn_cz as $xbd=>$val) {
if($val['cz']=='setwj' || $val['cz']=='setwjt') {
$fn_cz[$xbd]['nr']=file_get_contents($val['nr']);
}
}
$res['pz']=json_encode($fn_cz,256);
}
}
unset($res);
exit(json_encode($data));
return;
}
if($egn=='cxdc') {
//程序导出
include("../MPHX/BL.php");
$ids=daddslashes($_POST['id']);
$dccg=0;
$dcsb=0;
//导出成功次数和导出失败次数
$zipfile='../filecx/export_file.zip';
//压缩包存放目录
@unlink($zipfile);
//删除原来的一个压缩包
foreach ($ids as $id) {
$cres=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE id=? limit 1", [$id]);
if($cres==false)exit(json_encode(["code"=>4,"code"=>"错误!程序不存在!"]));
$arr=[];
$arr['vs']=$WEBQB;
$arr['config']=$cres;
$fileconfig=json_encode($arr,256);
//配置信息,中文不转义
$cxpath='../filecx/'.explode("/",$cres['cxwz'])[2];
//程序所在目录
$zipqk=zipfile($cxpath,'../filecx/export_file.zip','/',$fileconfig);
if($zipqk['code']==1) {
$dccg++;
} else {
$dcsb++;
}
}
exit(json_encode(['code'=>1,'msg'=>"打包成功$dccg个程序,打包失败$dcsb个程序"],256));
return;
}
if($egn=='cxfiledru') {
//程序导入
include("../MPHX/BL.php");
$ysize=daddslashes($_POST['fesw']);
//已经上传的大小
$zsize=daddslashes($_POST['zsize']);
//总大小
$file=$_FILES['file'];
//文件
$tmp_path='../filecx/file_import_tmp';
//导入文件解压后的临时存放位置
$filepath='../filecx/import_file.zip';
//压缩包存放目录和文件名
if(is_dir($tmp_path))deldir($tmp_path);
//删除临时目录
if(!is_dir($tmp_path))mkdir($tmp_path);
//新建目录
if($ysize==0) {
@unlink($filepath);
//删除上一次的导入文件
}
if(filesize($filepath)<$zsize) {
$files=file_get_contents($file['tmp_name']);
//读取
file_put_contents($filepath, $files, FILE_APPEND | LOCK_EX);
//写入
@unlink($file['tmp_name']);
//删除
}
$filesizes=filesize($filepath);
if($filesizes>$zsize)exit(json_encode(['error'=>1,'size'=>4,'msg'=>'抱歉,我们遇见了一个未知的错误!请重新导入!']));
if($filesizes<$zsize) {
//上传未完成,通知继续上传
exit(json_encode(['error'=>0,'size'=>$filesizes]));
}
//解压文件
$zip = new \ZipArchive;
if($zip->open($filepath)===true) {
//打开
$zip->extractTo($tmp_path);
//解压
$zip->close();
//关闭
@unlink($filepath);
//删除压缩包
} else {
@unlink($filepath);
//删除压缩包
exit(json_encode(['error'=>1,'size'=>4,'msg'=>'错误!压缩包打开失败!']));
}
//读取数据导入文件
$imptlist=scandir($tmp_path);
//导入的文件列表
$filelist=scandir('../filecx');
//原来的文件列表
if($imptlist[0]=='.')unset($imptlist[0]);
if($imptlist[1]=='..')unset($imptlist[1]);
if(empty($imptlist))exit(json_encode(['error'=>1,'size'=>4,'msg'=>'错误!导入文件不存在!']));
$drcgf=0;
$drsbf=0;
//成功,失败
foreach ($imptlist as $val) {
if(in_array($val,$filelist)) {
$drsbf++;
continue;
}
$path=$tmp_path.'/'.$val;
//导入的文件的目录
$config_file=$path.'/mnbt_file_conf.json';
//配置文件
if(!is_file($config_file)) {
$drsbf++;
continue;
}
$config=json_decode(file_get_contents($config_file),true)['config'];
//读取配置文件
if(!$config) {
$drsbf++;
continue;
}
@unlink($config_file);
$columns = [];
$placeholders = [];
$params = [];
foreach ($config as $k=>$v) {
if($k=='id') {
$rowe=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE 1 order by id desc limit 1");
$v=$rowe['id']+1;
}
if($k=='qk')$v=$_POST['sxj'];
if($k=='name') {
$rowse=$DB->get_row_prepare("SELECT * FROM MN_bs WHERE name=? limit 1", [$cxname]);
if(isset($rowse)) {
$columns = false;
break;
}
}
if ($columns !== false) {
$columns[] = '`'.$k.'`';
$placeholders[] = '?';
$params[] = $v;
}
}
if(!$columns || !$params) {
$drsbf++;
continue;
}
$sql = "INSERT INTO `MN_bs` (".implode(',', $columns).") VALUES (".implode(',', $placeholders).")";
if(!rename($path,'../filecx/'.$val)) {
$drsbf++;
continue;
}
if($DB->query_prepare($sql, $params)) {
$drcgf++;
} else {
$drsbf++;
//失败
if(is_dir('../filecx/'.$val))deldir('../filecx/'.$val);
}
}
//删除临时目录
if(is_dir($tmp_path))deldir($tmp_path);
exit(json_encode(['error'=>1,'size'=>1,'msg'=>'导入成功'.$drcgf.'个程序!导入失败'.$drsbf.'个程序!']));
return;
}
return;