Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    18

    eliminare file di testo da una cartella

    Buongiorno,

    premetto che di php so molto poco.

    Ho una pagina php sulla quale visualizzo tutti i files (e cartelle) dentro una cartella (sono files di testo).

    Questo il codice:

    <?php
    function dir_list($directory = FALSE)
    {
    $dirs= array();
    $files = array();

    if ($handle = opendir("./" . $directory))
    {
    while ($file = readdir($handle))
    {
    if (is_dir("./{$directory}/{$file}"))
    {
    if ($file != "." & $file != "..") $dirs[] = $file;
    }
    else
    {
    if ($file != "." & $file != "..") $files[] = $file;
    }
    }
    }
    closedir($handle);

    reset($dirs);
    sort($dirs);
    reset($dirs);

    reset($files);
    sort($files);
    reset($files);

    echo "Cartelle:\n<ul>";
    while(list($key, $value) = each($dirs))
    {
    $d++;
    echo "[*]<a href=\"{$value}\">{$value}/</a>\n";
    }
    echo "[/list]\n";
    echo "Files:\n<ul>";
    while(list($key, $value) = each($files))
    {
    $f++;
    echo "[*]<a href=\"{$directory}{$value}\">{$value}</a>\n";
    }
    echo "[/list]\n";


    if (!$d) $d = "0";
    if (!$f) $f = "0";
    echo "Sono presenti {$d} cartelle e {$f} file(s).
    \n";
    }[/B]

    Vorrei inserire la possibilità di eliminare i files presenti nelle directory principale con un click (parte di codice in rosso ).

    Cercando in rete, ho letto:
    Devi usare l'istruzione unlink($nomefile), dando a $nomefile il percorso esatto del file da eliminare.

    Il problema è che non so come inserire tecnicamente questa funzione nel codice sopra.

    Qualcuno è così gentile da dirmi come fare?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    fai uno script 'erase.php' con:

    Codice PHP:
    $pagina 'elenco.php';  // pagina dove andare dopo la cancellazione, può essere di nuovo quella con l'elenco dei file
    $cartellabase '....folder.../';  // cartella dove si trovano i file
    $nomefile = ((isset($_GET['nomefile']))?($_GET['nomefile']):(''));
    $nomecompleto $cartellabase.$nomefile;
    if (
    file_exists($nomecompleto)) {
      
    unlink ($nomecompleto);
    };
    header ('location: '.$pagina); 
    il link di "cancellazione" sarà:
    Codice PHP:
    echo "<a href=\"erase.php?nomefile={$value}\">{$value}</a>"
    MA STAI ATTENTO! dovresti fare - nello script di cancellazione - un controllo sui nomi altrimenti uno potrebbe fare una chiamata maligna tipo erase.php?nomefile=../../quelchemipare.boh

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    18
    Ok, grazie per la risposta

    Sinceramente non saprei da dove cominciare per fare un controllo come mi suggerisci.

    Potrebbe (dico potrebbe, perché non ne sono sicuro) non essermi utile il controllo poiché il file erase.php e lista.php starebbero dentro un area riservata alla quale accede solo il sottoscritto (almeno che qualcun altro non trovi la passwors )

    Dimmi se ho detto una fesseria

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    sì... volendo puoi lasciar perder il controllo, allora, anche se per estrema sicurezza (dato che parliamo di CANCELLAZIONE) un minimo la farei lo stesso... potresti per esempio almeno verificare che nel nome del file non ci siano "barre" (slash)... insomma un semplice controllo sulla stringa... un'altra possibilità e esaminare il risultato di dirname($nomecompleto) e verificare che la prima parte coincida con il percorso da te stabilito... se può interessarti prova o fai sapere se hai problemi

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.