• User Newbie

    Ebook autorizzazione allo scarico

    Caro Giorgio, per prima cosa ti ringrazio per il simpatico e caloroso
    benvenuto, poi ti spiego brevemente come mi sono imbattuto nel tuo
    sito.
    Dovendo supportare un' amica che vorrebbe creare un sito per
    commercializzare un suo libro e magari estendere la
    commercializzazione ad altre pubblicazioni,
    (eBook per capirci) mi sono imbattuto nel
    problema delle chiavi da inviare via mail per autorizzare lo
    scaricamento del file e, cerca che ti ricerca ho trovato, seguendo il
    profumino di soluzione, voi.
    Ora, penso che il problema possa essere di
    comune interesse e se lo ritieni, lo si potrebbe mettere in
    discussione
    in modo che più teste potrebbero approdare alla soluzione piu'
    consona.
    Ti prego per questo di suggerirmi come fare per impostare
    l'argomento ( non ci crederai ma non mi sono mai inserito in blog o
    simili).
    In attesa di tue nuove ti anticipo i miei ringraziamemnti
    complimentandomi ancora una volta per il tuo utilissimo sito, Carlo


  • Consiglio Direttivo

    Ciao CarloGiuseppe e benvenuto nel Forum GT. 🙂

    La prima cosa da fare è ovviamente impedire di scaricare direttamente il file conoscendo il percorso.

    Nella cartella del download, oltre ad inserire un file index.html vuoto, ti basterà inserire un file .htaccess con queste poche righe:

    <Files ~ ".+">
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>
    

    In questo modo non si potrà scaricare direttamente il file. 😉

    Per quanto riguarda l'autorizzazione allo scarico potresti creare una chiave che sia una combinazione tra un parola chiave di tua scelta ed il timestamp della richiesta, combinate ed hashate con sha1. La chiave viene salvata su un campo del Db ed inviata via mail all'utente (vvv.sito.ext/download.php?key=1234567890123456 per esempio)

    Per autorizzare il download verificherai che la key è valida, quindi contenuta nel Db, e non utilizzata e procederai all'invio al browser del file per la scarimento, aggiornando la tabella per dire che la key è stata utilizzata.

    Per inviare al browser il file potresti utilizzare qualcosa del genere:
    [php]<?php

    $file = 'ebook/ebook.pdf';

    if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));

    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
    

    }
    ?> [/php];)