<?php
/**
* 文件管理器 兼容 win/linux 系统 兼容pc/mobile 多语言版
*/
header("Content-type:text/html;charset=utf-8");
error_reporting(0);
set_time_limit(0);
date_default_timezone_set('Asia/Chongqing');
session_start();
$RootDir = __DIR__;
$http_host = $_SERVER['HTTP_HOST'];
$packpath = 'updatapack';
$iscopy = 0;
$adminlist = [['admin', '654321']];
$act = isset($_REQUEST['act']) ? $_REQUEST['act'] : '';
$time = isset($_REQUEST['time']) ? $_REQUEST['time'] : 1; //更新时间查询 1天内
$showtime = isset($_REQUEST['showtime']) ? $_REQUEST['showtime'] : 0; //显示修改时间
$pcdir = $dir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : ['/']; //排除文件夹列表
//echo basename(__FILE__);
//print_r($dir);
if ($pcdir) {
$pcdir1 = [];
foreach ($dirlist as $key => $val) {
if (!in_array($val, $pcdir)) {
$pcdir1[] = $val;
}
}
$pcdir = $pcdir1;
}
/*判断用户登录 */
function check_admin_info()
{
if (!in_array(I('act'), ['login', 'logout']) && !$_SESSION['fm_admin']) {
fm_set_msg('还没有登录', 'error');
redirect('?act=login');
}
}
check_admin_info();
function get_dir_info()
{
$file = I('file', '');
$dir = explode(DIRECTORY_SEPARATOR, $file);
if (is_file($file)) {
array_pop($dir);
}
$arr = [];
foreach ($dir as $k => $v) {
if ($k == 0) {
$arr[$k]['list'][] = $v;
$arr[$k]['name'] = $v;
}
foreach ($dir as $kk => $vv) {
if ($k >= 1) $arr[$k]['list'][] = $vv;
$arr[$k]['name'] = $v;
if ($kk >= $k) break;
}
}
$arra = [];
foreach ($arr as $k => $v) {
$url = join(DIRECTORY_SEPARATOR, $v['list']);
$arra[$k] = '<a href="?act=view&file=' . $url . '">' . $v['name'] . '</a>';
}
if (join(DIRECTORY_SEPARATOR, $arra)) echo DIRECTORY_SEPARATOR . join(DIRECTORY_SEPARATOR, $arra);
else echo join(DIRECTORY_SEPARATOR, $arra);
}
if ($act == 'login') {
$g = I('go');
if ($g) {
$ok = 0;
foreach ($adminlist as $k => $v) {
if ($v[0] == I('fm_user') && $v[1] == I('fm_password')) {
$ok = 1;
}
}
if ($ok) {
$_SESSION['fm_admin'] = I('fm_user');
fm_set_msg('登录成功');
redirect('?');
} else {
fm_set_msg('管理员账号或者密码错误!', 'error');
redirect('?act=login');
}
}
}
if ($act == 'logout') {
unset($_SESSION['fm_admin']);
fm_set_msg('退出登录');
redirect('?act=login');
}
if ($act == 'batch') {
$delete = I('delete', 0);
if ($delete) {
$dir = I('dir');
if ($_REQUEST['file']) {
foreach ($_REQUEST['file'] as $k => $v) {
$file = $v;
if (is_dir($file)) {
deleteDir($file);
} else {
@unlink($file);
}
}
fm_set_msg('文件删除成功!');
} else {
fm_set_msg('没有选择任何文件!', 'alert');
}
if ($dir) redirect('?act=view&file=' . $dir);
else redirect(basename(__FILE__));
}
$zip = I('zip', 0);
if ($zip) {
$dir = I('dir');
$filea = [];
if ($_REQUEST['file']) {
foreach ($_REQUEST['file'] as $k => $v) {
$filea[] = $v;
}
$newzipfile = date('YmdHis') . '.zip';
if ($dir) $newzipfile = $dir . '_' . $newzipfile;
if ($dir) $newzipfile = $dir . DIRECTORY_SEPARATOR . $newzipfile;
$result = zip($filea, __DIR__ . DIRECTORY_SEPARATOR . $newzipfile);
if ($result) fm_set_msg('压缩成功' . $newzipfile);
else fm_set_msg('压缩失败' . $newzipfile, 'error');
} else {
fm_set_msg('没有选择任何文件!', 'alert');
}
if ($dir) redirect('?act=view&file=' . $dir);
else redirect(basename(__FILE__));
}
}
if ($act == 'unzip') {
$file = I('file');
$dir = '';
if (is_file($file)) {
$dir = explode(DIRECTORY_SEPARATOR, $file);
array_pop($dir);
$dir = join(DIRECTORY_SEPARATOR, $dir);
}
$fileA = explode('.', $file);
$path = $fileA[0];
if ($fileA) {
$result = @mkdirs($fileA[0]);
}
$res = unzip($file, $path);
if ($res) {
fm_set_msg('压缩文件已解压');
} else {
fm_set_msg('压缩文件未解压', 'error');
}
if ($dir) redirect('?act=view&file=' . $dir);
else redirect(basename(__FILE__));
}
if ($act == 'upload') {
$file = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$g = I('g');
if ($g) {
$copytodir = I('copytodir');
if ($_FILES['filelist']) {
$newdir = __DIR__ . DIRECTORY_SEPARATOR;
if ($copytodir) $newdir .= $copytodir . DIRECTORY_SEPARATOR;
$total = count($_FILES['filelist']['name']);
$index = 0;
for ($i = 0; $i < count($_FILES['filelist']['name']); $i++) {
$filename = iconv("UTF-8", "GBK", $_FILES['filelist']['name'][$i]);
if (is_uploaded_file($_FILES['filelist']['tmp_name'][$i])) {
$uploads = move_uploaded_file($_FILES['filelist']['tmp_name'][$i], $newdir . $filename);
if ($uploads) {
$index++;
}
}
}
fm_set_msg("共<b>" . $total . "</b>个文件 ");
} else {
fm_set_msg('未选择上传任何文件', 'alert');
}
redirect('?act=view&file=' . I('copytodir'));
}
}
if ($act == 'newdir') {
$file = I('p');
$new = I('new');
$newdir = $new;
if ($file) {
$file = str_replace('/', '\\', $file);
$newdir = $file . DIRECTORY_SEPARATOR . $new;
}
if (!is_dir($newdir)) {
$result = @mkdirs($newdir);
//echo $result;exit;
fm_set_msg("新建文件夹 <b>" . $newdir . "</b> 成功!");
} else {
fm_set_msg("新建文件夹 <b>" . $newdir . "</b> 失败!", 'error');
}
if ($file) {
redirect('?act=view&file=' . $file);
} else {
redirect(basename(__FILE__));
}
}
if ($act == 'del') {
$file = I('file');
if (is_dir($file)) {
deleteDir($file);
} else {
@unlink($file);
}
$dir = '';
if ($file) {
$dir = explode(DIRECTORY_SEPARATOR, $file);
array_pop($dir);
$dir = join(DIRECTORY_SEPARATOR, $dir);
}
fm_set_msg("文件 <b>" . $file . "</b> 删除成功");
if ($dir) {
redirect('?act=view&file=' . $dir);
} else {
redirect(basename(__FILE__));
}
}
if ($act == 'edit') {
$file = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$fileinfo = explode('.', $file);
$save = I('save');
if ($save) {
//print_r($_REQUEST);
$content = I('content');
$dir = '';
if ($file) {
$dir = explode(DIRECTORY_SEPARATOR, $file);
array_pop($dir);
$dir = join(DIRECTORY_SEPARATOR, $dir);
php 文件管理器
于 2022-08-31 18:35:43 首次发布