Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    [PILLOLA] lettura di una directory

    Ecco qui la mia seconda pillola,
    ho notato che un problema che ritorna spesso ma che poche volte viene risolto è la lettura di directory.
    Mi sono documentato e francamente mi è sembrato talmente facile farlo che quasi pensavo non valesse la pena fare un’intera pillola… infondo si trattava solo di leggere il manuale on line… tuttavia mi è venuta un’altra idea, oltre quello di spiegare chiaramente le [poche] funzioni utilizzate ho fatto una funzione che svolge nel modo migliore la lettura di una directory.
    Let’s Start 

    opendir($directory):
    è una funzione semplicissima, molto simile alle funzioni x aprire un database o un file, solo più semplice, prende un solo parametro e restituisce un identificativo (handle) relativo alla directory aperta. La directory viene specificata nell’unico parametro che questa funzione prende.
    Codice PHP:
    $handle opendir(‘c:/html.it’); 
    closedir($handle):
    questa funzione, altrettanto semplice, viene utilizzata per “chiudere” l’handle della directory. Viene usata quindi dopo una chiamata a opendir(). Non restituisce alcun risultato, quindi non è possibile verificare se fallisce (tralasciando i classici warning)
    Codice PHP:
    $handle opendir(‘c:/html.it’);
        <
    blocco istruzioni>
    closedir($handle); 
    readdir($handle):
    questa è la funzione che dovrebbe essere utilizzata da tutti coloro che hanno bisogno di leggere una directory. L’unico parametro che prende è l’handle della directory. Come negli array e nei file, esiste un puntatore che punta ad un elemento (negli array un elemento degli array, nei file il punto in cui scrivere), il puntatore inizialmente punterà sul primo elemento (nell’ordine in cui sono stati memorizzati) contenuto nella directory. A questo punto se esiste lo restituisce come stringa e sposta il puntatore all’elemento successivo. Da notare però che i primi due elementi di ogni directory sono “.” e “..”, non so’ a cosa servono, qualcuno me lo spieghi  so’ solo che compaiono anche in dos quando eseguiamo il comando “dir”. Boh 
    Quindi:
    Codice PHP:
    $handle opendir(‘c:/html.it’);
    while(
    $file readdir($fd)){
        
    $ris[count($ris)] = $file;

    closedir($handle); 
    ci possono essere vari inconveniente esaminando l’array $ris, esso infatti contiene anche i nomi delle cartelle contenute in esso senza aprirle. Per leggere tutti i file contenuti anche nelle sotto cartelle utilizzare la mia funzione dichiarata più giù.
    is_dir():
    verifica semplicemente se la stringa passata come parametro è una directory, restituisce un valore booleano, true se lo è, false se non lo è.

    A questo punto con queste semplici funzioni si può costruire una funzione che legge tutti i file contenuti anche nelle subdirectory. Procedo con la dichiarazione:
    Codice PHP:
    function dirtree($path){
        
    /**
        * author: kuarl<grivier@animeterminal.it>
    * date: 26-08-2002 
    */
        
    $fd opendir($path);
        while(
    $file readdir($fd)){
            if(
    $file != '.' && $file != '..'){
                
    $ris[count($ris)] = $path."/".$file;
                if(
    is_dir($ris[count($ris)-1])){
                    unset(
    $ris[count($ris)-1]);
                    
    $ris array_merge($risdirtree($path."/".$file));
                }                
            }
        }
        
    // questo pezzo serve x le directory vuote
        
    if(!@sort($ris)){ 
            
    $ris[0] = $path;
        }
        
    //------------------------------------------------
        
    closedir($fd);
        return 
    $ris;

    questa funzione prende come parametro una directory e ne restituisce tutti i file in un array, se una directory e vuota ne restituisce solo il nome, se questo comportamento secondario è scomodo basta commentare o eliminare la relativa parte di codice.
    Ogni elemento dell’array restituito può essere usato in altre funzioni che richiedono l’accesso a dei file come fileopen() o essere inserito come indirizzo in un link:

    Codice PHP:
    print [url="”’.$ris[4].”"].$ris [4].[/url]
    gli impieghi sono limitati unicamente dalle vostre capacità 

    Alla prossima!

    Kuarl

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    313
    con tutte queste supp...pillole scusate non mi faranno male?:gren:
    Windows era mia moglie,
    ora siamo separati in pc...
    Linux sta per diventare mia moglie
    -Ciociaria Linux User Group-
    http://www.cilug.org

  3. #3
    Ciao kuarl.
    Ho letto solo oggi la pillola per informazioni circa le operazioni su directory.
    Hai scritto:

    A questo punto se esiste lo restituisce come stringa e sposta il puntatore all’elemento successivo. Da notare però che i primi due elementi di ogni directory sono “.” e “..”, non so’ a cosa servono, qualcuno me lo spieghi  so’ solo che compaiono anche in dos quando eseguiamo il comando “dir”. Boh 
    Beh, nemmeno io so a cosa servono, ma è scomodo farli vedere ai visitatori in uno script da usare in un sito web.
    Allora posto qui, se ti interessa, il codice per eliminarli dalla visualizzazione (inseriscilo all'interno del ciclo WHILE per "condizionare" la visualizzazione a video dei vari elementi):


    if ($file != "." && $file != "..") {
    print "$file
    ";
    }


    spero di esserti stato utile.
    Ciao!
    Domenico Antonio Di Renzo
    Website: www.domenicodirenzo.it
    Email: contatti@domenicodirenzo.it

  4. #4
    Ops... scusa... ho visto che più avanti usi il codice da me suggerito.
    Domenico Antonio Di Renzo
    Website: www.domenicodirenzo.it
    Email: contatti@domenicodirenzo.it

  5. #5
    Ciao Kuarl,
    ./ indica la directory attuale e ../ indica quella che la contiene,

    Esempio html

    Guarda la lista dei files in questa directory

    Accedi alla parent_directory
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #6
    ho provato ad applicare la pillola, ma c'è un modo per sapere la dimensione dei files oltre al percorso e il nome e sommarli alla fine per sapere quanto è grande tutta la dir con le sottodirectory???

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    212
    guarda filesize()

  8. #8
    esistono comandi per la lettura di dierctory tramite ftp ???
    (in maniera dal leggere le directory di un sito da un altro spazio)

  9. #9
    la cosa che non mi è chiara è:
    if(is_dir($ris[count($ris)-1])){
    il -1 a cosa serve? è perchè l'array parte da 0 e count da 1?

  10. #10
    se il mio script è nella cartella immagini che a sua volta contiene altre directory come faccio a recuperare i nomi di queste dir????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.