Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Cancellare cartella, sottocartella e file

    Buon giorno ho la necessità di dover cancellare a seconda della scelta che faccio:
    1) solo i file contenuti, uno alla volta
    2) solo la sottocartella se vuota
    3) tutta la sottocartella ed il suo contenuto

    ho dato un'occhiata ad a questo post trovato qui sul forum:
    Codice PHP:
    $handle opendir($f);
      while (
    false!==($FolderOrFile readdir($handle)))
      {
         if(
    $FolderOrFile != "." && $FolderOrFile != "..")
         {
           if(
    is_dir("$f/$FolderOrFile")){ 
                   @
    rmdir("$f/$FolderOrFile"); 
                    echo 
    "    <script>
                    alert('dir: 
    $f/$FolderOrFile');
                </script>"
    ;
           }
           else{ 
                @
    unlink("$f/$FolderOrFile"); 
                echo 
    "    <script>
                    alert('folder: 
    $f/$FolderOrFile');
                </script>"
    ;
           }
         }
      }
      
    closedir($handle);
      if(
    rmdir($f))
      { 
    $success true; }
      return 
    $success

    ,il problema è che se clicco per cancellare solo un file, mi cancella tutta la sottocartella dove il file risiede, se invece voglio cancellare direttamente la sottocartella ed il suo contenuto non succede nulla...

    Come posso fare?
    grazie mille

  2. #2
    Ma perchè non fai al contrario?

    Mi spiego meglio...fatti l'elenco delle cartelle e dei rispettivi file contenuti all'interno...intabellati...
    Se clicchi sopra al file, farai l'unlink solo di quel file. Se invece clicchi sulla cartella farai il rmdir() di quella cartella

  3. #3
    scusami, ma dicono che se si vuole eliminare direttamente la cartella si deve prima controllare il suo interno, se è piena, prima si eliminano i file e poi si procede con la stessa cartella.
    Quindi?
    cioè, io facendo in questo modo, so se ho cliccato su una cartella o su un file singolo, ma purtroppo la cartella non la elimina.

    Se puoi cortesemente con un esempio...
    grazie ancora.

  4. #4
    Non è una cosa che ho mai fatto...però credo che non è molto difficile.

    Se crei una funzione che ti cicla il contenuto di una cartella data..esegui il controllo dei file contenuti al suo interno..se è vuota la cancelli, altrimenti cancelli prima i file che trovi dentro.

    No?

  5. #5
    Su una singola cartella è facile, ma il problema è se la cartella al suo interno ha altre sottocartelle... ci sono delle funzioni ricorsive trovabili in giro per il web che funzionano.

  6. #6
    Basta richiamare la stessa funzione...con le sottocartelle trovate...

  7. #7
    Per n° sottocartelle i suggerimenti ufficiali di php.net sono di creare una funzione ricorsiva, io sinceramente per "praticità" e sicurezza ho preferito non farlo, cioè se vogliono le persone in uno dei miei sistemi che ha un "esplora risorse" in versione web mi mandano un'email e mi dicono che cancellare, non sono migliaia di persone, solo quattro.

  8. #8
    salve ragazzi, ho trovato questa funzione ricorsiva sul web, ma non capisco perchè non mi elimina..
    Codice PHP:
    $path $f;
    function 
    rmdir_recurse($path) { 
        
    $path rtrim($path'/').'/'
        
    $handle opendir($path); 
        while(
    false !== ($file readdir($handle))) { 
            if(
    $file != '.' and $file != '..' ) { 
                
    $fullpath $path.$file
                if(
    is_dir($fullpath)) rmdir_recurse($fullpath); 
                else 
    unlink($fullpath); 
            } 
        } 
        
    closedir($handle); 
        
    rmdir($path); 

    Seconda cosa, prendetemi per matto, fate come volete, ma...questa funzione come si utilizza?
    Nel senso, la inserisco in un file (funzioni.ssi) che includo nella pagina, poi nella stessa pagina richiamo semplicemente la funzione ed il gioco è fatto?

    esempio nella pagina admin.php:
    Codice PHP:

    //includo la funzione
    include 'funzioni.ssi';

    //richiamo la funzione
    rmdir_recurse($path); 
    In questo modo?O sto dicendo una cabolata?
    grazie mille..

    PS: si lo so, mi mancano le basi...per altezza, diviso due...però vi prego aiutatemi.

  9. #9
    L'ideale sarebbe mettere la funziona legata ad un tasto o un link.
    Il link ha dei parametri get, manda a pagina 2 , pagina 2 vede i parametri e richiama la funzione.

  10. #10
    si infatti, la pagina dove includo e richiamo la funzione, viene caricata dopo aver cliccato un link.
    Altri parametri vengono inviati in modalità $_POST, dalla pagina dove sono i link..
    Quindi tutto regolare...
    Ora vorrei capire perchè facendo nel modo che ho postato in precedenza la funzione non si attiva e non svolge il suo compito.
    grazie ancora.

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.