Corsi on-line

PHP: Cancellare tutti i file in una cartella

In questo post vi segnalo una funzione PHP molto utile, grazie alla quale potremo cancellare tutti i file presenti all’interno di una data cartella sul nostro spazio web. Una funzioncina del genere si rivela molto utile in una serie di circostanze, ad esempio, qualora si desideri cancellare una cartella di file temporanei, di log oppure i file uploadati da un dato utente all’interno della propria directory personale.

function svuota_cartella($dirpath) {
  $handle = opendir($dirpath);
  while (($file = readdir($handle)) !== false) {
    echo "Cancellato: " . $file . "<br/>";
    @unlink($dirpath . $file);
  }
  closedir($handle);
}

// esempio di utilizzo:
// svuotiamo la cartella dell'utente "pippo"
svuota_cartella("/home/www/utenti/pippo/");

Come potete vedere l’unico parametro richiesto è il path (con la slash finale) della cartella che vogliamo svuotare. Tutti i file al suo interno verranno cancellati definitivamente.
Lavorando un po’ al codice possiamo anche introdurre dei filtri per cancellare, ad esempio, solo i file con una determinata estensione:

function svuota_cartella($dirpath, $ext) {
  $handle = opendir($dirpath);
  while (($file = readdir($handle)) !== false) {
    if (substr($file, -strlen($ext)) == $ext{
      echo "Cancellato: " . $file . "<br/>";
      @unlink($dirpath . $file);
    }else{
      echo "NON cancellato: " . $file . "<br/>";
    }
  }
  closedir($handle);
}

Questa seconda funzione ammette un secondo parametro che consiste nell’estensione dei file da rimuovere (ad esempio “.jpg” o “.html”). Il suo utilizzo è il seguente:

svuota_cartella("/home/www/utenti/pippo/", ".jpg");
Post correlati
I più letti del mese
Tematiche