Visualizzazione risultati 1 fino 10 di 10

Discussione: Cancellare file su server dal web, non usando ftp

  1. #1
    Guest

    Predefinito Cancellare file su server dal web, non usando ftp

    Salve ragazzi, avrei bisogno di un aiutino. In pratica ho un server dove gli utenti autorizzati possono sia scaricare che caricare files. Sono riuscito a fare questo con un script pronto in php, oltre la pagina principale in html. Però mi servirebbe che un utente quando carica un file e magari si accorge di aver sbagliato, gli vorrei dare la possibilità di cancellare quel file direttamente da web. Ho letto in rete molti esempi ma proprio non sono riuscito a capire al meglio perchè sono un neofita in queste cose. Qualcuno così gentile da mostrarmi su come agire?

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

    Predefinito

    Beh puoi farlo con la unlink().

    Dove ti blocchi? Se non sai andare avanti, puoi mostrare il codice che hai scritto fin ora?

    Ciao!

  3. #3
    Guest

    Predefinito

    Allora io ho creato una cartella dove risiede diciamo il sito con tanto di pagina html con questo codice

    Codice:
    <?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      </head>
      <body>
        
        <div id="download">
        <p>Per accedere all'area Download clicca su 
        <form><input type="button" value="Download" onclick="window.location.href='Download/'">
        </form>
        </div>
        </p>
        </br>
        </br>
        <div id="uploaded">
        <p>Per verificare i files caricati sul server clicca su
        <form><input type="button" value="Files Caricati" onclick="window.location.href='Upload/'">
        </form>
        </div>
        </p>
        </br>
        </br>
        <form enctype="multipart/form-data" action="upload.php" method="POST">Se si desidera caricare un file clicca su: <input name="userfile" type="file">
        </br>
        <input type="submit" value="Invia File">
        </form>
    
      </body>
    </html>
    Poi nella stessa cartella ho creato un file che si chiama upload.php ed ha questo codice
    Codice:
     <?php
    //percorso della cartella dove mettere i file caricati dagli utenti
    $uploaddir = '/var/www/mp/Upload/';
    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES['userfile']['tmp_name'];
    //recupero il nome originale del file caricato
    $userfile_name = $_FILES['userfile']['name'];
    $target_file = '/var/www/mp/Upload/' . $_FILES['userfile']['name'];
    if (file_exists($target_file)) {
      echo 'Il file esiste, rinominarlo e riprovare';
      exit;
    }
    $ext_ok = array('pdf', 'xls', 'xlsx', 'jpg', 'jpeg', 'bmp', 'png', 'doc', 'docx');
    $temp = explode('.', $_FILES['userfile']['name']);
    $ext = end($temp);
    if (!in_array($ext, $ext_ok)) {
      echo "Sono ammessi file XLS, XLSX, JPG, JPEG, BMP, PNG, DOC, DOCX e PDF!</br></br>Nel caso si riceva sempre esito negativo, controllare che le lettere dell'estensione file siano tutte in minuscolo";
      exit;
    }
    //copio il file dalla sua posizione temporanea alla mia cartella upload
    if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name)) {
      //Se l'operazione è andata a buon fine...
      echo 'File inviato con successo.';
    }else{
      //Se l'operazione è fallta...
      echo 'Upload NON valido!</br></br>Prova a verificare che il file sia inferiore a 5Mb avente estensione PDF, XLS, XLSX, JPG, JPEG, BMP, PNG'; 
    }
    ?>
    Adesso dato che i file finiscono nella cartella Upload vorrei che quando loro cliccano nella pagina principale "Files Caricati" e accedendo alla cartella in questione "Upload" vorrei che potessero oltre che vedere quali files siano stati caricati, la possibilità di poter cancellare i files caricati per sbaglio.

    P.S. Si ho letto molto sul web e quasi tutti parlano di unlink ma proprio non so da dove cominciare. Magari devo creare una pagina in html nella cartella "Upload" con riferimento al codice unlink php? Se anche fosse questo la soluzione, come faccio a scrivere codice html dove gli utenti possano trovare files nella cartella? Sono un pò confuso su questa cosa, magari mi schiarirai le idee.

    Grazie
    Ultima modifica di tvtvtv : 30-09-2019 alle ore 15.53.34

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

    Predefinito

    Citazione Originalmente inviato da tvtvtv Visualizza messaggio
    Magari devo creare una pagina in html nella cartella "Upload" con riferimento al codice unlink php?
    Potrebbe essere un'idea, lo si può implementare in tantissimi modi.

    Citazione Originalmente inviato da tvtvtv Visualizza messaggio
    Se anche fosse questo la soluzione, come faccio a scrivere codice html dove gli utenti possano trovare files nella cartella?
    Puoi elencare tutti i file e cartelle ad esempio con la glob() o con readdir().

    Ciao!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Potrebbe essere un'idea, lo si può implementare in tantissimi modi.
    Mi potresti listare codice di esempio dove possibilmente fare delle prove?


    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Puoi elencare tutti i file e cartelle ad esempio con la glob() o con readdir().
    Come scrivo nella pagina html della cartella queste stringhe? Mi scriveresti come fare?

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

    Predefinito

    Gli esempi sono nelle relative documentazioni.

    In breve una soluzione è elencare tutti i file prelevati con la glob() (questo esempio è proprio sulla documentazione), quindi dovrai aggiungere un link <a href="tuapagina.php?delete=<?php echo $file_dalla_glob; ?>">

    Quindi poi tuapagina.php controlla se eiiste $_GET['delete'], quindi unlink($_GET['delete']);.

    Ovviamente uno script in questo modo senza opportuni controlli fornisce strumenti a malintenzionati ad eliminarti l'intero sito: dovrai fare gli opportuni controlli su $_GET['delete'], quindi decidere se l'utente può o meno eliminare quel file.

    Quello indicato su è la versione base massima, potresti migliorarla ad esempio passando i valori tramite POST, si può migliorare/modificare come vuoi, fino ad arrivare alle chiamate asincrone da Javascript.

    Sul forum troverai molti script di questo tipo, ad esempio questo.

    Ciao!
    Ultima modifica di alemoppo : 30-09-2019 alle ore 16.53.04

  7. #7
    Guest

    Predefinito

    Purtroppo sei stato chiaro sicuramente, ma proprio non so che fare. Mi parli di glob ecc ecc ma non so cosa fare.

  8. #8
    Guest

    Predefinito

    Ho trovato questo script che seppur spartano mi ha risolto il problema della cancellazione files.

    Ecco il codice
    Codice:
    <?php
    // Definisco il path della cartella
    $path = ".";
    // Apro la cartella
    $dir_handle = @opendir($path) or die("Non è possibile aprire $path");
    // Lettura e ciclo dei files
    
    if (isset($_POST['photoname'])){
        $photoname = $path."/".$_POST['photoname'];
        if (!unlink($photoname)){
            echo ("Errore $photoname");
        }
        else{
            echo ("Cancellata $photoname");
        }
        header("Refresh:1");
    }
    
    while ($file = readdir($dir_handle)) {
        if($file == "." ||
        $file == ".."||
        $file == "index.php"||
        $file == ".ftpquota"||
        $file == ".DS_Store"||
        $file == "")
        continue;
        ?>
        <form method="post">
        <?php echo $file; ?>
        <input type="hidden" name="photoname" value="<?php echo $file; ?>">
        <input type="submit" name="submit" value="Cancella">
        </form>
        <?php
        echo "";
    }
    // Chiudo la cartella
    closedir($dir_handle);
    echo "<input type=\"button\" onclick=\"location.href='/Causa/'\" value=\"Pagina Principale\"/>"
    ?>
    Adesso se vorrei scaricare i files anzichè cancellarli, avendo sempre il bottone creato con input type ma con valore Download?

  9. #9
    Guest

    Predefinito

    Nessuno che riesce ad aiutarmi?

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

    Predefinito

    Teoricamente è sufficiente un semplice link al file. Se vuoi forzare il download, trovi molti topic anche in questo forum.

    Il problema però è che dovresti risolvere il problema dalla radice: se cerchi script già fatti in giro, avrai sempre qualcosa da chiedere e non riuscirai a fare nulla da solo.
    Io ti consiglierei di leggerti tutorial online e poi capire gli script che hai postato qui, quindi cercare di farne da solo. Solo così diventerai autonomo e potrai fare praticamente ciò che vorrai.

    Ciao!

Regole di scrittura

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