Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478

    [apache] .htaccess e gestione download

    Dovrei realizzare un semplice sistema per gestire il download di alcuni file (.pdf e .doc) contenuti in una directory opportunamente protetta da un file .htaccess.

    Avendo la necessità d'impedire il download diretto con richieste esterne, ho creato il file .htaccess in questo modo:
    codice:
    <Files ~ "\.(pdf|doc)$">
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>
    Non posso usare un database per memorizzare i dati (url, size, type, etc.) relativi ai file da scaricare, sfruttando il sistema ottimamente proposto da daniele_dll in questa pillola.

    Quindi dovrei gestire il tutto attraverso un codice creato ad hoc per inviare gli header giusti per consentire il download dei file protetti. Ma non riesco a capire come fare

    Mi date una mano per iniziare? grazie

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Basta che metti un controllo per vedere se l'utente è loggato e ha diritto di vedere il pdf prima di mettere questo codice:

    Codice PHP:
    <?php
    // We'll be outputting a PDF
    header('Content-type: application/pdf');

    // It will be called downloaded.pdf
    header('Content-Disposition: attachment; filename="downloaded.pdf"');

    // The PDF source is in original.pdf
    readfile('original.pdf');
    ?>

  3. #3
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Si avevo già fatto dei tentativi in questo senso, ma non sono riuscito ancora a capire come fare per permettere di scegliere il file da scaricare.

    Allora, cerco di riepilogare il tutto molto brevemente:

    - c'è una directory: 'download'
    - all'interno ci sono diversi file .pdf e .doc (incluso ovviamente i file .php)
    - per potreggere i file da download provenienti da richieste esterne uso il file .htaccess (configurato come sopra)
    - c'è un file download.php che legge il contenuto della directory e stampa a video i file disponibili per il download

    Ora, qui ho difficoltà, dovrei solo realizzare un modo per poter 'selezionare' di volta in volta il file da scaricare. Se provo a cliccare sul link che richiama il file .pdf che scelgo di voler scaricare, sulla base di quanto impostato nel file .htaccess, ovviamente non mi permette di scaricarlo mostrandomi una pagina d'errore 403. Dovrei inviare le informazioni sul file direttamente agli header in un'altra pagina? Come potrei fare?

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    ...credo di aver trovato una soluzione (almeno spero )

    Allora, molto semplicemente:

    - il file .htaccess l'ho lasciato così com'era, funziona bene.

    - ho creato un sistema di login (semplice semplice) che mi permette di controllare se si è loggati oppure no, grazie alle sessioni. Il tutto si sviluppa su 2 file: uno per consentire il login e mostrare i file disponibili per il download (con un link tipo download.php?getdl=nomefile.pdf) e un'altro per consentire il download vero è proprio.

    - nella pagina che gestisce i download ho il codice seguente:
    Codice PHP:
    [FONT=courier new]<?php
    session_start
    ();

    if(
    $_SESSION['login'] == 'DLin') {

    $file basename($_GET['getdl']);

    if(isset(
    $_GET['getdl']) && file_exists($file)) {
      
    header('Content-type: application/pdf');
      
    header('Content-length: '.filesize($file));
      
    header('Content-disposition: attachment;
              filename='
    .basename($file));
      
    readfile($file);
    } else {
      
    // msg errore (file non trovato)
      
    }
    } else {
      
    // msg errore (sessione non riconosciuta)
    }
    ?>[/FONT]
    L'ho provato e sembra funzionare bene, ma mi piacerebbe avere una vostra opinione, qualche consiglio su come poterlo eventualemnte ottimizzare...


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.