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.rhkb.cn/news/290113.html

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

相关文章

Python人工智能:气象数据可视化的新工具

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

MySQL进阶-----索引的语法与SQL性能分析

目录 前言 一、索引语法 1.SQL语法 2.案例演示 二、SQL性能分析 三、慢查询日志 1.开启日志 2.测试样例 四、profile详情 1.开启profile 2.profile测试SQL语句 五、explain详情 1.语法结构 2.执行顺序示例&#xff08;id&#xff09; 3.执行性能示例(type) 前言 本…

fastadmin学习04-一键crud

FastAdmin 默认内置一个 test 表&#xff0c;可根据表字段名、字段类型和字段注释通过一键 CRUD 自动生成。 create table fa_test (id int unsigned auto_increment comment ID primary key,user_id int(10) default 0 null…

蓝桥杯物联网遇见的重大BUG及其产生原因和解决方法

BUG列表 1、ADC的RP2显示一直为0&#xff1a;2、LORX_Tx发送数据乱码&#xff1a;3、strcmp比较char a[2] {1, 2}与“12”字符串是否相等板子会死机&#xff1a;4、LORA_Tx和LORA_Rx放一起会接收不到数据&#xff1a;5、RTC获取到静止时间&#xff1a;6、ADC获取RP1和RP2模拟量…

Vue 03 组件通信

Vue学习 Vue 0301 浏览器本地存储localStorageSessionStorage案例 todolist的完善 02 组件自定义事件Custom Events基本使用解绑自定义事件注意事项①② 总结案例 todolist的完善 03 全局事件总线GlobalEventBus案例 todolist的完善 04 消息的订阅与发布案例 todolist的完善 05…

网络原理-传输层-UDP报文结构

本文介绍UDP报文 有很多友友搞不清楚UDP报文的详细结构还有TCP的详细结构,所以专门分开来讲 以免弄混. 首先我们先看一下整个UDP结构,让大家有一个全方面的认识 下面我们来详细解释UDP报 16位源端口号(本机):就是2字节大小,16个二进制位. 16位目的端口号(目的机):也是2字节…

SQL Server 数据库常见提权总结

前面总结了linux和Windows的提权方式以及Mysql提权&#xff0c;这篇文章讲讲SQL Server数据库的提权。 目录 基础知识 权限判定 系统数据库 存储过程 常见系统存储过程 常见扩展存储过程 xp_cmdshell扩展存储过程提权 xp_dirtree写入文件提权 sp_oacreate提权 xp_re…

Linux安装redis(基于CentOS系统,Ubuntu也可参考)

前言&#xff1a;本文内容为实操记录&#xff0c;仅供参考&#xff01; 一、下载并解压Redis 1、执行下面的命令下载redis&#xff1a;wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis&#xff1a;tar xzf redis-6.2.6.tar.gz 3、移动redis目录&a…

和数集团董事长唐毅一行参加香港加密峰会

2024年3月26日-27日&#xff0c;和数集团董事长唐毅、UM Company CEO Rubens、QUANTIX CAPITAL风险投资基金CEO Jake一行&#xff0c;参加了亚太地区重要的Web3会议“WOW Summit HongKong 2024”。 UM Company CEO Rubens、和数集团董事长唐毅、QUANTIX CAPITAL风险投资基金 CE…

【Java八股面试系列】中间件-Redis

目录 Redis 什么是Redis Redis解决了什么问题 Redis的实现原理 数据结构 String 常用命令 应用场景 List(列表) 常用命令 应用场景 Hash(哈希) 常用命令 应用场景 set(集合) 常见命令​编辑 应用场景 Sorted Set(有序集合) 常见命令​编辑 应用场景 数据持…

Day46:WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

目录 数据猜解-库表列数据&字典 权限操作-文件&命令&交互式 提交方法-POST&HEAD&JSON 绕过模块-Tamper脚本-使用&开发 分析拓展-代理&调试&指纹&风险&等级 知识点&#xff1a; 1、注入工具-SQLMAP-常规猜解&字典配置 2、注入…

助力低碳出行 | 基于ACM32 MCU的电动滑板车方案

前言 随着智能科技的快速发展&#xff0c;电动滑板车的驱动系统也得到了长足的发展。国内外的电动滑板车用电机驱动系统分为传统刷式电机和无刷电机两种类型。其中&#xff0c;传统的刷式电机已经逐渐被无刷电机所取代&#xff0c;无刷电机的性能和寿命都更出色&#xff0c;已成…

pandas数据保存与加载

安装操作Excel模拟数据写入编辑读取切片操作 统计 安装 pip install pandas pip install numpyExcel环境安装 pip install xlrd pip install xlwt pip install openpyxi操作Excel import pandas as pd 模拟数据 写入 import pandas as pd# 模拟需要写入的数据 dic{name:[…

【计算机网络篇】数据链路层(4.2)可靠传输的实现机制

文章目录 &#x1f354;可靠传输的实现机制⭐停止 - 等待协议&#x1f5d2;️注意 &#x1f50e;停止 - 等待协议的信道利用率&#x1f5c3;️练习题 ⭐回退N帧协议&#x1f388;回退N帧协议的基本工作流程&#x1f50e;无传输差错的情况&#x1f50e;超时重传的情况&#x1f5…

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

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

【考研数学】线代跟张宇,还是李永乐?

干吗要做选择&#xff0c;你可以全部都要的嘛&#xff01; 基础阶段选张宇&#xff0c;强化阶段选李永乐&#xff0c;这样搭配可以说是最佳了。 先来说下两位老师各自的特点&#xff0c;张宇老师&#xff0c;讲线代通俗易懂&#xff0c;技巧运用得溜溜的。他的课&#xff0c;…

samba实现linux共享文件夹

一、samba安装 sudo apt install samba 二、配置Samba 编辑Samba配置文件sudo vi /etc/samba/smb.conf 在文件末尾添加以下内容&#xff0c;设置一个简单的共享目录&#xff08;替换path_to_share为实际的共享目录路径&#xff09;&#xff1a; [Share] path /path_to_sha…

Linux:详解TCP协议段格式

文章目录 认识TCPTCP协议段格式 本篇主要总结的是TCP协议的一些字段 认识TCP TCP协议全称是传输控制协议&#xff0c;也就是说是要对于数据的传输进行一个控制 以上所示的是对于TCP协议进行数据传输的一个理解过程 全双工 至此就可以对于TCP协议是全双工的来进行理解了&…

【计算机图形学】3D Implicit Transporter for Temporally Consistent Keypoint Discovery

对3D Implicit Transporter for Temporally Consistent Keypoint Discovery的简单理解 文章目录 1. 现有方法限制和文章改进2. 方法2.1 寻找时间上一致的3D特征点2.1.1 3D特征Transporter2.1.2 几何隐式解码器2.1.3 损失函数 2.2 使用一致特征点的操纵 1. 现有方法限制和文章改…

[2023] 14届

1.日期统计 题意 1.日期统计 - 蓝桥云课 (lanqiao.cn) 思路 用dfs扫 对每一个位进行限制 花了一个小时 注意把答案枚举出来 对应一下看到底对不对 code #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<al…