吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3568|回复: 30
收起左侧

[其他原创] WEB FTP管理工具 分支版本-20251022更新V7.3

  [复制链接]
又是馒头 发表于 2025-10-10 13:32
本帖最后由 又是馒头 于 2025-10-22 13:53 编辑

吃水不忘挖井人,首先要向原创作者29176413致敬,在征得其同意后,在其发布的V7.0版本之上进行优化更新的。
xw_20251010115651.png
原作者帖子链接:https://www.52pojie.cn/thread-2061527-1-1.html,原作者也一直在更新,但和我的侧重点、关注点不同,大家可根据需要自行选择。


版本 7.3 更新日志   更新日期:2025-10-22
问题修复
  • Windows+IIS环境下复制链接功能修复
    • 修复了在Windows IIS服务器环境下右键菜单复制链接功能不生效的问题
    • 改进了路径处理逻辑,正确处理Windows格式的文件路径(如D:\wwwroot\video_rei5ze\web\...)
    • 优化了复制链接的生成规则,确保生成的链接只包含相对于网站根目录的正确路径
    • 增强了路径分隔符统一处理,确保URL格式标准合规

下载地址:https://tungsl.lanzouu.com/b0koirl6h         
下载密码:   52pojie.cn


V7.2 更新日志

主要新增功能
  • 文件筛选功能
    • 新增完整的文件筛选系统,支持按名称、权限、日期、大小等多个维度进行文件筛选
    • 增加"包含子目录"筛选选项,以图标形式呈现(默认月牙图标🌙代表仅当前目录,点击切换为满月图标🌕代表包含子目录)
  • 上传冲突处理与备份机制
    • 上传文件或文件夹时,若遇到重名文件,自动将原有文件重命名为文件名_backup_时间戳格式,同时上传新文件
    • 添加顶部"清理备份"按钮,可一键删除所有包含backup的备份文件,方便测试结束后清理
    • 防止覆盖上传后无法找回原文件的情况,提高了文件操作的安全性
  • 系统环境检查独立与增强
    • 将系统环境检查从主程序中分离,成为独立页面
    • 详细列举程序所需的各种函数状态及其影响级别
    • 新增环境检查结果导出功能,方便问题诊断与报告
  • 文本编辑功能优化
    • 改进了保存、保存并关闭、取消按钮的处理逻辑
    • 在筛选结果列表中可以通过双击文件直接打开编辑,简化了操作流程
    • 在正常文件列表中保持右键菜单编辑操作,确保操作的一致性和可预测性
UI/UX优化
  • 操作提示系统重构
    • 所有操作成功、失败等提示信息均改为简洁明了的形式
    • 提示信息会在显示一段时间后自动消失,避免界面混乱
    • 保持界面整洁,减少用户手动关闭提示的操作
V7.2下载地址:https://tungsl.lanzouu.com/ig8vw38wi95g
注意:因为筛选功能使用了目录遍历,故可能被报毒,担心的就不要下载了,我使用的火绒是报毒了,我已经联系火绒了,火绒答复21日更新病毒库解除误报,其他杀毒没测。

xw_20251020165128.png
_cgi-bin_mmwebwx-bin_webwxgetmsgimg__&MsgID=8438278989373337897&skey=@crypt_.jpg
-----------------------------------------------------------------------------------------------------------

V7.1更新日志
一、新增文件
1. ftp_config.php - 配置文件
新增独立的配置文件,集中管理系统的所有设置,使主程序更加简洁,便于维护和更新。
主要配置项 :
- 安全设置
  - 密码哈希存储:使用 $PASSWORD_HASH 变量存储加密的密码哈希
  - IP白名单:通过 $ALLOWED_IPS 数组限制允许访问的IP地址
  - 登录安全:包含 $MAX_LOGIN_ATTEMPTS (最大登录尝试次数)和 $LOGIN_LOCK_TIME (登录锁定时间)
  - 会话超时: $SESSION_TIMEOUT 设置会话有效期为30分钟
  - HTTPS强制: $FORCE_HTTPS 选项可启用HTTPS访问强制跳转
  -IP黑名单配置:触发黑名单的最大尝试次数默认为30次、黑名单持续时间(秒)默认 24小时、
- 功能限制
  - 编辑文件大小限制: $MAX_EDITABLE_SIZE 设置为5MB
  -大文件分块上传的块大小:$UPLOAD_CHUNK_SIZE默认设置为 10MB
  -决定使用普通上传还是分块上传的文件大小阈值$LARGE_FILE_THRESHOLD 默认设置为15MB;
  -允许上传的文件类型(空数组表示不限制);
  -禁止上传的文件类型(优先级高于允许类型);
  -禁止删除的文件列表
以下是配置文件代码:
[PHP] 纯文本查看 复制代码
<?php
// FTP工具配置文件 - 请将此文件放在网站根目录之外的安全位置
// 例如: /home/yourusername/ftp_config.php

// ==================== 安全设置 ====================
// 密码设置(请修改为强密码)
$PASSWORD_HASH = '$2y$10$hNlBu4PD9FL3xyKUEpRedOYNdIOEaVdW0sH1YffuIFjrHOBH0Zq4m';

// 允许的IP地址列表(可选,留空则不限制IP)
$ALLOWED_IPS = [
  //  '1.1.1.1', 
 //  ‘2.2.2.2’
];

// 最大登录尝试次数
$MAX_LOGIN_ATTEMPTS = 15;

// 锁定时间(秒)
$LOGIN_LOCK_TIME = 120; 

// 会话超时时间(秒)- 30分钟
$SESSION_TIMEOUT = 1800;

// IP黑名单配置
// 触发黑名单的最大尝试次数
$MAX_BLACKLIST_ATTEMPTS = 30;
// 黑名单持续时间(秒)- 24小时
$BLACKLIST_DURATION = 86400;
// 黑名单存储文件路径
$BLACKLIST_FILE = $basePath . '/protected/ip_blacklist.json';

// 是否启用HTTPS强制跳转(如果网站支持HTTPS,建议启用)
$FORCE_HTTPS = true;

// ==================== 功能限制 ====================
// 最大可编辑文件大小(字节)- 5MB
$MAX_EDITABLE_SIZE = 5 * 1024 * 1024;

// 大文件分块上传的块大小(字节)- 10MB
$UPLOAD_CHUNK_SIZE = 10 * 1024 * 1024;

// 决定使用普通上传还是分块上传的文件大小阈值(字节)- 15MB
$LARGE_FILE_THRESHOLD = 15 * 1024 * 1024;

// 允许上传的文件类型(空数组表示不限制)
$ALLOWED_UPLOAD_TYPES = [

];

// 禁止上传的文件类型(优先级高于允许类型)
$BLOCKED_UPLOAD_TYPES = [
    'exe'
];

// ==================== 安全保护 ====================
// 禁止删除的文件列表
$PROTECTED_FILES = [
    'ftp.php',
    'ftp_config.php',
    'web_hash_generator.php'
];

// 禁止删除的目录列表
$PROTECTED_DIRECTORIES = [
    'protected'
];
?>


2. web_hash_generator.php - 密码哈希生成工具
新增网页版密码哈希生成工具,用于安全地生成符合系统要求的密码哈希值。
主要功能 :
- 密码强度验证:要求密码至少8个字符,包含字母和数字
- 密码可见性切换:支持显示/隐藏密码明文
- 一键复制哈希值:方便用户复制生成的哈希值到配置文件
- 使用指南:
1.访问 web_hash_generator.php 页面
2.输入符合要求的密码
3.点击"生成哈希值"按钮
4.复制生成的哈希值
5.在 ftp_config.php 中更新 $PASSWORD_HASH 变量
   目前压缩包内配置文件中的默认密码是:52pojie.cn  
下面是本部分代码:
[PHP] 纯文本查看 复制代码
<?php
/**
 * 网页版密码哈希生成工具
 * 这个脚本可以通过浏览器访问,用于生成安全的密码哈希值
 */

// 设置页面编码
header('Content-Type: text/html; charset=utf-8');

$generated_hash = null;
$message = null;
$message_type = 'info';

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['password'])) {
    $password = $_POST['password'];
    
    // 验证密码强度
    if (strlen($password) < 8) {
        $message = '密码至少需要8个字符';
        $message_type = 'error';
    } elseif (!preg_match('/[A-Za-z]/', $password) || !preg_match('/[0-9]/', $password)) {
        $message = '密码必须包含字母和数字';
        $message_type = 'error';
    } else {
        // 生成密码哈希
        $generated_hash = password_hash($password, PASSWORD_DEFAULT);
        $message = '密码哈希生成成功';
        $message_type = 'success';
    }
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>密码哈希生成工具</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f5f5f5;
        }
        .container {
            background-color: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            color: #333;
            text-align: center;
            margin-bottom: 30px;
        }
        .form-group {
            margin-bottom: 20px;
        }
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: bold;
            color: #555;
        }
        input[type="password"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 16px;
            box-sizing: border-box;
        }
        button {
            background-color: #4CAF50;
            color: white;
            border: none;
            padding: 12px 20px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            width: 100%;
        }
        button:hover {
            background-color: #45a049;
        }
        .hash-result {
            margin-top: 20px;
            padding: 15px;
            background-color: #f9f9f9;
            border: 1px solid #ddd;
            border-radius: 4px;
            word-break: break-all;
        }
        .copy-btn {
            margin-top: 10px;
            background-color: #2196F3;
            padding: 8px 15px;
            width: auto;
        }
        .copy-btn:hover {
            background-color: #0b7dda;
        }
        .message {
            padding: 10px;
            margin-bottom: 20px;
            border-radius: 4px;
        }
        .message.success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        .message.error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        .message.info {
            background-color: #d1ecf1;
            color: #0c5460;
            border: 1px solid #bee5eb;
        }
        .instructions {
            margin-top: 30px;
            padding: 15px;
            background-color: #f0f7ff;
            border: 1px solid #bed6ff;
            border-radius: 4px;
        }
        .instructions h3 {
            margin-top: 0;
            color: #1e40af;
        }
        code {
            background-color: #f8f9fa;
            padding: 2px 4px;
            border-radius: 3px;
            font-family: monospace;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>密码哈希生成工具</h1>
        
        <?php if ($message): ?>
            <div class="message <?php echo $message_type; ?>">
                <?php echo $message; ?>
            </div>
        <?php endif; ?>
        
        <form method="post">
            <div class="form-group">
                <label for="password">输入密码:</label>
                <div style="position: relative;">
                    <input type="password" id="password" name="password" placeholder="请输入要生成哈希的密码" required style="padding-right: 40px; width: 100%; box-sizing: border-box;">
                    <button type="button" id="toggle-password" style="position: absolute; right: 5px; top: 50%; transform: translateY(-50%); background: none; border: none; cursor: pointer; color: #666; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; font-size: 16px;">
                        &#128065;&#65039;
                    </button>
                </div>
            </div>
            <button type="submit">生成哈希值</button>
        </form>
        
        <?php if ($generated_hash): ?>
            <div class="hash-result">
                <strong>生成的哈希值:</strong>
                <div id="hash-value"><?php echo $generated_hash; ?></div>
                <button class="copy-btn">复制哈希值</button>
            </div>
        <?php endif; ?>
        
        <div class="instructions">
            <h3>使用说明:</h3>
            <ol>
                <li>在上方输入您想要使用的密码</li>
                <li>点击"生成哈希值"按钮</li>
                <li>复制生成的哈希值</li>
                <li>打开 <code>ftp_config.php</code> 文件</li>
                <li>将 <code>$PASSWORD_HASH</code> 变量的值替换为生成的哈希值</li>
                <li>确保注释掉或删除任何明文密码</li>
            </ol>
            <p><strong>注意:</strong> 请妥善保管您的密码,系统只存储密码的哈希值,无法从哈希值还原出原始密码。</p>
        </div>
    </div>
    
    <script>
        function copyToClipboard() {
            const hashText = document.getElementById('hash-value').innerText;
            navigator.clipboard.writeText(hashText)
                .then(() => {
                    alert('哈希值已复制到剪贴板');
                })
                .catch(err => {
                    console.error('复制失败:', err);
                });
        }
        
        // 切换密码显示/隐藏功能
        document.getElementById('toggle-password').addEventListener('click', function() {
            const passwordInput = document.getElementById('password');
            
            // 保存当前输入框的值和尺寸
            const value = passwordInput.value;
            const width = passwordInput.offsetWidth;
            const height = passwordInput.offsetHeight;
            
            // 切换输入框类型
            const type = passwordInput.getAttribute('type') === 'password' ? 'text' : 'password';
            passwordInput.setAttribute('type', type);
            
            // 恢复输入框的值和尺寸
            passwordInput.value = value;
            passwordInput.style.width = width + 'px';
            passwordInput.style.height = height + 'px';
            
            // 切换按钮图标(使用更直观的图标)
            this.textContent = type === 'password' ? '&#128065;&#65039;' : '&#128683;';
        });
    </script>
</body>
</html>


二、新增功能
1. 安全增强功能
登录验证系统 :从无安全验证到完整登录系统
  - 以前:任何人知道链接即可访问,存在严重安全隐患
  - 现在:必须通过密码验证才能访问系统
注销登录 :增加注销功能,保护账户安全
IP白名单机制 :新增IP白名单列表,只有指定IP才能访问
IP黑名单机制 :新增长期黑名单功能,与临时锁定并存
- 15次密码错误:临时锁定120秒
- 30次密码错误:IP加入黑名单24小时后自动解除
密码生成工具 :新增密码哈希生成工具页面,方便管理员设置安全密码
主文件代码太长了,没法粘贴出来,想看的话下载附件自行查看,没有加密,下面是安全验证部分代码:
[PHP] 纯文本查看 复制代码
// ==================== 安全验证 ====================
session_start();

// 配置文件路径
$configPath = $basePath . '/protected/ftp_config.php';
if (!file_exists($configPath)) {
    die('配置文件不存在,请检查路径: ' . $configPath);
}
require_once $configPath;

// 黑名单管理函数
function loadBlacklist() {
    global $BLACKLIST_FILE;
    if (!file_exists($BLACKLIST_FILE)) {
        return [];
    }
    $content = file_get_contents($BLACKLIST_FILE);
    return json_decode($content, true) ?: [];
}

function saveBlacklist($blacklist) {
    global $BLACKLIST_FILE;
    file_put_contents($BLACKLIST_FILE, json_encode($blacklist, JSON_PRETTY_PRINT));
}

function isIPBlacklisted($ip) {
    $blacklist = loadBlacklist();
    if (!isset($blacklist[$ip])) {
        return false;
    }
    
    // 检查黑名单是否已过期
    $currentTime = time();
    if ($blacklist[$ip] < $currentTime) {
        // 移除过期的黑名单记录
        unset($blacklist[$ip]);
        saveBlacklist($blacklist);
        return false;
    }
    
    return true;
}

function addIPToBlacklist($ip) {
    global $BLACKLIST_DURATION;
    $blacklist = loadBlacklist();
    $blacklist[$ip] = time() + $BLACKLIST_DURATION;
    saveBlacklist($blacklist);
}

// IP失败尝试记录函数
function getIPFailedAttempts($ip) {
    $logFile = 'ip_failed_attempts.log';
    if (!file_exists($logFile)) {
        return 0;
    }
    
    $attempts = 0;
    $lines = file($logFile);
    foreach ($lines as $line) {
        if (strpos($line, $ip) !== false) {
            $attempts++;
        }
    }
    return $attempts;
}

function logIPFailedAttempt($ip) {
    $logFile = 'ip_failed_attempts.log';
    $logEntry = date('Y-m-d H:i:s') . ' - ' . $ip . "\n";
    file_put_contents($logFile, $logEntry, FILE_APPEND);
}

function clearIPFailedAttempts($ip) {
    $logFile = 'ip_failed_attempts.log';
    if (!file_exists($logFile)) {
        return;
    }
    
    $lines = file($logFile);
    $filteredLines = array_filter($lines, function($line) use ($ip) {
        return strpos($line, $ip) === false;
    });
    
    file_put_contents($logFile, implode('', $filteredLines));
}

// 检查是否在黑名单中
$userIP = $_SERVER['REMOTE_ADDR'];
if (isIPBlacklisted($userIP)) {
    $blacklist = loadBlacklist();
    $remainingTime = $blacklist[$userIP] - time();
    $hours = floor($remainingTime / 3600);
    $minutes = floor(($remainingTime % 3600) / 60);
    die("您的IP已被暂时禁止访问。请在{$hours}小时{$minutes}分钟后再试。");
}

// 检查IP限制
if (!empty($ALLOWED_IPS) && !in_array($userIP, $ALLOWED_IPS)) {
    die('访问被拒绝:您的IP('.$userIP.')不在允许列表中');
}

// 初始化登录尝试计数器
if (!isset($_SESSION['login_attempts'])) {
    $_SESSION['login_attempts'] = 0;
}

// 失败尝试记录已移至密码验证失败时执行
// 检查HTTPS
if ($FORCE_HTTPS && empty($_SERVER['HTTPS'])) {
    header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit;
}

// 检查认证
if (!isset($_SESSION['ftp_authenticated']) || $_SESSION['ftp_authenticated'] !== true) {
    if (isset($_POST['password']) && !empty($_POST['password'])) {
        // 只有实际提交了密码才计数
        if ($_SESSION['login_attempts'] >= $MAX_LOGIN_ATTEMPTS) {
            // 设置锁定时间
            if (!isset($_SESSION['lock_time'])) {
                $_SESSION['lock_time'] = time();
            }
            showLoginForm('登录尝试过多,请稍后再试');
        }
        
        if (password_verify($_POST['password'], $PASSWORD_HASH)) {
            $_SESSION['ftp_authenticated'] = true;
            $_SESSION['login_attempts'] = 0;
            $_SESSION['last_activity'] = time();
            
            // 登录成功,清除该IP的失败尝试记录
            $userIP = $_SERVER['REMOTE_ADDR'];
            clearIPFailedAttempts($userIP);
            
            // 登录成功后重定向,确保页面通过GET请求加载,解决白屏问题
            header('Location: ' . $_SERVER['PHP_SELF']);
            exit;
        } else {
            $_SESSION['login_attempts']++;
            $userIP = $_SERVER['REMOTE_ADDR'];
            
            // 记录失败尝试
            file_put_contents('login_attempts.log', 
                date('Y-m-d H:i:s').' - '.$userIP.' - 尝试次数: '.$_SESSION['login_attempts'].'\n',
                FILE_APPEND
            );
            
            // 记录IP级别的失败尝试
            logIPFailedAttempt($userIP);
            
            // 检查是否达到黑名单触发次数
            $totalFailedAttempts = getIPFailedAttempts($userIP);
            if ($totalFailedAttempts >= $MAX_BLACKLIST_ATTEMPTS) {
                // 添加到黑名单
                addIPToBlacklist($userIP);
                die("登录尝试过多,您的IP已被暂时禁止访问24小时。");
            }
            
            // 检查是否达到最大尝试次数,如果是则设置锁定时间
            if ($_SESSION['login_attempts'] >= $MAX_LOGIN_ATTEMPTS) {
                $_SESSION['lock_time'] = time();
                // 重定向到锁定页面
                header('Location: ' . $_SERVER['PHP_SELF'] . '?locked=true');
            } else {
                // 使用Post/Redirect/Get模式防止表单重复提交
                header('Location: ' . $_SERVER['PHP_SELF'] . '?error=password');
            }
            exit;
        }
    } else {
        // 检查是否有错误参数但没有POST请求(可能是重定向后的GET请求)
        $error = '';
         
        // 优先检查是否锁定状态
        if (isset($_GET['locked']) && $_GET['locked'] === 'true') {
            // 锁定状态不设置具体错误信息,由showLoginForm内部处理
            $error = '';
        } else if (isset($_GET['error']) && $_GET['error'] === 'password') {
            $error = '密码错误';
        }
         
        // 未提交密码时显示登录表单,不计数
        showLoginForm($error);
    }
    exit;
}

// 登录尝试次数检查已整合到认证逻辑中

// 以下代码已移至登录验证流程中,避免重复执行和逻辑冲突

// 初始化和检查会话超时
if (!isset($_SESSION['last_activity'])) {
    $_SESSION['last_activity'] = time();
} elseif (time() - $_SESSION['last_activity'] > $SESSION_TIMEOUT) {
    session_unset();
    session_destroy();
    showLoginForm('会话已超时,请重新登录');
    exit;
}
$_SESSION['last_activity'] = time();

// ==================== 功能函数 ====================
function showLoginForm($error = '') {
    global $MAX_LOGIN_ATTEMPTS, $ALLOWED_IPS, $LOGIN_LOCK_TIME;
    
    // 初始化登录尝试次数会话变量(如果不存在)
    if (!isset($_SESSION['login_attempts'])) {
        $_SESSION['login_attempts'] = 0;
    }
    
    // 检查是否处于锁定状态
    $isLocked = false;
    $remainingTime = 0;
    if (isset($_SESSION['login_attempts']) && $_SESSION['login_attempts'] >= $MAX_LOGIN_ATTEMPTS) {
        if (isset($_SESSION['lock_time'])) {
            $timeSinceLock = time() - $_SESSION['lock_time'];
            if ($timeSinceLock < $LOGIN_LOCK_TIME) {
                $isLocked = true;
                $remainingTime = $LOGIN_LOCK_TIME - $timeSinceLock;
                // 锁定状态下不显示传入的错误信息,避免重复
                $error = '';
            } else {
                // 锁定时间已过,重置登录尝试次数
                $_SESSION['login_attempts'] = 0;
                $_SESSION['lock_time'] = null;
            }
        }
    }
    
    ?>

2. 文件操作功能
复制链接 :右键菜单新增"复制链接"选项,一键复制文件访问URL到剪贴板
图片/视频预览 :支持直接预览图片和视频文件、图片支持上一张/下一张翻页浏览
文本编辑器优化 :文本编辑框增加行号显示,提升代码编辑体验
设置权限:新增批量设置文件及文件夹权限功能
访问网站 :新增直接访问网站功能,方便快速查看在线内容
复制功能:支持文件及文件夹的复制
移动功能:支持文件及文件夹的移动

三、界面与用户体验优化
1. 文件列表改进
- 日期显示 :文件列表新增修改日期显示
- 权限显示:文件列表显示权限
- 文件夹统计 :文件夹名称后增加文件数量统计
- 加宽页面 :扩展页面宽度,提供更大的工作区域
- 取消顶部标题 :移除页面顶部标题和副标题,增加可视工作区域
- 优化全选功能:取消权限按钮,在文件及文件夹前增加勾选框
2. 交互体验优化
- 修复滚动问题 :解决了因鼠标选中悬浮效果导致的底部滚动条和页面颤动问题

四、系统配置优化
1. 配置文件优化
- 统一配置管理 :将大文件分块上传的配置转移到统一的配置文件中
- 取消了硬编码,便于集中管理和修改配置
- 程序文件保护 :增加了对本程序文件的防删除保护,防止误操作删除核心文件
- 文件大小限制 :增加了文件大小限制配置,防止编辑过大文件
- 优化安全配置 :全面优化了安全配置项,提升系统整体安全性

总结
本次更新不仅从根本上提升了系统安全性,从无保护状态升级到包含登录验证、IP白名单和黑名单的完整安全体系,还通过多项实用功能和界面优化,让文件管理操作更加便捷高效。新增的复制链接、媒体预览等功能将大大提升您的使用体验,而配置管理的优化则让系统维护更加简单可靠。

xw_20251009140545.png
33333.png
xw_20251009151025.png

可从附件下载,也可从https://tungsl.lanzouu.com/i2YcA382k52b下载
66664.png

ftp.zip

52.58 KB, 下载次数: 65, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 8吾爱币 +15 热心值 +6 收起 理由
四君子 + 1 + 1 我很赞同!
saicdr + 1 + 1 谢谢@Thanks!
hrh123 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wapj2900958 + 1 + 1 作者更新到11,期待
dglaobing + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!还会继续更新吗
sghh611 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
少污污 + 1 用心讨论,共获提升!
阳光好青年 + 2 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

开创者 发表于 2025-10-10 14:50
不错,参考一下单文件PHP应用,瞬间创建文件和文件夹的图库,支持联网访问轻松管理! - 吾爱破解 - 52pojie.cn
https://www.52pojie.cn/thread-2064219-1-1.html
功能更多,目前我用的这个,要是能搬过来就好了。
少污污 发表于 2025-10-11 18:39
本帖最后由 少污污 于 2025-10-11 18:42 编辑

刚刚试了一下,发现一个小小BUG, 就是我选中一个文件。点权限修改。我什么都不动。我点击取消。提示:无效的权限格式!请输入3-4位数字(0-7)。

不是应该直接关闭对话框的吗?


又发现一个问题。只能放在根目录。放在二级或三级目录里。只能管理当前目录下的文件或文件夹。
fleischer 发表于 2025-10-10 13:36
好软件,试一试看怎么样,好的画推荐给大家
阳光好青年 发表于 2025-10-10 13:37
不错的工具。
少污污 发表于 2025-10-10 14:05
非常感谢升级了安全登陆等等。哈。这下放心了。
guyang9264 发表于 2025-10-10 14:10
这工具看着不错啊
applepv 发表于 2025-10-10 14:15
试用了下,,挺好的,,不错
Airsol 发表于 2025-10-10 14:19
感谢大佬分享
dork 发表于 2025-10-10 14:19
挺好的,其实既是FTP管理工具,也是个文件资源管理器explorer,同时也是个免杀版的PHP webshell。
gugouo163 发表于 2025-10-10 14:41
叫文件管理器更合适
411161555 发表于 2025-10-10 14:46
dork 发表于 2025-10-10 14:19
挺好的,其实既是FTP管理工具,也是个文件资源管理器explorer,同时也是个免杀版的PHP webshell。{:301_997 ...

你确定免杀???
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-10 07:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表