• User Attivo

    eliminazione sottocartella e contenuto

    salve sto provando a selezionare e eliminare una sottocartella con il contenuto file pdf doc ma non funziona dove sbaglio?

     <h6>elimina cartella utente</h6>
    				<?php
    					$username = glob("documenti/*");
    					?>
                      <?php
    					function remove_directory($username) {
    						if (!is_dir($username)) return;
    
    						$username = scandir($username);
    						unset($username[0], $username[1]);
    
    						foreach($username as $object) {
    							$current_username = $username.'/'.$username;
    							if (filetype($current_username) === 'username') {
    								remove_directory($current_username);
    							} else {
    								unlink($current_username);    
    							}
    						}
    
    						rmdir($username);
    					}
    
    					if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username'])) {
    						$username = basename($_POST['username']);
    						if ($username[0] != '.') remove_directory("documenti/".$username);
    					}
    
    					?>
    					<form method="post">
    					  <label for="select-cartella">Scegli la cartella da eliminare</label>
    					  <select name="username" id="username">
    					<?php foreach($username as $username): ?>
    						<option value="<?= htmlspecialchars(basename($username)) ?>"><?= htmlspecialchars(basename($username)) ?></option>
    					<?php endforeach ?>
    					  </select>
    					  <input type="hidden" value="<?= htmlspecialchars(basename($username)) ?>">
    					 <input type="submit" value="Elimina" name="username">
    					</form>
    					
    

  • User Attivo

    risolto ora elimina sia la sottocartella e contenuto 🙂

    <?php
    					function remove_directory($directory) {
    						if (!is_dir($directory)) return;
    
    						$contents = scandir($directory);
    						unset($contents[0], $contents[1]);
    
    						foreach($contents as $object) {
    							$current_object = $directory.'/'.$object;
    							if (filetype($current_object) === 'username') {
    								remove_directory($current_object);
    							} else {
    								unlink($current_object);    
    							}
    						}
    
    						rmdir($directory);
    					}
    
    					if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username'])) {
    						$username = basename($_POST['username']);
    						if ($username[0] != '.') remove_directory("documenti/$username");
    					}
    
    					?>
    					<form action="" method="post">
    					<input type="text" name="username"/>
    					<input type="submit" name="delete"/>
    				    </form>
    

    massimux 1 Risposta
  • Moderatore

    @imperor attenzione... ti consiglierei di aumentare la sicurezza del tuo parametro in ingresso, altrimenti un malintenzionato potrebbe cancellare l'intero file system. 🙂