Visualizzazione risultati 1 fino 13 di 13

Discussione: Eliminare una Directory (e/o tutti i files in essa contenuti) con PHP

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito Eliminare una Directory (e/o tutti i files in essa contenuti) con PHP

    Buonasara a tutti,
    avrei la necessità di eliminare una directory con PHP ma usando la funzione rmdir() se la cartella contiene files, non la elimina ma mi restituisce solamente un errore che mi informa che la cartella non è vuota.

    Ora potrei fare in modo di eliminare tutti i files contenuti nella cartella (hanno un unica estensione) ma non so quale funzione usare, cioè so che devo usare unlink() ma come la devo usare per far eliminare tutti i files con l'estensione da me scelto?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Usa glob() per i file, poi con un foreach metti unlink e cancelli tutti i file ^_^
    Ultima modifica di comunitavirtuali : 03-05-2008 alle ore 22.01.38

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Wow grazie ho fatto come hai detto tu e dopo due volte in errore lo script ha funzionato. Grazie tante per l'aiuto!

    EDIT: Ragazzi ho provato a sostituire la cartella con una variabile ma non funziona. Quindi ad esempio ho fatto cosi:

    Codice PHP:
    rmdir($variabile);
    ma non funziona!
    Ultima modifica di miki92 : 04-05-2008 alle ore 14.54.50
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    Posta l'intero codice del file php e ti possiamo dare una mano.


    Ciao...

  5. #5
    Guest

    Predefinito

    Stampa anche il valore di $variabile per vedere se il percorso è giusto.
    Restituisce qualche errore?
    Hai settato error_reporting su E_ALL?


    Ciao!

  6. #6
    Guest

    Predefinito

    ti posto il codice che uso io per eliminare una cartella da un file al suo interno!
    Codice PHP:
    <?php
    //EDIT: ---script che ha fatto un danno, non usare prima di averlo controllato!---forse ora è corretto---
    $cartelladaeliminare = "../cartella";
    //apro la cartella. In questo caso il nome della cartella è preceduto da '../', in modo da cercarla al livello superiore!
    $cartella = opendir($cartelladaeliminare);
    //leggo ogni file...
    while ($file = readdir($cartella)) {
    //...e li elimino!
    if($file !='.' && $file !='..'){
    unlink($cartelladaeliminare."/".$file);
    }
    }
    closedir($cartella);
    //a questo punto posso cancellare la cartella...
    if (!rmdir($cartelladaeliminare))
    {
    echo
    "Errore durante l'eliminazione!";
    } else {
    echo
    "Cartella eliminata con successo!";
    }
    ?>
    preso dal mio sito!
    Ultima modifica di gabriballets : 04-05-2008 alle ore 17.33.57

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    gabriballets ho usato il tuo script e mi ha cancellato tutto il sito! Ora non ne ho una copia di backup e non so come ripristinare il cancellato...mi sa che è impossibile!
    Ore di lavoro buttate al vento

    Ora dovrò fare tutto d'accapo!
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    cavolo cavolo cavolo!
    ti assicuro che io lo uso regolarmente...ma in che cartella l'hai eseguito?sei stato attento con il "../"?
    io ho scritto che in quel modo cercava la cartella al livello superiore!
    in più lo script non può eliminare altre cartelle oltre a quella indicata se esse contengono file.
    sono davvero desolato che per causa mia è successa sta cosa...spero che le ripercussioni per te non siano gravi!

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Se tutto va bene avrò bisogno di un altro paio di ore (per non dire qualche giorno con gli impegni che ciò) per ricostruire le pagine del sito mancati. E' la prima volta che costruisco un sito del tutto automatico che verrà gestito da un neofita e fa una brutta fine...va beh tagliamo la testa al toro non importa. Le pagine cancellate dovrebbero essere poche con molto codice ma vedrò come posso risolvere copiando un po' in qua ed in la...per eliminare le cartelle mi sa che per ora mi fermo con questo codice perchè non voglio combinare altri guai...dal momento che il sito è gestito da php e MySQL farò in modo che invece di eliminare la cartella ed i file elimini solo la query dal database cosi non uscirà la "categoria" cancellata dall'amministratore.

    Per ora vediamo un po' di modificare questo script:

    Codice PHP:
    $dir = $_POST['dir'];
    $cartelladaeliminare = "../$dir";
    //apro la cartella. In questo caso il nome della cartella è preceduto da '../', in modo da cercarla al livello superiore!
    $cartella = opendir($cartelladaeliminare);
    //leggo ogni file...
    while ($file = readdir($cartella)) {
    //...e li elimino!
    unlink($cartelladaeliminare."/".$file);
    }
    closedir($cartella);
    //a questo punto posso cancellare la cartella...
    if (!rmdir($cartelladaeliminare))
    {
    echo
    "Errore durante l'eliminazione!";
    } else {
    echo
    "Cartella eliminata con successo!";
    }
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Guest

    Predefinito

    mi sento tremendamente in colpa...se vai a vedere lo script malefico vedrai che ho aggiunto una condizione if escludendo . e .. penso che il problema sia dovuto a quello, ma non potrei giurarci...
    accertati che il file contenente lo script sia all'interno della cartella da eliminare altrimenti devi cambiare
    Codice PHP:
    $cartelladaeliminare = "../blabla"
    in
    Codice PHP:
    $cartelladaeliminare = "percorso/blabla"
    come ovvio.

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Non ti preoccupare non sentirti in colpa, anzi scusami se sopra ti ho aggredito ma non ti devi preoccupare ora sono calmo rispetto prima...ho recuperato tutto il sito riscrivendo daccapo tutti i codici e migliorandolo anche.

    Non ti preoccupare non sono arrabbiato...almeno non più
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    Guest

    Predefinito

    @Miki:
    Vuoi un consiglio? sostituisci le unlink con degli echo e idem per le cartelle. Solo quando sarai sicuro al 100% cancelli realmente file e cartelle.

    Il backup è sempre consigliato. Se poi hai a che fare con script del genere...

    Ciao

  13. #13
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Beh io non ho fatto un backup perchè nello script veniva scelta solo una determinata directory quindi non pensavo che potesse influire sulla "root" del sito. Va beh comunque ho risolto a modo mio, ho fatto in modo che quando l'amministratore decide di cancellare una categoria elimina solo il record da MySQL e poi mi invia una mail a me (tutto automaticamente) e cosi mentre gli utenti non vedranno la categoria cancellata, solo io potrò vederla in quanto webmaster, ed infine eliminerò la cartella.
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •