filebox在线文件管理工具V1.11.1.1查分吧修改自用版免费分享[PHP]

* 基于:https://down.chinaz.com/soft/35899.htm
* 查分吧 修改自用版今日对外分享(自2016年1.10版本以来一直用他云开发:Web环境即时看效果)

* 也可以用于本人很多txt/csv通用查询系统的在线管理后台管理数据

* 默认登陆账号filebox密码nidemima
* 修改账号密码:21-22行;获取密码MD5值:
*        登录状态访问?op=mima&mi=nidemima得到的值(网址中nidemima改为自己密码)
* 在原作者基础上删减不常用FTP功能少的sql工具,剩下纯粹web文件管理
* 删减文件夹大小统计功能:防止过多文件影响性能
* 增强密码安全(密文)存储:安全建议:文件名改为只有自己知道的 或者用完删除
* 原来只能PHP5正常,非常多优化可在PHP7 PHP8运行(宝塔/护卫神linux环境通过,windows可用)

<?php
/**
* 程序说明
* @package  FileBox
* @author  Jooies <jooies@ya.ru>
* @copyright Copyright (c) 2014-2016
* @since  Version 1.11.1.1 
* 基于:https://down.chinaz.com/soft/35899.htm
* 查分吧 修改自用版今日对外分享(自2016年1.10版本以来一直用他云开发:Web环境即时看效果)
* 也可以用于本人很多txt/csv通用查询系统的在线管理后台管理数据
* 默认登陆账号filebox密码nidemima
* 修改账号密码:21-22行;获取密码MD5值;
* 登录状态访问?op=mima&mi=nidemima得到的值(网址中nidemima改为自己密码)
* 在原作者基础上删减不常用FTP功能少的sql工具,剩下纯粹web文件管理
* 删减文件夹大小统计功能:防止过多文件影响性能
* 增强密码安全(密文)存储:安全建议:文件名改为只有自己知道的 或者用完删除
* 原来只能PHP5正常,非常多优化可在PHP7 PHP8运行(宝塔/护卫神linux环境通过,windows可用)
*/
error_reporting(0);
header('Content-Type: text/html; charset=utf-8');
date_default_timezone_set('Asia/Shanghai');
session_start();
$sitetitle = 'FileBox';
$user = 'filebox';
$toke = 'chafenba';//
//c9d78c00b9a72c65e829c2320e58e4e1 对应 nidemima
$pass = 'c9d78c00b9a72c65e829c2320e58e4e1';//填写本页登录状态访问?op=mima&mi=nidemima得的值
$ipes = $_SERVER['REMOTE_ADDR'];
$safe_num = 15;//设置多少次后禁止登陆,为0则不限制
$meurl = $_SERVER['PHP_SELF'];
$os = (DIRECTORY_SEPARATOR=='\\')?"windows":'linux';
$op = (isset($_REQUEST['op']))?htmlentities($_REQUEST['op']):'home';
$action = (isset($_REQUEST['action']))?htmlspecialchars($_REQUEST['action']):'';
$folder = (isset($_REQUEST['folder']))?htmlspecialchars($_REQUEST['folder']):'./';
$arr = str_split($folder);
if($arr[count($arr)-1]!=='/')$folder .= '/';
while(preg_match('/\.\.\//',$folder))$folder = preg_replace('/\.\.\//','/',$folder);
while(preg_match('/\/\//',$folder))$folder = preg_replace('/\/\//','/',$folder);
if($folder == '')$folder = "./";
$ufolder = $folder;
$fess = (isset($_SESSION['ertimes']))?$_SESSION['ertimes']:'1';
if($fess > $safe_num && $safe_num !== 0) printerror('您已经被限制登陆!');
$myus = (isset($_COOKIE['muser']))?htmlentities($_COOKIE['muser']):'filebox';
$myps = (isset($_COOKIE['mpass']))?htmlentities($_COOKIE['mpass']):'253252545';
if ($myus != md5($user."@%".$ipes) || $_COOKIE['mpass'] != md5($pass."%@".$ipes)) {
$guser = (isset($_REQUEST['user']))?htmlentities($_REQUEST['user']):'';
$gpass = (isset($_REQUEST['pass']))?htmlentities($_REQUEST['pass']):'';
if ($guser == $user && md5($gpass.$toke) == $pass) {
setcookie('muser',md5($user."@%".$ipes),time()+60*60*3);
setcookie('mpass',md5($pass."%@".$ipes),time()+60*60*3);
}else{
if (strlen($guser)>5 && strlen($gpass)>5) { $er = true;}else{$er = false; }
login($er);
exit;
}
}
function maintop($title,$showtop = true) {
global $meurl,$sitetitle,$op;
echo "<!DOCTYPE html>\n<meta name='robots' content='noindex,follow' />\n<head>\n<meta name='viewport' content='width=device-width, initial-scale=1'/>\n"
."<title>$sitetitle - $title</title>\n"
."</head>\n"
."<body>\n";
echo <<<EOT
<style>
* { font-family:'Verdana','Microsoft Yahei';}
.box { border:1px solid #ccc;background-color:#fff;padding:10px;}
abbr { text-decoration:none;}
.title { border:1px solid #ccc;border-bottom:0;font-weight:normal;text-align:left;width:678px;padding:10px;font-size:12px;color:#666;background-color:#F0F0F0;}
.right { float:right;text-align:right !important;}
.content { width:700px;margin:auto;overflow:hidden;font-size:13px;}
.login_button { height:43px;line-height:18px;font-family:'Candara';}
.login_text { font-family:'Candara','Microsoft Yahei';vertical-align:middle;padding:7px;width:40%;font-size:22px;border:1px #ccc solid;}
input[type=text]:focus,input[type=password]:hover { outline:0;background-color:#f8f8f8;}
input[type=text]:hover,input[type=password]:hover,input[type=password]:active { outline:0;background-color:#f8f8f8;}
h2 { color:#514f51;text-align:center;margin:16px 0;font-size:48px;background-image:-webkit-gradient(linear, 0 0, 0 bottom, from(#7d7d7d), to(#514f51));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-family:'Candara','Lucida Sans','Microsoft Yahei' !important;}
span { margin-bottom:8px;}
a:visited { color:#333;text-decoration:none;}
a:hover { color:#999;text-decoration:none;}
a { color:#333;text-decoration:none;border-bottom:1px solid #CCC;}
a:active { color:#999;text-decoration:none;}
.title a,td a,.menu a { border:0}
textarea { outline:none;font-family:'Yahei Consolas Hybrid',Consolas,Verdana,Tahoma,Arial,Helvetica,'Microsoft Yahei',sans-serif !important;font-size:13px;border:1px solid #ccc;margin-top:-1px;padding:8px;line-height:18px;width:682px;max-width:682px;}
input.button { background-color:#eeeeee;text-align:center !important;outline:none;border:1px solid #adadad;*display:inline;color:#000;padding:3px 18px;font-size:13px;margin-top:10px;transition:border-color 0.5s;}
input.button:hover { background-color:#e5f1fb;border-color:#0078d7;}
input.mob { padding:3px 40px;}
input.text,select,option,.upload { border:1px solid #ccc;margin:6px 1px;padding:5px;font-size:13px;height:16px;}
body { background-color:#fff;margin:0px 0px 10px;}
.error { font-size:10pt;color:#AA2222;text-align:left}
.menu { position:fixed;font-size:13px;}
.menu li { list-style-type:none;padding:7px 25px;border-left:#fff solid 3px;margin-bottom:2px;}
.menu li.curr { border-left:#666 solid 3px;background-color:#f7f7f7;}
.menu li:hover { border-color:#469;background-color:#ededed;}
.odTable span { cursor:pointer;}
.odTable b { color:#ccc;font-size:12px;}
.menu a:hover { color:#707070;}
.table { background-color:#777;color:#fff;}
th { text-align:left;height:40px;line-height:40px;border-bottom:3px solid #dbdbdb;font-size:14px;background-color:#f8f8f8 !important;}
table { border:1px solid #ccc;border-collapse:collapse;}
tr { color:#666;height:31px;font-size:12px;}
tr a { color:#333}
th { color:#333;}
tr:nth-child(odd) { background-color:#fff;}
tr:nth-child(even) { background-color:#f5f5f7;}
tr:hover { background-color:#ebeced;}
.upload { width:50%;}
.home,.com { display:none;}
.long { width:70%}
.short { width:20%}
.open { width:40px;}
.rename { width:50px;}
@media handheld, only screen and (max-width:960px) {
textarea { width:calc(100% - 18px);max-width:calc(100% - 18px);}
.upload { width:calc(100% - 18px);}
.login_button { width:100%;margin-top:0 !important;padding:20px 5px !important;height:60px;font-size:23px !important;}
.login_text { display:block;margin-bottom:0;padding:20px 10px;width:100%;border-bottom:0;}
.menu { margin-left:-40px;position:static;padding:0;}
.menu li { padding-bottom:8px;}
.title { width:calc(100% - 22px);}
input.mob { height:40px;font-size:15px;width:100%;display:block;}
.content { width:100%}
input.button { padding:3px 10px;}
.mobile b,.mobi { display:none;}
.com { display:inline;}
th { font-weight:normal;font-size:12px;}
.open,.rename { width:25px;}
}
</style>
EOT;
echo "<h2>$sitetitle</h2>\n";
if ($showtop) {//头部菜单内容
$burl=(isset($_SESSION['folder']))?addslashes($_SESSION['folder']):"";
$back=($op!=='home')?"<a href='{$meurl}?op=home&folder={$burl}'><li>返回</li></a>\n":'';
if(stristr('-up-upload-yupload-',"-$op-")){$up = "class='curr'";}else{$up = "";}
if(stristr('-home-edit-ren-unz-',"-$op-")){$home = "class='curr'";}else{$home = "";}
if($op=='cr'||$op=='create'){$cr = "class='curr'";}else{$cr = "";}
echo "<div class='menu'>\n<ul><a href='{$meurl}?op=home'><li {$home}>主页</li></a>\n{$back}"
."<a href='{$meurl}?op=up'><li {$up}>上传文件</li></a>\n"
."<a href='{$meurl}?op=cr'><li {$cr}>创建文件</li></a>\n"
."<a href='{$meurl}?op=logout'><li>注销</li></a>\n"
."</ul></div>";
}
echo "<div class='content'>\n";
}
function login($er=false) {
global $meurl,$op,$safe_num,$mail;
setcookie("muser","",time()-60*60*24*1);
setcookie("mpass","",time()-60*60*24*1);
maintop("登录",false);
if ($er) {
if (isset($_SESSION['ertimes'])){
$_SESSION['ertimes']++;
if($_SESSION['ertimes'] > $safe_num && $safe_num !== 0){
echo ('<span class="error">ERROR: 您已经被限制登陆!</span>');
exit;
}
}else{
$_SESSION['ertimes'] = 1;
}
echo "<span class=error>用户名或密码错误!</span><br>\n";
}
echo "<form action='{$meurl}?op=home' method='post'>\n"
."<input type='text' name='user' border='0' class='login_text' placeholder='请输入用户名'>\n"
."<input type='password' name='pass' border='0' class='login_text' placeholder='请输入密码'>\n"
."<input type='submit' name='submitButtonName' value='LOGIN' border='0' class='login_button button'>\n"
."</form>\n";
mainbottom();
}
function home() {
global $os, $meurl ,$folder, $ufolder;
$content1 = array();
$content2 = array();
$folder = gCode($folder);
if(is_dir($folder)){$style = opendir($folder);}else{printerror("目录不存在!\n");exit;}
$a=1;$b=1;
if($folder)$_SESSION['folder']=$ufolder;
maintop("主页");
echo '<script>var order;function generateCompareTRs(iCol,sDataType,iOrder){return function compareTRs(oTR1,oTR2){vValue1=convert(oTR1.cells[iCol].getAttribute(iOrder),sDataType);vValue2=convert(oTR2.cells[iCol].getAttribute(iOrder),sDataType);order=iOrder;if(vValue1<vValue2){return -1}else{if(vValue1>vValue2){return 1}else{return 0}}}}function convert(sValue,sDataType){switch(sDataType){case"int":return parseInt(sValue);default:return sValue.toString()}}function sortTable(iOrder,iCol,sDataType){var oTable=document.getElementById("tblSort");var oTBody=oTable.tBodies[0];var colDataRows=oTBody.rows;var aTRs=new Array;for(var i=0;i<colDataRows.length;i++){aTRs[i]=colDataRows[i]}if(oTable.sortCol==iCol & iOrder==order){aTRs.reverse()}else{aTRs.sort(generateCompareTRs(iCol,sDataType,iOrder))}var oFragment=document.createDocumentFragment();for(var j=0;j<aTRs.length;j++){oFragment.appendChild(aTRs[j])}oTBody.appendChild(oFragment);oTable.sortCol=iCol;}</script>';
echo "<form method='post'><table border='0' cellpadding='2' cellspacing='0' width=100% class='mytable odTable' id='tblSort'>\n";
while($stylesheet = readdir($style)) {
$ufolder = $folder;
$sstylesheet = $stylesheet;
$tta = @fileperms($ufolder.$sstylesheet);
$ttb = substr(sprintf('%o',$tta), -3);
if($os!=='windows'){ $qx = "<td>$ttb</td>";$xx='<td></td>';}else{ $qx='';$xx='';}
if ($stylesheet !== "." && $stylesheet !== ".." ) {
$stylesheet = uCode($stylesheet);
$folder = uCode($folder);
$trontd = "<tr width=100% onclick='st=document.getElementById(\"$stylesheet\").checked;if(st==true){document.getElementById(\"$stylesheet\").checked=false;this.style.backgroundColor=\"\";}else{document.getElementById(\"$stylesheet\").checked=true;this.style.backgroundColor=\"#e3e3e5\";}'><td><svg width='21' height='21'>";
$rename = "<td><a href='{$meurl}?op=ren&file=".htmlspecialchars($stylesheet)."&folder=$folder'><span class='com'>💽</span><span class='mobi'>重命名</span></a></td>\n";
if (is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))) {
$content1[$a] = "$trontd<rect width='10px' height='14' style='fill:#ffe792' stroke='#e6c145' stroke-width='0.5' x='4' y='4'/><rect width='2px' height='5px' style='fill:#ffe792' stroke='#e6c145' stroke-width='0.5' x='13' y='13'/></svg><input name='select_item[d][$stylesheet]'  type='checkbox' id='$stylesheet' class='checkbox home' value='{$folder}{$stylesheet}' /></td>\n"
."<td _order='1{$stylesheet}'' _ext='1' _time='1'><a href='{$meurl}?op=home&folder={$folder}{$stylesheet}/' title='".gettime($folder.$stylesheet)."'>{$stylesheet}</a></td>\n"
."<td _size='1'>-</td>"
."<td><span class='mobi'><a href='{$meurl}?op=home&folder=".htmlspecialchars($folder.$stylesheet)."/'>打开</a><span></td>\n"
.$rename
."<td><a href='{$folder}{$stylesheet}' target='_blank'><span class='com'>🔍</span><span class='mobi'>查看</span></a></td>\n"
.$qx."</tr>\n";
$a++;
$folder = gCode($folder);
}elseif(!is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))){
$arr = explode('.',$folder.$stylesheet);
$arr = end($arr);
if($arr == 'zip'){
$filesizeme = filesize($ufolder.$sstylesheet);
$content2[$b] = "$trontd<rect width='12' height='10' style='fill:#85d3f9' stroke='#48b8f4' stroke-width='0.5' x='3' y='4'/><rect width='12' height='2' style='fill:#fc8f24' stroke='#d66e1a' stroke-width='0.5' x='3' y='14'/><rect width='12' height='2' style='fill:#83d12a' stroke='#579714' stroke-width='0.5' x='3' y='16'/><rect width='2' height='14' style='fill:#763207' stroke='#97460b' stroke-width='0.5' x='11' y='4'/></svg><input name='select_item[f][$stylesheet]' type='checkbox' id='$stylesheet' onpropertychange='if(this.checked=false){this.parentNode.parentNode.style.backgroundColor='#e3e3e5';}else{this.parentNode.parentNode.style.backgroundColor='';}' class='checkbox home' value='{$folder}{$stylesheet}' /></td>\n"
."<td _order='3{$stylesheet}'' _ext='3{$arr}'' _time='".(filemtime($folder.$stylesheet)+3)."''><a href='{$folder}{$stylesheet}' title='".gettime($folder.$stylesheet)."' target='_blank'>{$stylesheet}</a></td>\n"
."<td _size='".($filesizeme+3)."''>".Size($filesizeme)."</td>"
."<td></td>\n"
.$rename
."<td><a href='{$meurl}?op=unz&dename=".htmlspecialchars($stylesheet)."&folder=$folder'><span class='com'>🎁</span><span class='mobi'>提取</span></a></td>\n"
.$qx."</tr>\n";
}elseif($arr == 'gif'||$arr == 'jpg'||$arr == 'png'||$arr == 'bmp'||$arr == 'png5'||$arr == 'psd'||$arr == 'webp'||$arr == 'gz'||$arr == 'gzip'){
$filesizeme = filesize($ufolder.$sstylesheet);
$content2[$b] = "$trontd<rect width='10px' height='14' style='fill:#f8f9f9' stroke='#8f9091' stroke-width='0.5' x='4' y='4'/><rect width='2px' height='3px' style='fill:#f8f9f9' stroke='#8f9091' stroke-width='0.5' x='12' y='4'/><rect width='6' height='5px' style='fill:#f8f9f9' stroke='#438bd4' stroke-width='0.5' x='6' y='8'/><rect width='6' height='2px' style='fill:#438bd4' stroke='#438bd4' stroke-width='0.5' x='6' y='13'/></svg><input name='select_item[f][$stylesheet]' type='checkbox' id='$stylesheet' class='checkbox home' value='{$folder}{$stylesheet}' /></td>\n"
."<td _order=\"3{$stylesheet}\" _ext=\"3{$arr}\" _time=\"".(filemtime($folder.$stylesheet)+3)."\"><a href='{$folder}{$stylesheet}' title='".gettime($folder.$stylesheet)."' target='_blank'>{$stylesheet}</a></td>\n"
."<td _size=\"".($filesizeme+3)."\">".Size($filesizeme)."</td>"
."<td></td>\n"
.$rename
."<td><a href='{$folder}{$stylesheet}' target='_blank'><span class='com'>🔍</span><span class='mobi'>查看</span></a></td>\n"
.$qx."</tr>\n";
}else{
$filesizeme = filesize($ufolder.$sstylesheet);
$content2[$b] = "$trontd<rect width='10px' height='14' style='fill:#f8f9f9' stroke='#8f9091' stroke-width='0.5' x='4' y='4'/><rect width='2px' height='3px' style='fill:#f8f9f9' stroke='#8f9091' stroke-width='0.5' x='12' y='4'/></svg><input name='select_item[f][$stylesheet]' type='checkbox' id='$stylesheet' class='checkbox home' value='{$folder}{$stylesheet}' /></td>\n"
."<td _order='3{$stylesheet}' _ext='3{$arr}' _time='".(filemtime($folder.$stylesheet)+3)."'><a href='{$folder}{$stylesheet}' title='".gettime($folder.$stylesheet)."' target='_blank'>{$stylesheet}</a></td>\n"
."<td _size='".($filesizeme+3)."'>".Size(filesize($ufolder.$sstylesheet))."</td>"
."<td><a href='{$meurl}?op=edit&fename=".htmlspecialchars($stylesheet)."&folder=$folder'><span class='com'>📝</span><span class='mobi'>编辑</span></a></td>\n"
.$rename
."<td><a href='{$folder}{$stylesheet}' target='_blank'><span class='com'>🔍</span><span class='mobi'>查看</span></a></td>\n"
.$qx."</tr>\n";
}
$b++;
$folder = gCode($folder);
}
}
}
closedir($style);
$lu = explode('/', $_SESSION['folder']);
array_pop($lu);
$u = '';
echo '<div class="title">';
foreach ($lu as $v) {
$u = $u.$v.'/';
if($v=='.'){$v='主页';}elseif($v==''){$v='根目录';}
echo '<a href="'.$meurl.'?op=home&folder='.$u.'">'.$v.'</a> » ';
}
echo "文件\n"
."<span class='right'>",$a-1," 个文件夹 ",$b-1," 个文件</span></div>"
."<div style='position:fixed;bottom:0;margin-left:3px;'><input type='checkbox' id='check' onclick='Check()'> <input class='button' name='action' type='submit' value='移动' /> <input class='button' name='action' type='submit' value='复制' /> <input class='button' name='action' type='submit' onclick='return confirm(\"点击确认后,选中的文件将作为Backup-time.zip创建!\")'  value='压缩' /> <input class='button' name='action' type='submit' onclick='return confirm(\"您真的要删除选中的文件吗?\")' value='删除' /> <input class='button' name='action' type='submit' onclick='var t=document.getElementById(\"chmod\").value;return confirm(\"将这些文件的权限修改为\"+t+\"?如果是文件夹,将会递归文件夹内所有内容!\")' value='权限' /> <input type='text' class='text' stlye='vertical-align:text-top;' size='3' id='chmod' name='chmod' value='0755'></div>";
if($os!=='windows'):$qx = "<th width=40>权限</th>\n";else:$qx = '';endif;
echo "<thead><span id='idCheckbox'></span><tr class='headtable' width=100%>"
."<script>function Check(){collid=document.getElementById('check');coll=document.getElementsByTagName('input');if(collid.checked){for(var i=0;i<coll.length;i++){if(coll[i].type=='checkbox'){coll[i].checked=true;coll[i].parentNode.parentNode.style.backgroundColor='#e3e3e5';}}}else{for(var i=0;i<coll.length;i++){if(coll[i].type=='checkbox'){coll[i].checked=false;coll[i].parentNode.parentNode.style.backgroundColor='';}}}}</script>"
."<th width=20px></th>\n"
."<th style='width: calc(100% - 225px);'><div class='mobile'><span onclick=\"sortTable('_order',1);\">文件名</span> <b>/</b> <span onclick=\"sortTable('_ext',1);\">类型 <b>/</b></span> <span onclick=\"sortTable('_time',1,'int');\">时间</span></div></th>\n"
."<th width=65px><span onclick=\"sortTable('_size',2,'int');\">大小</span></th>\n"
."<th class='open'><span class='mobi'>打开</span></th>\n"
."<th class='rename'><span class='mobi'>重命名</span></th>\n"
."<th class='open'><span class='mobi'>查看</span></th>\n"
.$qx
."</tr></thead><tbody>";
if($_SESSION['folder']!="./" and $_SESSION['folder']!="/"){
$last = (substr($_SESSION['folder'],0,1)=='/')?explode('/', substr($_SESSION['folder'],1,-1)):explode('/', substr($_SESSION['folder'],2,-1));
$back = (substr($_SESSION['folder'],0,1)=='/')?'':substr($_SESSION['folder'],0,1);
array_pop($last);
foreach ($last as $value) {
$back = $back.'/'.$value;
}
if($os=='windows')$qx="";else $qx="<td></td>";
echo "<tr width=100%><td></td><td _order=\"1\" _ext=\"1\" _time=\"1\"><a href='{$meurl}?op=home&folder=".$back."/"."'>上级目录</a></td><td _size=\"1\"></td><td></td><td></td><td></td>$xx</tr>";
}
$a1a = count($content1)+1; $a2a = count($content2)+1; 
for ($a=1; $a<$a1a;$a++) if(!empty($content1)) echo $content1[$a];
for ($b=1; $b<$a2a;$b++) echo $content2[$b];
echo "</tbody></form>";
echo "</table>";
mainbottom();
}
function gettime($filename){return "修改时间:".date("Y-m-d H:i:s",filemtime($filename))."\n"."创建时间:".date("Y-m-d H:i:s",filectime($filename));}
function uCode($text){return mb_convert_encoding($text,'UTF-8','GBK');}
function gCode($text){return mb_convert_encoding($text,'GBK','UTF-8');}
function tCode($text){return iconv('utf-8','latin1//IGNORE', $text);}
function dirSize($directoty){
$dir_size=0;
if($dir_handle=opendir($directoty)){
while($filename=readdir($dir_handle)){
$subFile=$directoty.DIRECTORY_SEPARATOR.$filename;
if($filename=='.'||$filename=='..'){
continue;
}elseif (is_dir($subFile)){
$dir_size+=dirSize($subFile);
}elseif (is_file($subFile)){
$dir_size+=filesize($subFile);
}
}
closedir($dir_handle);
}
return ($dir_size);
}
function Size($size) {
$sz = ' kMGTP';
$factor = floor((strlen($size) - 1) / 3);
return ($size>=1024)?sprintf("%.2f", $size / pow(1024, $factor)) . @$sz[$factor]:$size;
}
function curl_get_contents($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
function up() {
global $meurl, $folder;
maintop("上传");
echo "<FORM ENCTYPE='multipart/form-data' ACTION='{$meurl}?op=upload' METHOD='POST'>\n"
."<div class='title'>本地上传 Max:".ini_get('upload_max_filesize').",".ini_get('max_file_uploads')."个</div><div class='box' style='border-bottom:0;'><input type='File' name='upfile[]' multiple size='30'>\n"
."</div><input type='text' name='ndir' style='width:calc(100% - 12px);margin:0;' value='".$_SESSION["folder"]."' class='upload'>\n";
echo "<div class='right'><input type='checkbox' name='unzip' id='unzip' value='checkbox' onclick='UpCheck()' checked><label for='unzip'><abbr title='提取(解压)上传的Zip压缩文件'>解压</abbr></labal> "
."<input type='checkbox' name='delzip' id='deluzip'value='checkbox'><label for='deluzip'><abbr title='同时将上传的压缩文件删除'>删除</abbr></labal> "
."<input type='submit' value='上传' class='button'></div><br><br><br><br>\n"
."<script>function UpCheck(){if(document.getElementById('unzip').checked){document.getElementById('deluzip').disabled=false}else{document.getElementById('deluzip').disabled=true}}</script>"
."</form>\n";
echo "<div class='title'>远程下载</div><div class='box' style='border-bottom:0;'>什么是远程下载?<br>远程下载是从其他服务器获取文件并直接下载到当前服务器的一种功能。<br>类似于SSH的Wget功能,免去我们下载再手动上传所浪费的时间。<br><form action='{$meurl}?op=yupload' method='POST'>"
."</div><input type='text' class='text' style='width:calc(100% - 12px);margin:0;' name='ndir' value='".$_SESSION["folder"]."'><textarea name='url' placeholder='请输入地址……'></textarea>"
."<div class='right'><input type='checkbox' name='unzip' id='un' value='checkbox' onclick='Check()' checked><label for='un'><abbr title='提取(解压)上传的Zip压缩文件'>解压</abbr></labal> "
."<input type='checkbox' name='delzip' id='del'value='checkbox'><label for='del'><abbr title='同时将上传的压缩文件删除'>删除</abbr></labal> <input name='submit' value='下载' type='submit' class='button'/></div>\n"
."<script>function Check(){if(document.getElementById('un').checked){document.getElementById('del').disabled=false}else{document.getElementById('del').disabled=true}}</script>"
."</form>";
mainbottom();
}
function yupload($url, $folder, $unzip, $delzip) {
global $meurl;
if(empty($folder)){
$folder="./";
}
$nfolder = $folder;
$nurl = $url;
$url = gCode($url);
$folder = gCode($folder);
if($url!==""){
ignore_user_abort(true); // 要求离线也可下载
set_time_limit (24 * 60 * 60); // 设置超时时间
if (!file_exists($folder)){
mkdir($folder, 0755);
}
$newfname = $folder . basename($url); // 取得文件的名称
if(function_exists('curl_init')){
$file = curl_get_contents($url);file_put_contents($newfname,$file);
}else{
$file=fopen($url,"rb");
if($file){$newf = fopen ($newfname, "wb");
if($newf)while (!feof($file)) {fwrite($newf, fread($file, 1024 * 8), 1024 * 8);}}
if($file)fclose($file);
if($newf)fclose($newf);
}
maintop("远程上传");
echo "<div class='title'>文件 ".basename($url)." 上传成功<br></div><div class='box'>\n";
$end = explode('.', basename($url));
if((end($end)=="zip") && isset($unzip) && $unzip == "checkbox"){
if(class_exists('ZipArchive')){
echo "您可以 <a href='{$meurl}?op=home&folder=".$folder."'>访问文件夹</a> 或者 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a>  或者 <a href='{$meurl}?op=up'>继续上传</a>\n";
echo "</div><textarea rows=15 disabled>";
$zip = new ZipArchive();
if ($zip->open($folder.basename($url)) === TRUE) {
if($zip->extractTo($folder)){
for($i = 0; $i < $zip->numFiles; $i++) {
echo "Unzip:".$zip->getNameIndex($i)."\n";
}
$zip->close();
}else{
echo('<span class="error">Error:'.$nfolder.$ndename.'</span>');
}
echo basename($nurl)." 已经被解压到 $nfolder\n";
if(isset($delzip) && $delzip == "checkbox"){
if(@unlink($folder.basename($url))){
echo basename($url)." 删除成功\n";
}else{
echo basename($url)." 删除失败\n";
}
}
}else{
echo('<span class="error">无法解压文件:'.$nfolder.basename($nurl).'</span>');
}
echo '</textarea>';
}else{
echo('<span class="error">此服务器上的PHP不支持ZipArchive,无法解压文件!</span></div>');
}
}else{
echo "您可以 <a href='{$meurl}?op=home&folder={$nfolder}'>访问文件夹</a> 或者 <a href='{$meurl}?op=edit&fename=".basename($url)."&folder={$nfolder}'>编辑文件</a> 或者 <a href='{$meurl}?op=home&folder={$_SESSION['folder']}'>返回目录</a>  或者 <a href='{$meurl}?op=up'>继续上传</a>\n</div>";
}
mainbottom();
return true;
}else{
printerror ('文件地址不能为空。');
}
}
function upload($upfile,$ndir,$unzip,$delzip) {
global $meurl, $folder;
if(empty($ndir)){
$ndir="./";
}
$nfolder = $folder;
$nndir = $ndir;
$ndir = gCode($ndir);
if (!$upfile) {
printerror("您没有选择文件!");
exit;
}elseif($upfile) {
maintop("上传");
if (!file_exists($ndir)){
mkdir($ndir, 0755);
}
$i = 1;
echo "<div class='box'>您可以 <a href='{$meurl}?op=home&folder=".$ndir."'>前往文件所上传到的目录</a> 或者 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a> 或者 <a href='{$meurl}?op=up'>继续上传</a></div>\n";
echo '<textarea rows=15 disabled>';
while (count($upfile['name']) >= $i){
$dir = gCode($nndir.$upfile['name'][$i-1]);
if(copy($upfile['tmp_name'][$i-1],$dir)) {
echo "文件 ".$nndir.$upfile['name'][$i-1]." 上传成功\n";
$end = explode('.', $upfile['name'][$i-1]);
if((end($end)=="zip") && isset($unzip) && $unzip == "checkbox"){
if(class_exists('ZipArchive')){
$zip = new ZipArchive();
if ($zip->open($dir) === TRUE) {
if($zip->extractTo($ndir)){
for($j = 0; $j < $zip->numFiles; $j++) {
echo $zip->getNameIndex($j)."\n";
}
$zip->close();
}
echo $upfile['name'][$i-1]." 已经被解压到 $nndir\n";
if(isset($delzip) && $delzip == "checkbox"){
if(@unlink($dir.$upfile['name'][$i-1])){
echo $upfile['name'][$i-1]." 删除成功\n";
}else{
echo $upfile['name'][$i-1].(" 删除失败!\n");
}
}
}else{
echo("无法解压文件:".$nndir.$upfile['name'][$i-1]."\n");
}
}else{
echo("此服务器上的PHP不支持ZipArchive,无法解压文件!\n");
}
}
}else{
echo("文件 ".$upfile['name'][$i-1]." 上传失败\n");
}
$i++;
}
echo '</textarea>';
mainbottom();
}else{
printerror("您没有选择文件!");
}
}
function unz($dename) {
global $meurl, $folder, $content;
if (!$dename == "") {
if(class_exists('ZipArchive')){
maintop("解压");
echo "<table border='0' cellpadding='2' cellspacing='0'>\n"
."<div class='title'>解压 ".$folder.$dename."</div>\n"
."<form ENCTYPE='multipart/form-data' action='{$meurl}?op=unzip'>"
."<input type='text' name='ndir' style='width:calc(100% - 12px);margin:0;' placeholder='解压到……' class='text' value='".$_SESSION['folder']."'>"
."<textarea rows=15 disabled>";
$zip = new ZipArchive();
if ($zip->open($folder.$dename) === TRUE) {
echo 'Archive:  '.$folder.$dename.' with '.$zip->numFiles." files\n";
echo "Date Time  Size Name\n";
echo "------------  ---------------\n";
for($i = 0; $i < $zip->numFiles; $i++) {
$info = $zip->statIndex($i);
echo date('m-d-y h:m',$info['mtime']);
echo '  '.$info['size'].'  ';
echo uCode($zip->getNameIndex($i))."\n";
}
echo "------------  ---------------\n";
echo "Date Time  Size Name\n";
}else{
echo '文件读取失败。';
}
$zip->close();
echo "</textarea>";
echo "<input type='hidden' name='op' value='unzip'>\n"
."<input type='hidden' name='dename' value='".$dename."'>\n"
."<input type='hidden' name='folder' value='".$folder."'>\n"
."<div class='right'><input type='checkbox' name='del' id='del'value='del'><label for='del'>删除</label> <input type='submit' value='解压' class='button'></div>\n"
."</table>\n";
mainbottom();
}else{
printerror("此服务器上的PHP不支持ZipArchive,无法解压文件!\n");
}
}else{
home();
}
}
function unzip($dename,$ndir,$del) {
global $meurl, $folder;
$nndir = $ndir;
$nfolder = $folder;
$ndename = $dename;
$dename = gCode($dename);
$folder = gCode($folder);
$ndir = gCode($ndir);
if (!$dename == "") {
if (!file_exists($ndir)){
mkdir($ndir, 0755);
}
if(class_exists('ZipArchive')){
$zip = new ZipArchive();
if ($zip->open($folder.$dename) === TRUE) {
maintop("解压");
if($zip->extractTo($ndir)){
echo '<div class="box">现在您可以 <a href="'.$meurl.'?op=home&folder='.$_SESSION["folder"].'">返回目录</a></div>';
echo '<textarea rows=15 disabled>';
for($i = 0; $i < $zip->numFiles; $i++) {
echo uCode($zip->getNameIndex($i))."\n";
}
$zip->close();
echo $dename." 已经解压完成 $nndir\n";
}else{
echo('无法解压文件:'.$nfolder.$ndename);
}
if($del=='del'){
if(@unlink($folder.$dename)){
echo $ndename." 已经被删除\n";
}else{
echo $ndename." 删除失败!\n";
}
}
echo "</textarea>\n";
mainbottom();
}else{
printerror('无法解压文件:'.$nfolder.$ndename);
}
}else{
printerror('此服务器上的PHP不支持ZipArchive,无法解压文件!');
}
}else{
home();
}
}
function deltree($pathdir){
if(is_empty_dir($pathdir)){
rmdir($pathdir);//直接删除
}
else{
$d=dir($pathdir);
while($a=$d->read()){
if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){@unlink($pathdir.'/'.$a);}if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){
if(!is_empty_dir($pathdir.'/'.$a)){
deltree($pathdir.'/'.$a);
}
if(is_empty_dir($pathdir.'/'.$a)){
rmdir($pathdir.'/'.$a);
}
}
}
$d->close();
}
}
function is_empty_dir($pathdir){
$d=opendir($pathdir);
$i=0;
while($a=readdir($d)){
$i++;
}
closedir($d);
if($i>2){return false;}
else return true;
}
function edit($fename) {
global $meurl,$folder;
$file = gCode($folder.$fename);
if (file_exists($file)) {
maintop("编辑");
$contents = file_get_contents($file); $list="";
if(function_exists('mb_detect_encoding'))$encode = mb_detect_encoding($contents,array('ASCII','UTF-8','GBK','GB2312'));else $encode = 'UTF-8';
if(isset($_REQUEST['encode'])){$encode = htmlspecialchars($_REQUEST['encode']);}
if($encode!="UTF-8" && !empty($encode))$contents = mb_convert_encoding($contents,"UTF-8",$encode);
foreach(mb_list_encodings() as $key => $value){
$arr=array('EUC-CN' => 'GB2312','CP936' => 'GBK','SJIS-mac'=>'MacJapanese','SJIS-Mobile#DOCOMO'=>'SJIS-DOCOMO','SJIS-Mobile#KDDI'=>'SJIS-KDDI','SJIS-Mobile#SOFTBANK'=>'SJIS-SOFTBANK','UTF-8-Mobile#DOCOMO'=>'UTF-8-DOCOMO','UTF-8-Mobile#KDDI-B'=>'UTF-8-KDDI','UTF-8-Mobile#SOFTBANK'=>'UTF-8-SOFTBANK','ISO-2022-JP-MOBILE#KDDI'=>'ISO-2022-JP-KDDI');
if(array_key_exists($value, $arr)) $value_text = $arr[$value]; else $value_text = $value;
if($encode == $value) $list.="<option value='$value' selected>".$value_text.'</option>'; else $list.="<option value='$value'>".$value_text.'</option>';
}
echo "<form action='{$meurl}?op=save' method='post'><div class='title'><a href=\"{$meurl}?op=home&folder={$folder}\">返回目录{$folder}</a> 编辑文件 {$folder}{$fename}\n"
."<span class='right'><select onchange=\"javascript:window.location.href=('{$meurl}?op=edit&fename=$fename&folder=$folder&encode='+this.value);\" style=\"width:70px;height:20px;padding:0;margin:0;margin-top:-2px;font-size:12px;\">"
."<option disabled>当前文件编码</option>".$list
.'</select> » '
."<select name=\"encode\" style=\"width:70px;height:20px;padding:0;margin:0;margin-top:-2px;font-size:12px;\">"
."<option disabled>保存文件编码</option>".$list
.'</select></span></div>'
."<textarea rows='24' name='ncontent'>"
.htmlspecialchars($contents)
."</textarea>"
."<br>\n"
."<input type='hidden' name='folder' value='{$folder}'>\n"
."<input type='hidden' name='fename' value='{$fename}'>\n"
."<input type='submit' value='保存' class='right button mob'>\n"
."</form>\n";
mainbottom();
}else{
printerror("文件不存在!");
}
}
function save($ncontent, $fename, $encode) {
global $meurl,$folder;
if (!$fename == "") {
$file = gCode($folder.$fename);
$ydata = $ncontent;
if($encode!="UTF-8") $ydata = mb_convert_encoding($ydata,$encode,"UTF-8");
if(file_put_contents($file, $ydata) or $ncontent=="") {
maintop("编辑");
echo "<div class='title'>文件 <a href='{$folder}{$fename}' target='_blank'>{$folder}{$fename}</a> 保存成功!<span class='right'>$encode</span></div>\n";
echo "<div class='box'>请选择 <a href='{$meurl}?op=home&folder={$_SESSION['folder']}'>返回目录</a> 或者 <a href='{$meurl}?op=edit&fename={$fename}&folder={$folder}'>继续编辑</a></div>\n";
$fp = null;
mainbottom();
}else{
printerror("文件保存出错!");
}
}else{
home();
}
}
function cr() {
global $meurl, $folder;
maintop("创建");
echo "<form action='{$meurl}?op=create' method='post'>\n"
."<div class='title'>创建文件 或 目录 <span class='right'><select name='isfolder' style='width:100px;height:20px;padding:0;margin:0;margin-top:-2px;font-size:12px;'><option value='0'>文件 File</option>\n"
."<option value='1'>文件夹 Dir</option></select></span></div><div class='box' style='border-bottom:none'><label for='nfname'>文件名:</label><input type='text' size='20' id='nfname' placeholder='请输入文件名……' name='nfname' class='text long'>\n"
."</div><input type='text' class='text' id='ndir' style='width:calc(100% - 12px);margin:0;' name='ndir' placeholder='目标目录……' value='".$_SESSION['folder']."'>";
echo "<input type='hidden' name='folder' value='$folder'>\n"
."<input type='submit' value='创建' class='right button mob'>\n"
."</form>\n";
mainbottom();
}
function create($nfname, $isfolder, $ndir) {
global $meurl, $folder;
if (!$nfname == "") {
$ndir = gCode($ndir);
$nfname = gCode($nfname);
if ($isfolder == 1) {
if(mkdir($ndir."/".$nfname, 0755)) {
$ndir = uCode($ndir);
$nfname = uCode($nfname);
maintop("创建");
echo "<div class='title'>您的目录<a href='{$meurl}?op=home&folder=./".$nfname."/'>".$ndir.$nfname."/</a> 已经成功被创建。</div><div class='box'>\n"
."请选择 <a href='{$meurl}?op=home&folder=".$ndir.$nfname."/'>打开文件夹</a> 或者 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a>\n";
echo "</div>";
mainbottom();
}else{
$ndir = uCode($ndir);
$nfname = uCode($nfname);
printerror("您的目录 ".$ndir.$nfname." 不能被创建。请检查您的目录权限是否已经被设置为可写 或者 目录是否已经存在</span>\n");
}
}else{
if($wr = fopen($ndir."/".$nfname, "w")) {
$tx = "\xEF\xBB\xBF 文件 ".uCode($nfname);
fwrite($wr,$tx);
fclose($wr);
$ndir = uCode($ndir);
$nfname = uCode($nfname);
maintop("创建");
echo "<div class='title'>您的文件, <a href='{$meurl}?op=viewframe&file=".$nfname."&folder=$ndir'>".$ndir.$nfname."</a> 已经成功被创建</div><div class='box'>\n"
."<a href='{$meurl}?op=edit&fename=".$nfname."&folder=".$ndir."'>编辑文件</a> 或者是 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a>\n";
echo "</div>";
mainbottom();
}else{
$ndir = uCode($ndir);
$nfname = uCode($nfname);
printerror("您的文件 ".$ndir.$nfname." 不能被创建。请检查您的目录权限是否已经被设置为可写 或者 文件是否已经存在</span>\n");
}
}
}else{
cr();
}
}
function ren($file) {
global $meurl,$folder,$ufolder;
$ufile = $file;
if (!$file == "") {
maintop("重命名");
echo "<form action='{$meurl}?op=rename' method='post'>\n"
."<div class='title'>重命名 ".$ufolder.$ufile.'</div>';
echo "<input type='hidden' name='rename' value='".$ufile."'>\n"
."<input type='hidden' name='folder' value='".$ufolder."'>\n"
."<input class='text' type='text' style='width:calc(100% - 12px);margin:0;' placeholder='请输入文件名……' name='nrename' value='$ufile'>\n"
."<input type='Submit' value='重命名' class='right button mob'></form>\n";
mainbottom();
}else{
home();
}
}
function renam($rename, $nrename, $folder) {
global $meurl,$folder;
if (!$rename == "") {
$loc1 = gCode("$folder".$rename);
$loc2 = gCode("$folder".$nrename);
if(rename($loc1,$loc2)) {
maintop("重命名");
echo "<div class='title'>文件 ".$folder.$rename." 已被重命名成 ".$folder.$nrename."</a></div>\n"
."<div class='box'>请选择 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a> 或者 <a href='?op=edit&fename={$nrename}&folder={$folder}'>编辑新文件</a></div>\n";
mainbottom();
}else{
printerror("重命名出错!");
}
}else{
home();
}
}
function movall($file, $ndir, $folder) {
global $meurl,$folder;
if (!$file == "") {
maintop("批量移动");
$arr = str_split($ndir);
if($arr[count($arr)-1]!=='/'){
$ndir .= '/';
}
$nndir = $ndir;
$nfolder = $folder;
$file = gCode($file);
$ndir = gCode($ndir);
$folder = gCode($folder);
if (!file_exists($ndir)){
mkdir($ndir, 0755);
}
$file = explode(',',$file);
echo "<div class='title'>您可以 <a href='{$meurl}?op=home&folder={$nndir}'>前往文件夹查看文件</a> 或者 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a></div><textarea rows=20 disabled>";
foreach ($file as $v) {
if (file_exists($ndir.$v)){
if (rename($folder.$v, $ndir.$v."(1)")){
$v = uCode($v);
echo $nndir.$v." 文件已存在,自动更名为 {$nndir}(1)\n";
}else{
$v = uCode($v);
echo "无法移动 ".$nfolder.$v.",请检查文件权限\n";
}
}elseif (rename($folder.$v, $ndir.$v)){
$v = uCode($v);
echo $nfolder.$v." 已经成功移动到 ".$nndir.$v."\n";
}else{
$v = uCode($v);
echo "无法移动 ".$nfolder.$v.",请检查文件权限或文件是否存在\n";
}
}
echo "</textarea>";
mainbottom();
}else{
home();
}
}
function tocopy($file, $ndir, $folder) {
global $meurl,$folder;
if (!$file == "") {
maintop("复制");
$nndir = $ndir;
$nfolder = $folder;
$file = gCode($file);
$ndir = gCode($ndir);
$folder = gCode($folder);
if (!file_exists($ndir)){
mkdir($ndir, 0755);
}
$file = explode(',',$file);
echo "<div class='box'>您可以 <a href='{$meurl}?op=home&folder=".$nndir."'>前往文件夹查看文件</a> 或者 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a></div><textarea rows=20 disabled>";
foreach ($file as $v) {
if (file_exists($ndir.$v)){
if (copy($folder.$v, $ndir.$v.'(1)')){
$v = iconv("GBK", "UTF-8",$v);
echo "{$nndir}{$v} 文件已存在,自动更名为 {$nfolder}{$v}(1)\n";
}else{
$v = iconv("GBK", "UTF-8",$v);
echo "无法复制 {$nfolder}{$v},请检查文件权限\n";
}
}elseif (copy($folder.$v, $ndir.$v)){
$v = iconv("GBK", "UTF-8",$v);
echo $nfolder.$v." 已经成功复制到 ".$nndir.$v."\n";
}else{
$v = iconv("GBK", "UTF-8",$v);
echo "无法复制 ".$nfolder.$v.",请检查文件权限\n";
}
}
echo "</textarea>";
mainbottom();
}else{
home();
}
}
function logout() {
global $meurl;
setcookie("muser","",time()-60*60*24*1);
setcookie("mpass","",time()-60*60*24*1);
maintop("注销",false);
echo "<div class='box'>注销成功!<br>"
."<a href={$meurl}?op=home>点击这里重新登录</a></dvi>";
mainbottom();
}
function mainbottom() {
echo "</div><div style='text-align:center;font-size:13px;color:#999 !important;margin:10px 0 45px 0;font-family:Candara;'>"
."FileBox Version 1.10.0.1</div></body>\n"
."</html>\n";
exit;
}
function printerror($error) {
maintop("错误");
echo "<div class='title'>错误信息如下:</div><div class='box'><span class='error' style='font-size:12px;'>\n".$error."\n</span> <a onclick='history.go(-1);' style='cursor:pointer;font-size:12px;'>返回上一步</a></div>";
mainbottom();
}
function deleteall($dename) {
if (!$dename == "") {
$udename = $dename;
$dename = gCode($dename);
if (is_dir($dename)) {
if(is_empty_dir($dename)){
rmdir($dename);
echo $udename." 已经被删除\n";
}else{
deltree($dename);
rmdir($dename);
echo $udename." 已经被删除\n";
}
}else{
if(@unlink($dename)) {
echo $udename." 已经被删除\n";
}else{
echo("无法删除文件:$udename 。\n参考信息\n1.文件不存在\n2.文件正在执行\n");
}
}
}
}
switch($action) {
case "删除":
if(isset($_POST['select_item'])){
maintop("删除");
echo "<div class='box'>您可以 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a></div>\n";
echo '<textarea rows=15 disabled>';
if($_POST['select_item']['d']){
foreach($_POST['select_item']['d'] as $val){
deleteall($val);
}
}
if($_POST['select_item']['f']){
foreach($_POST['select_item']['f'] as $val){
if(deleteall($val)){}
}
}
echo '</textarea>';
mainbottom();
}else{
printerror("您没有选择文件");
}
break;
case "移动":
if(isset($_POST['select_item'])){
maintop("批量移动");
$file = '';
if($_POST['select_item']['d']){
foreach($_POST['select_item']['d'] as $key => $val){
$file = $file.$key.',';
}
}
if($_POST['select_item']['f']){
foreach($_POST['select_item']['f'] as $key => $val){
$file = $file.$key.',';
}
}
$file = substr($file,0,-1);
echo "<form action='{$meurl}?op=movall' method='post'>";
echo '<div class="title">移动文件</div><div class="box"><input type="hidden" name="file" value="'.$file.'"><input type="hidden" name="folder" value="'.$_SESSION['folder'].'">您将把下列文件移动到:'
."<input type='text' class='text' name='ndir' value='".$_SESSION['folder']."'>\n"
."</div><textarea rows=15 disabled>".$file."</textarea>";
echo "<input type='submit' value='移动' border='0' class='right button mob'>\n";
mainbottom();
}else{
printerror("您没有选择文件");
}
break;
case "复制":
if(isset($_POST['select_item'])){
maintop("复制");
$file = '';
if($_POST['select_item']['d']){
foreach($_POST['select_item']['d'] as $key => $val){
$file = $file.$key.',';
}
}
if($_POST['select_item']['f']){
foreach($_POST['select_item']['f'] as $key => $val){
$file = $file.$key.',';
}
}
$file = substr($file,0,-1);
echo "<form action='{$meurl}?op=copy' method='post'>";
echo '<div class="title">复制文件</div><div class="box"><input type="hidden" name="file" value="'.$file.'"><input type="hidden" name="folder" value="'.$_SESSION['folder'].'">您将把下列文件复制到:'
."<input type='text' class='text' name='ndir' value='".$_SESSION['folder']."'>\n"
."</div><textarea rows=15 disabled>".$file."</textarea>";
echo "<input type='submit' value='复制' border='0' class='right button mob'>\n";
mainbottom();
}else{
printerror("您没有选择文件");
}
break;
case "压缩":
if(isset($_POST['select_item'])){
if(class_exists('ZipArchive')){
maintop("目录压缩");
$tame = date("Ymd_His", time());
$tame .= '_' . rand(101010,909090);
echo "<!--div class='box'> $tame </div-->";
echo "<div class='box'>您可以 <a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>查看文件夹</a> 或者 <a href='./Bak-{$tame}.zip'>下载文件</a> 或者 <a href='{$meurl}?op=home'>返回目录</a></div>";
echo '<textarea rows=15 disabled>';
class Zipper extends ZipArchive {
public function addDir($path) {
if($_POST['select_item']['d']){
foreach($_POST['select_item']['d'] as $key => $val){
$val = substr($val,2);
$val = gCode($val);
$this->addDir2($val);
}
}
if($_POST['select_item']['f']){
foreach($_POST['select_item']['f'] as $key => $val){
$val = substr($val,2);
echo $val."\n";
$this->addFile($val);
}
$this->deleteName('./');
}
}
public function addDir2($path) {
$nval = iconv("GBK", "UTF-8",$path);
echo $nval."\n";
$this->addEmptyDir($path);
$dr = opendir($path);
$i=0;
while (($file = readdir($dr)) !== false){
if($file!=='.' && $file!=='..'){
$nodes[$i] = $path.'/'.$file;
$i++;
}
}
closedir($dr);
foreach ($nodes as $node) {
$nnode = iconv("GBK", "UTF-8",$node);
echo $nnode . "\n";
if (is_dir($node)) {
$this->addDir2($node);
}elseif(is_file($node)){
$this->addFile($node);
}
}
}
}
$rip = $tame;
$zip = new Zipper;
$res = $zip->open($_SESSION['folder'].'Bak-' . $rip . '.zip', ZipArchive::CREATE);
if ($res === TRUE) {
$f = substr($_SESSION['folder'], 0, -1);
$zip->addDir($f);
$zip->close();
echo "压缩完成,文件保存为 Bak-".$rip.".zip </textarea>\n";
}else{
echo '<span class="error">压缩失败!</span>'
."</textarea>\n";
}
mainbottom();
}else{
printerror('此服务器上的PHP不支持ZipArchive,无法压缩文件!');
}
}else{
printerror("您没有选择文件");
}
break;
case "权限":
if($os != 'windows'){
if(isset($_POST['select_item'])){
maintop("修改权限");
echo "<div class='title'><a href='{$meurl}?op=home&folder=".$_SESSION['folder']."'>返回目录</a></div>\n";
echo '<textarea rows=20 disabled>';
$chmod = octdec(htmlentities($_REQUEST['chmod']));
function ChmodMine($file, $chmod){
$nfile = $file;
$file = gCode($file);
if(is_file($file)){
if(chmod($file, $chmod)){
echo '文件'.$nfile." 权限修改成功\n";
}else{
echo '文件'.$nfile." 权限修改失败\n";
}
}elseif(is_dir($file)){
if(chmod($file, $chmod)){
echo '文件夹'.$nfile." 权限修改成功\n";
}else{
echo '<span class="error">文件夹'.$nfile." 权限修改失败\n";
}
$foldersAndFiles = scandir($file);
$entries = array_slice($foldersAndFiles, 2);
foreach($entries as $entry){
$nentry = iconv("GBK", "UTF-8",$entry);
ChmodMine($nfile.'/'.$nentry, $chmod);
}
}else{
echo $nfile." 文件不存在!\n";
}
}
if($_POST['select_item']['d']){
foreach($_POST['select_item']['d'] as $val){
ChmodMine($val,$chmod);
}
}
if($_POST['select_item']['f']){
foreach($_POST['select_item']['f'] as $val){
ChmodMine($val,$chmod);
}
}
echo "</textarea>";
mainbottom();
}else{
printerror("您没有选择文件");
}
}else{printerror("Windows系统无法修改权限。");}
break;
}
switch($op) {
case "home":
home();
break;
case "up":
up();
break;
case "yupload":
$uzip = (isset($_REQUEST['unzip']))?htmlentities($_REQUEST['unzip']):'';
$delz = (isset($_REQUEST['delzip']))?htmlentities($_REQUEST['delzip']):'';
if(!isset($_REQUEST['url'])){
printerror('您没有输入文件地址!');
}elseif(isset($_REQUEST['ndir'])){
yupload($_REQUEST['url'], $_REQUEST['ndir'], $uzip,$delz);
}else{
yupload($_REQUEST['url'], './',$uzip,$delz);
}
break;
case "upload":
$uzip = (isset($_REQUEST['unzip']))?htmlentities($_REQUEST['unzip']):'';
$delz = (isset($_REQUEST['delzip']))?htmlentities($_REQUEST['delzip']):'';
if(!isset($_FILES['upfile'])){
printerror('您没有选择文件!');
}elseif(isset($_REQUEST['ndir'])){
upload($_FILES['upfile'], $_REQUEST['ndir'], $uzip ,$delz);
}else{
upload($_FILES['upfile'], './', $uzip ,$delz);
}
break;
case "unz":
unz($_REQUEST['dename']);
break;
case "unzip":
$dell = (isset($_REQUEST['del']))?htmlentities($_REQUEST['del']):'';
unzip($_REQUEST['dename'],$_REQUEST['ndir'],$dell);
break;
case "edit":
edit($_REQUEST['fename']);
break;
case "save":
$ecode = (isset($_REQUEST['encode']))?htmlentities($_REQUEST['encode']):'UTF-8';
save($_REQUEST['ncontent'], $_REQUEST['fename'], $ecode);
break;
case "cr":
cr();
break;
case "create":
create($_REQUEST['nfname'], $_REQUEST['isfolder'], $_REQUEST['ndir']);
break;
case "ren":
ren($_REQUEST['file']);
break;
case "rename":
renam($_REQUEST['rename'], $_REQUEST['nrename'], $folder);
break;
case "movall":
movall($_REQUEST['file'], $_REQUEST['ndir'], $folder);
break;
case "copy":
tocopy($_REQUEST['file'], $_REQUEST['ndir'], $folder);
break;
case "printerror":
printerror($error);
break;
case "logout":
logout();
break;
case "z":
z($_REQUEST['dename'],$_REQUEST['folder']);
break;
case "zip":
zip($_REQUEST['dename'],$_REQUEST['folder']);
break;
case "mima":
echo md5($_REQUEST['mi'].$toke);
break;
default:
$op = 'home';
home();
break;
}
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过WSL在阿里云上部署Vue项目

参考&#xff1a; 阿里云上搭建网站-CSDN博客 云服务器重装 关闭当前运行实例 更换操作系统&#xff0c;还有其他的进入方式。 选择ubuntu系统&#xff08;和WSL使用相同的系统&#xff09;。 设置用户和密码。发送短信验证码。 新系统更新。秒速干净的新系统设置完成。 这…

es6 Class基本语法和继承

es6 Class基本语法 class的基本语法&#xff1a; ES6 的class只是一个语法糖&#xff0c;它的绝大部分功能&#xff0c;ES5 都可以做到&#xff0c;新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已 传统用构造函数生成实例 function Point(x, y) {th…

基于单片机锂电池电量检测数码管显示系统设计

**单片机设计介绍&#xff0c;基于单片机锂电池电量检测数码管显示系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机锂电池电量检测数码管显示系统设计的主要目标是实时、准确地检测锂电池的电量&#xff0c;并…

Java中变量a = 3中的3是存储在栈还是堆?

1、栈区&#xff08;stack&#xff09; 由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量的值等。 2、堆区&#xff08;heap&#xff09; 是一个可动态申请的内存空间&#xff08;其记录空闲内存空间的链表由操作系统维护&#xff09;&#xff0c;在j…

状态模式实战运用

目录 前言 UML plantuml 类图 实战代码 Form State Client 前言 通常一个完整的业务流程中&#xff0c;会经历多个阶段&#xff0c;每个阶段即一个业务状态&#xff0c;不同状态下对应这不同的业务处理逻辑。 无脑堆砌 if else 做判断然后选择对应的业务处理其实也能…

STM32使用USART发送数据包指令点亮板载LED灯

电路连接&#xff1a; 连接显示屏模块&#xff0c;显示屏的SCL在B10&#xff0c;SDA在B11。 程序目的&#xff1a; 发送LED_ON指令打开板载LED灯&#xff0c;发送LED_OFF关闭板载LED灯&#xff0c;与上一个博客不同&#xff0c;这个实际上是实现串口收发文本数据包。 …

enscan自动化主域名信息收集

enscan下载 Releases wgpsec/ENScan_GO (github.com) 能查的分类 实操&#xff1a; 首先打开linux 的虚拟机、 然后把下面这个粘贴到虚拟机中 解压后打开命令行 初始化 ./enscan-0.0.16-linux-amd64 -v 命令参数如下 oppo信息收集 运行下面代码时 先去配置文件把coo…

如何购买阿里云服务器?2024年阿里云服务器购买流程分享

很多新手用户不知道阿里云服务器购买的流程&#xff0c;不清楚该如何选购云服务器配置才能既满足需求又不会掉“坑”里&#xff0c;为此笔者整理了2024年购买阿里云服务器的完整流程&#xff0c;分为通过云服务器ECS产品页下单购买和通过阿里云活动购买云服务器两种最常见的购买…

速锐得解码广汽智能数字技术车型埃安Y纯电动CAN数据DBC控制策略

随着电动化、智能化、信息化、数字化、网联化、共享化技术的不断应用与汽车行业出行趋势加深&#xff0c;为进一步巩固关键技术优势以及稳供控本、提升盈利能力&#xff0c;整车厂加速推进新能源产业链垂直整合。广汽埃安就是最为杰出的代表&#xff0c;他们不仅布局了芯片&…

大话设计模式之迪米特法则

迪米特法则&#xff0c;也称为最少知识原则&#xff08;Law of Demeter&#xff09;&#xff0c;是面向对象设计中的一个重要原则&#xff0c;其核心思想是降低耦合度、减少对象之间的依赖关系&#xff0c;从而使系统更加灵活、易于维护和扩展。 根据迪米特法则&#xff0c;一…

DataX-Oracle新增writeMode支持update

目录 前言 第一步下载源码 第二步修改源码 1、Oraclewriter 2、WriterUtil 2.1、修改getWriteTemplate方法 2.2、新增onMergeIntoDoString与getStrings方法 3、CommonRdbmsWriter 3.1、修改startWriteWithConnection 3.2、修改doBatchInsert 3.3、修改fillPreparedStatem…

Web Components使用(一)

在使用Web Components之前&#xff0c;我们先看看上一篇文章Web Components简介&#xff0c;其中提到了相关的接口、属性和方法。 正是这些接口、属性和方法才实现了Web Components的主要技术&#xff1a;Custom elements&#xff08;自定义元素&#xff09;、Shadow DOM&#…

C#手术麻醉信息系统全套商业源码,自主版权,支持二次开发 医院手麻系统源码

手术麻醉信息系统是HIS产品的中的一个组成部分&#xff0c;主要应用于医院的麻醉科&#xff0c;属于电子病历类产品。医院麻醉监护的功能覆盖整个手术与麻醉的全过程&#xff0c;包括手术申请与排班、审批、安排、术前、术中和术后的信息管理提供支持。 手术麻醉信息系统可与EM…

MySQL 数据库的日志管理、备份与恢复

一. 数据库备份 1.数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为,操作错误,运算错误,磁盘故障灾难&#xff08;如火灾、地震&#xff0…

Docker部署MinIO对象存储服务

1. 拉取MinIO镜像 # 下载镜像 docker pull minio/minio#查看镜像 docker images2. 创建目录 # 文件存储目录 mkdir -p /opt/minio/data# 配置文件 mkdir -p /opt/minio/config# 日志文件 mkdir -p /opt/minio/logs3. 创建Minio容器并运行 docker run \ -p 9000:9000 \ -p 90…

CSS(一)---【CSS简介、导入方式、八种选择器、优先级】

零.前言 本系列适用于零基础小白&#xff0c;亦或是初级前端工程师提升使用。 知识点较为详细&#xff0c;如果追求非常详细&#xff0c;请移步官方网站或搬运网站。 1.CSS简介 CSS全称&#xff1a;“Cascading Style Sheets”&#xff0c;中文名&#xff1a;“层叠样式表”…

Codeforces Round 937 (Div. 4)(D~G)

D - Product of Binary Decimals 题意&#xff1a; 思路&#xff1a;观察到n的范围很小&#xff0c;先求出所有可能的二进制十位数&#xff0c;然后dp把所有可能的值求出来。注意不能用求因子的方法来求解&#xff0c;因为这些二进制十位数不一定是素数&#xff0c;先除某个数…

车道线检测项目 | 基于lanenet实现的实时车道线检测

项目应用场景 面向自动驾驶场景的车道线检测场景&#xff0c;项目的特点是能够达到实时的车道线检测 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md (1) 安装依赖 pip3 install -r requirements.txt (2) 测试图片 python tools/test_lanenet.py --weights_pat…

|行业洞察·香氛|《小红书2023香水香氛营销宝典-71页》

报告内容的详细解读&#xff1a; 行业格局 预计到2025年&#xff0c;香水市场规模将超过300亿&#xff0c;小红书成为香水种草的重要平台。从2018年到2025年&#xff0c;市场规模持续增长&#xff0c;年增速保持在20%左右。香水市场的热度在节日节点尤为明显&#xff0c;如情…

以XX医院为例的医疗建筑能效管理系统【建筑能耗 供电可靠 】

一、行业背景 二、行业特点 1.供电可靠性要求高&#xff1a;医院配电系统复杂&#xff0c;门诊、急救、手术室、ICU/CCU、血液透析等场合特一级和一级负荷比较多&#xff0c;一旦发生故障会造成严重影响&#xff0c;对配电可靠性要求极高。 2.能耗水平高&#xff1a;医院能耗…