Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Download file

  1. #1

    Download file

    ciao a tutti
    sto ultimando un sistema di vendita di mp3 on-line, ho gia completato tutta la parte di caricamento del file e della gestione, ma adesso il mio problema è il seguente:
    una volta che io scarico una canzone, sull'url si vede dove si trovano i file, come posso fare che il file venga scaricato una sola volta e che poi non si possa piu scaricarlo ?
    Kalton
    -------------------
    www.kalton.it - www.kalton.cavarzere.it

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    La cosa migliore (avendo accesso al server web) sarebbe quella di far "uploadare" i file al di fuori della document_root in modo da non potere accedervi direttamente tramite browser.

    Se non è il tuo caso metti un file .htaccess che protegga l'accesso ai file.

    A questo punto (allo stesso modo per tutte e 2 le alternative), quando vuoi dare in lettura il file all'utente usi una procedura php, che richiama la funzione readfile, e da in output l'mp3.

    Facendo in questo modo puoi mettere all'interno del tuo file php tutti i controlli che vuoi, richiedere ad esempio una variabile che contenga un codice di downlaod che può valere 1 o N volte ecc ecc.

    Qui sotto ti posto il codice generico che uso per dare in output un file:

    codice:
      function readfileheader($nomefile) {
        
        if($nomefile) {
        
          header("Expires: Mon, 12 Jul 1976 06:20:00 GMT");
          header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    
          header("Cache-Control: no-store, no-cache, must-revalidate");
          header("Cache-Control: post-check=0, pre-check=0", false);
    
          header("Pragma: no-cache");
        
          header('Content-type: application/octet-stream');
          header('Content-Disposition: attachment; filename="'.basename($nomefile).'"');
          readfile($nomefile);
          
        } 
        
      }
    La riga in grossetto puoi migliorarla mettendo il mimetype dell'mp3.

    ciao

  3. #3
    Per farlo scaricare una volta semplicemente tieni traccia sul db dell'utente e di quello che ha scaricato.

    Per criptare i file in modo che l'utente loggato vedendo il percorso non possa riscrivendolo sull' url riscaricarlo, fai in questo modo:

    Inserisci i tuoi mp3 in una o più sottocartelle con un nome criptato tipo in hash quindi molto lungo quando l'utente in sessione clicca su download tu lo porti ad una pagina.php dove esegui il download forzato del file.

    A pagina.php passi dolo l'id dell'mp3 e dentro la pagina tramite gli header di forzatura download passi invece il percorso completo dove risiedono i file. Aggiungi anche una condizione per vedere se esiste la sessionid o qualche parametro di sessione.

    In questo modo nessun utente può mai vedere l'url di download e quindi poterlo scaricare senza prima pagare o eventualmente loggarsi.

  4. #4
    per criptare il file o la cartella, che dovrei fare ?
    Kalton
    -------------------
    www.kalton.it - www.kalton.cavarzere.it

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da asdas
    per criptare il file o la cartella, che dovrei fare ?
    Quello che proponeva silverwings era di criptare il nome del file o della cartella, che va bene perchè è una sicurezza in più, ma se uno dovesse riuscire a scoprire il percorso sarebbe tanto uguale.

    Se cripti il file invece poi devi dare all'utente uno strumento per decriptarlo... forse la soluzione più semplice potrebbe essere quella di creare uno zip con password (comunque se l'utente passa lo zip con la password sei di nuovo allo stesso punto).

    Ciao

  6. #6
    beh.. ma sei io cripto almeno il nome della cartella ?
    Kalton
    -------------------
    www.kalton.it - www.kalton.cavarzere.it

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    con il metodo spiegato sopra l'utente non può vedere il percorso dove si trovano i file, se vuoi ottenere un nome "critpato" che poi non è veramente criptato, ma semplicemente di difficile memorizzazione usa pure la funzione md5 su un valore casuale o su un nome:

    codice:
    echo md5('prova');
    ciao

  8. #8
    Si ma la vedo dura riuscire a scoprire un percorso ben criptato, dal mio punto di vista il file piò rimanere in chiaro, fino a quando il percorso del file dentro il server rimane segreto solo all'admin non ci sono problemi. E' chiaro che vanno fatti i controlli sulla sessione oppure come diceva gianiz dei codici di download.

  9. #9
    ciao
    io adesso ho fatto l'upload su una cartella ad di fuori della document root.... ma mi da problemi nello scaricamento, mi da che ovviamente il percorso non esiste.
    devo mettere qualcosa di particolare ?
    Kalton
    -------------------
    www.kalton.it - www.kalton.cavarzere.it

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    la lettura del file la fai attraverso readfile, al quale passi un percorso assoluto sul server.

    ciao

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.