Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Elenco File Cartella

  1. #1

    Elenco File Cartella

    Ciao a tutti,
    vorrei fare un elenco in PHP dei file presenti in una cartella (in una directory del mio dominio). ho usato questo semplice script:

    <?php
    if($cartella = opendir('img/'))
    while($file = readdir($cartella))

    echo "$file
    ";

    closedir($cartella);
    ?>
    poi vado a vedere la pagina *.php nel dominio e mi elenca precisamente tutti i file della cartella IMG andando sempre correttamente a capo. il problema è che all'inizio mi dà un punto, poi a capo due punti e poi tutti i file, ad esempio:

    .
    ..
    file.jpg
    file2.jpg
    file3.jpg
    se provo poi a creargli un collegamento (con lo script <a href=\"img/$file\">$file</a>) come primo link (del primo punto) mi dà l'url http://www.nomesito.com/img/ e come secondo (i due punti) il dominio e basta http://www.nomesito.com/.


    come faccio ad eliminare quei fastidiosi punti all'inizio elencando solamente tutti i file presenti in una cartella? che ne so tipo se la cartella è piena di immagini almeno posso creare una specie di galleria fotografica.

    grazie in anticipo delle risposte.

  2. #2

    Re: Elenco File Cartella

    forse faresti meglio a leggere sul manuale ufficiale di php come si scorre una cartella perchè quella è la maniera scorretta
    php.net - readdir

    tornando alla tua domanda se guardi l'esempio sotto c'è scritto come fare

    Perchè essere stupidi non è una menomazione ma un diritto di tutti!!!

  3. #3
    FASTIDIOSI???!?!?
    ehm, tu devi ringraziare quei punti se cose come Directory e FileSystem esistono... ;-P

    Comunque, basta che controlli che $file != '.' && $file != '..'

  4. #4
    perfetto grazie mille ho risolto così:

    <?php
    $cartella = opendir('directory/');
    while (false !== ($file = readdir($cartella))) {
    if ($file != "." && $file != "..") {
    echo "$file
    ";
    }
    }
    closedir($cartella);
    ?>

  5. #5
    scusate se rompo ancora...

    dunque sto realizzando una galleria fotografica con questo metodo:

    <?php
    echo "Ecco tutte le foto contenute nell'album $dir:

    ";
    $cartella = opendir('public/album/'.$dir.' ');
    while (false !== ($file = readdir($cartella))) {
    if ($file != "." && $file != "..") {
    echo "<a href=\"public/album/$dir/$file\"><img border=\"0\" src=\"public/album/$dir/$file\" width=\"15%\" title=\"Ingrandisci la Foto\"></a>
    ";
    }
    }
    closedir($cartella);
    ?>
    ovviamente poi la pagina sarà "file.php?dir=Nome Cartella" con la variabile dir.

    fin qui tutto a posto, mi mette perfettamente le foto contenute nelle cartelle da me desiderate.

    Il problema sorge quando una cartella contiene il carattere --> '
    ad esempio la cartella Isola d'Elba mi crea questo problema:

    Warning: opendir(public/album/Isola d\'Elba) [function.opendir]: failed to open dir

    come posso ovviare questo problema? non posso creare cartelle con quel carattere?

    grazie in anticipo
    teo

  6. #6
    ..:: T€O ::.. davvero, c'è qualcosa di MOOOLTO pericoloso in quello che fai...

    Se un chiama il file file.php?dir=../../ che succede? Gli ritorna la lista dei file nella cartella principale (perché basta che legga l'HTML e veda gli src a cosa puntano) con lo stesso sistema può vedere tutto il contenuto visibile del tuo Server. Non è proprio indicato...

    Fai che hai una serie di directory inun array, in ingresso il file php prende l'indice dell'array.

    Ad esempio:
    $arr = array('lombardia', 'piemonte', ...);

    $id = intval($_GET['dir']);

    opendir($arr[$id]);

  7. #7
    se provo a mettere l'indirizzo file.php?dir=../../ non mi dà niente... schermo bianco... uhm.
    grazie comunque, studierò il tuo consiglio!!

    comunque in ogni caso tramite URL con l'apostrofo è impossibile che una variabile (per esempio L'A) nella pagina torni esattamente L'A? esiste un modo per evitare che mi scriva L\'A?

  8. #8
    risolto così:

    $dir=urlencode($dir);
    $dir=str_replace("%5C","",$dir);
    $dir=urldecode($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 © 2025 vBulletin Solutions, Inc. All rights reserved.