ciao ho cambiato tutto :) ma quando provo a eliminare la sottocartella mi appare la scritta directory nome creata con successo è pur vero che nella stessa pagina vi è per creare la sottocartella ma non elimina :(
Codice PHP:
<?php
$username = $_POST['username'] ?? ""; // ← se manca il parametro, usiamo una stringa vuota
function percorso_valido($dir) {
// il nome può contenere solo lettere, numeri, e '-'
if (!preg_match("/[a-zA-Z0-9-]+/", $dir)) {
return false;
}
// la directory non deve già esistere
if (is_dir($dir)) {
return false;
}
// tutti i controlli sono passati? OK!
return true;
}
// mkdir viene chiamata solo se il percorso è valido
$creazione_riuscita = percorso_valido($username)
&& mkdir("documenti/{$username}");
?>
<form method="post">
<h6>crea cartella utente</h6>
<input type="text" name="username" id="username" placeholder="Nuova cartella" />
<button type="submit">Crea</button>
</form>
<?php if ($creazione_riuscita): ?>
<div>
Directory <code><?= htmlspecialchars($username) ?></code> creata con successo!
</div>
<?php endif ?>
<hr/>
<h6>elimina cartella utente</h6>
<?php
function remove_directory($directory) {
if (!is_dir($directory)) return;
$contents = scandir($directory);
unset($contents[0], $contents[1]);
foreach($contents as $username) {
$current_object = $directory.'/'.$username;
if (filetype($current_object) === 'username') {
remove_directory($current_object);
} else {
unlink($current_object);
}
}
rmdir($directory);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username'])) {
$directory = basename($_POST['username']);
if ($directory[0] != '.') remove_directory("documenti/".$username);
}
?>
<form action="" method="post">
<input type="text" name="username" id="username" placeholder="Username" autofocus="true"/>
<input type="submit" name="username"/>
</form>