Visualizzazione risultati 1 fino 16 di 16
Like Tree6Likes
  • 1 Post By dreadnaut
  • 1 Post By dreadnaut
  • 1 Post By GraphOGLRisorse
  • 1 Post By alemoppo
  • 1 Post By alemoppo
  • 1 Post By GraphOGLRisorse

Discussione: php eliminare file in cartella

  1. #1
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Cool php eliminare file in cartella

    buon giorno...e'lo so....!!! stavate in pensiero,,,ancora non mi ero fatto sentire..ah ah.

    volevo provare a fare questo tipo di discorso, ma non so se sia fattibile:

    dopo che ho eliminato il record di mysql, volevo anche eliminare il file che ho nella cartella;

    nel senso :

    quando faccio l'upload dal sito, il file che inserisco in mysql. prende il nome di "$nomefile" con

    questa variabile(grazie ad alemoppo):

    Codice PHP:

    $file_salvato
    = rand(1, 100000000).'.'.pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
    $nomefile = ($file_salvato);
    move_uploaded_file($_FILES["file"]["tmp_name"], "animali/".$file_salvato);
    in mysql il file viene inserito con il nome di

    Codice PHP:
    "$nomefile".
    quindi:

    quando elimino il file da mysql, ho pensato di inserire questo codice alla fine per farmi eliminare

    anche il file nella cartella:

    Codice PHP:

    unlink
    ("/animali/".$nomefile);
    voi direte, quale' il problema? semplice... non me lo cancella.

    Sbaglio io il codice, oppure non e'una cosa fattibile? grazie. (ciao drenaut)

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Quando scrivi /animali/ con una barra all'inizio, stai cercando la directory animali alla radice del disco, fuori dal tuo spazio web.

    Per restare nella directory corrente, cioé nel tuo spazio, devi togliere la barra iniziale:
    Codice PHP:
    unlink("animali/" . $nomefile);
    Anche se io preferisco scriverlo mettendo la variabile dentro alla stringa, così ci sono meno simboli che mi confondono la vista
    Codice PHP:
    unlink("animali/$nomefile");
    noncecapisco likes this.

  3. #3
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    grazieeeeeeeeeeeeeeee...mo ce provo

  4. #4
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    ci ho provato... ma dalla cartella non lo elimina:


    Codice PHP:
    echo "l' annuncio e stato eliminato tra 3 secondi verrai reindirizzato al sito. ";
    $italia = "http://noncecapisco.altervista.org/animali/sito-italia.php";
    header("Refresh: 4; url=" . $italia);
    unlink("animali/" . $nomefile);
    Ultima modifica di noncecapisco : 29-04-2024 alle ore 19.43.05

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Il percorso così scritto è relativo allo script richiamato dal browser. Se la directory che contiene il file è... altrove, devi raggiungerla con il percorso corretto.

    Faccio un esempio:
    Codice:
    index.php
    |
    +- pagine/
    |  |
    |  `- elimina.php
    |
    `- immagini/
       |
       `- animali/
          |
          `- nomefile.jpg
    Metti che il codice sopra sia nello script /pagine/elimina.php.
    Codice PHP:
    unlink("animali/" . $nomefile);
    Quando lo esegui parte dalla directory pagine/, ci aggiunge animali/, e cerca di cancellare il file /pagine/animali/nomefile.jpg. Ma il file non è li, è dentro ad immagini/! Allora dovresti "uscire" da pagine/ con ../, e poi seguire il percorso fino al file:
    Codice PHP:
    unlink("../immagini/animali/" . $nomefile);
    Ultima modifica di dreadnaut : 29-04-2024 alle ore 23.47.03
    noncecapisco likes this.

  6. #6
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    il file si trova dentro la directory " /animali/file.

    non lo elimina...mi sa che non lo associa o boo..

    comunque grazie per l'aiuto.buona notte.

  7. #7
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,285

    Predefinito

    Salve,
    il file PHP in cui esegue unlink() mi risulta che sia sempre dentro alla cartella /animali/ che è àa stessa delle dove vengono salvate le immagini.

    Quindi non serve il percorso relativo:
    Codice PHP:
    unlink($nomefile);
    Cordili saluti.
    noncecapisco likes this.

  8. #8
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    buno giorno graphOGLrisorse

    hon provato cosi' ma non funziona:

    Codice PHP:

    <!DOCTYPE html>

    <?php

    $id
    = $_GET['id'];

    $servername = "localhost";
    $username = "noncecapisco";
    $password = "";
    $dbname = "my_noncecapisco";


    $cn = new mysqli($servername, $username, $password, $dbname);
    if (
    $cn->connect_errno) {
    echo
    "Connessione fallita: ". $cn->connect_error . ".";
    exit();
    }

    $servername = "localhost";
    $username = "noncecapisco";
    $password = "";
    $dbname = "my_noncecapisco";


    $cn = new mysqli($servername, $username, $password, $dbname);
    if (
    $cn->connect_errno) {
    echo
    "Connessione fallita: ". $cn->connect_error . ".";
    exit();
    }


    if(isset(
    $id))
    {

    $sql = "DELETE FROM sito_italia WHERE id ='".$id."' ";


    $result = $cn->query($sql);
    if (
    $result == 1) {

    unlink($nomefile);



    echo
    "l' annuncio e stato eliminato tra 3 secondi verrai reindirizzato al sito. ";
    $italia = "http://noncecapisco.altervista.org/animali/sito-italia.php";
    header("Refresh: 4; url=" . $italia);









    } else {
    echo
    "non e stato possibile eliminare l' annuncio, torna in dietro e contattaci sul sito. ".$conn->error;

    }
    }

    $cn->close();

    ?>
    forse ho sbagliato io il codice , o forse non rimane in memoria "$nomefile" boo..

    grazie sempre per gli aiuti.

  9. #9
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,285

    Predefinito

    Perchè c'è 2 volte la connessione con le relative variabili?
    Codice PHP:
    $servername = "localhost";
    $username = "noncecapisco";
    $password = "";
    $dbname = "my_noncecapisco";


    $cn = new mysqli($servername, $username, $password, $dbname);
    if (
    $cn->connect_errno) {
    echo
    "Connessione fallita: ". $cn->connect_error . ".";
    exit();
    }
    Poi, in questo script la variabile $nomefile non esiste e non mi sembra che venga recuperata. Quindi resta una variabile non valorizzata.

    Se la variabile $nomefile non è stata valorzzata, come può far cancellare un file?

    In questo caso, sarebbe come avere:
    Codice PHP:
    $nomefile = "";

    unlink($nomefile);
    Ovviamente così non porta a nulla.

    Cordiali saluti.

  10. #10
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    salve...grazie per la risposta, ho corretto il codice, e ho valorizzato la variabile...(penso nel modo corretto),

    ma, non elimina il file in cartella...sbaglio qualcosa?



    Codice PHP:
    <?php

    $id
    = $_GET['id'];


    $servername = "localhost";
    $username = "noncecapisco";
    $password = "";
    $dbname = "my_noncecapisco";


    $cn = new mysqli($servername, $username, $password, $dbname);
    if (
    $cn->connect_errno) {
    echo
    "Connessione fallita: ". $cn->connect_error . ".";
    exit();
    }


    if(isset(
    $id))
    {

    $sql = "DELETE FROM sito_italia WHERE id ='".$id."' ";


    $result = $cn->query($sql);
    if (
    $result == 1) {



    $file_salvato = rand(1, 100000000).'.'.pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
    $nomefile = ($file_salvato);


    echo
    "l' annuncio e stato eliminato tra 3 secondi verrai reindirizzato al sito. ";
    $italia = "http://noncecapisco.altervista.org/animali/sito-italia.php";
    header("Refresh: 4; url=" . $italia);
    unlink($nomefile);








    } else {
    echo
    "non e stato possibile eliminare l' annuncio, torna in dietro e contattaci sul sito. ".$conn->error;

    }
    }

    $cn->close();




    ?>
    Ultima modifica di noncecapisco : 30-04-2024 alle ore 16.05.48

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,752

    Predefinito

    Codice PHP:
    $file_salvato = rand(1, 100000000).'.'.pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
    $nomefile = ($file_salvato);
    Stai cercando di eliminare un file che si chiama <numero random>.<estensione>, dove <numero random> lo generi lì per lì casualmente. È ovvio che quel file non esista! (o meglio, hai una possibilità su 100000000 se c'è un file in quella cartella).

    Ciao!
    Ultima modifica di alemoppo : 30-04-2024 alle ore 19.16.43
    noncecapisco likes this.

  12. #12
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,285

    Predefinito

    Penso di averle risolto e semplificato parte del problema (a modo mio).

    Una via semplice, è quella di recuperare le immagini ad esempio con glob(). Comunque lascio perdere al momento tutti dettagli tecnici sul funzionamento, altrimenti scrivo un papiro.

    Nalla cartella /animali/ crei un file (ad esmpio ElimanaFile.php), quindi ci aggiunga questo codice senza modifcare nulla per il momento:

    Codice PHP:
    <form name="form" action="" method="get">
    <label>Percorso: </label>
    <input type="text" name="folder" id="folder" value="" placeholder="Cerca in cartella...">
    </form>

    <?php
    //error_reporting(-1);

    $link = '';
    foreach (
    glob('*.{jpg,jpeg,png,gif,bmp}', GLOB_BRACE) as $filename) {//{jpg,jpeg,png,gif}
    $link = str_replace(' ', '&nbsp;', htmlspecialchars($link));
    ?>
    <div style='text-align:center;'>
    <ul style='list-style-type:none;'>
    <li>
    <img src="<?= $filename ?>" style="width:400px;height:auto;"><br>
    <div style=''><?= date("d/m/Y - H:i:s", filemtime($filename)) ?> - </div>
    <form method="post">
    <input style="cursor: pointer;" name="delete" type="submit" value="Elimina <?= $filename ?>">
    </form>
    </li>
    </ul>
    </div>
    <?php
    }

    if(isset(
    $_POST['delete'])){
    if(
    file_exists($filename)) unlink($filename);
    }
    ?>
    Lo esegua e provi ad eliminare le immagini presenti nella cartella /animali/ cliccando sul relativi pulsanti.

    Questo dovrebbe semplificarle le case, visto che le basterà aggiundere nella home del sito un link alla pagina per far elimenare i file. Chiaramente dovrà aggiungere in il controllo dell'email o ad altro indentificativo correlato all'utente, altrimenti poi ogni utente potrà eliinare anche le immagini degli altri utenti.

    Eventualmente, Sempre in ElimanaFile.php può aggiungere anche un link ad esempio per far tornare l'utente alla home ed altri eventuali dettagli, come la grafica etc...

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 30-04-2024 alle ore 19.36.30
    noncecapisco likes this.

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,752

    Predefinito

    Io ho come l'impressione che voglia eliminare un file dove il nome è salvato sul database, dove ha l'id $_GET['id'].

    @noncecapisco: ma non avevi messo dei checkbox per eliminare file multipli?

    Ciao!
    noncecapisco likes this.

  14. #14
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    quindi...che faccio....che libbro devo studiare?

  15. #15
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    alemoppo io cio provato in tutti i modi....non ci riesco....ho provato a vedere cosa c'era nella casella checkbox

    tramite l'array...l'ho stampato, e' vuoto....te l'ho fatto vedere....non so che fare.

  16. #16
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    grazie signore............. a dire il vero sono riuscito a sistemare tutto....(anche grazie all'aiuto di

    alemoppo) ora sono riuscito a permettere agli utenti di eliminare da soli i propri annunci tramite email.

    una favola.... l'ho fatto anche per la bacheca annunci...grazie,grazie...se lo vuole vedere il sito e'al 99%....

    (da pc)


    http://noncecapisco.altervista.org/a...ito-italia.php

Regole di scrittura

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