http://Tafaz.altervista.org
Leggere le Directory con PHP
Stella PienaStella PienaStella PienaStella VuotaStella Vuota - 293 voti - 4298 visite

Allo stesso modo in cui ci permette di accedere ai file PHP ci consente anche di leggere le directory e ci fornisce una serie di strumenti per lavorarci.
Per poter leggere il contenuto di una directory dobbiamo aprire un handle (puntatore) alla directory con la funzione opendir();, che accetta come parametro una stringa contenente il percorso della directory da scorrere e ritorna una risorsa che è il puntatore al primo file della directory.
Il percorso può essere in due forme differenti, o assoluto o relativo, nel primo caso (assumendo di essere in un sistema linux) dovrà essere nella forma /path/della/directory/da/aprire mentre se si usa il percorso relativo si deve tener conto che sarà relativo alla directory dello script che lo richiama, quindi se lo script si trova in /var/www/sito.com/script.php il path di partenza sarà /var/www/sito.com.
Ora che abbiamo un puntatore alla directory possiamo scorrerla con la funzione readdir che accetta come parametro in ingresso il puntatore alla directory e ritorna il nome file puntato e sposta il puntatore della directory sul secondo file oppure FALSE quando il puntatore arriva all'ultimo file, lo spostamento seguirà l'ordinamento del filesystem.
Sia nei sistemi Windows che nei sistemi Linux ogni directory contiene sempre due directory chiamate "." e "..", la prima punta alla directory corrente mentre la seconda punta alla directory appena sopra quella corrente, ad esempio se ci troviamo in "/var/www" la directory "." sarà un riferimento a "/var/www" e ".." punterà a "/var", allo stesso modo dentro a "/var" troveremo queste due speciali directory e quindi da "/var/www" se scriviamo "../.." stiamo dicendo al sistema di salire di due directory e andremo a puntare a "/".
Detto questo vediamo il codice che ci permette di scorrere i file della directory dove si trova il nostro script:


<?php
$dir = "./";
$puntatore = opendir($dir);
while(false!==($file=readdir($puntatore))){
//scorro la directory con readdir e controllo che il valore ritornato sia diverso da FALSE
if($file!="." && $file!=".."){
//controllo che il file non sia una delle due directory speciali
touch($file); // con il comando touch modifico data e ora di modifica del file
}
}
closedir($puntatore); //chiudo il puntatore alla directory


Con questo semplice codice siamo andati a scorrere la directory e abbiamo modificato la data e ora di modifica di tutti i file della directory, infine con il comando closedir() abbiamo chiuso il puntatore alla directory.

Nel caso in cui sia necessario azzerare il puntatore e riposizionarlo al primo file della directory esiste la funzione rewinddir(); che accetta come parametro il puntatore da resettare.


Ritorna alla pagina Articoli

COMMENTI

Aggiungi un commento!
(I commenti verranno moderati prima della pubblicazione)


PHP Powered  Smarty Powered  MySQL Powered  Valid XHTML 1.0 Transitional  Valid CSS!  View Matteo Tinazzi's profile on LinkedIn

Logo Licenza Creative Commons  


Grafica realizzata da DrMarvel^