Visualizzazione risultati 1 fino 7 di 7

Discussione: Aiuto con .htaccess e blocco di una directory

  1. #1
    Data registrazione
    16-09-2019
    Messaggi
    4

    Predefinito Aiuto con .htaccess e blocco di una directory

    Ciao ragazzi ho un grosso problema che non riesco a risolvere.
    Praticamente necessito di bloccare l'accesso via URL ad una cartella in cui sono contenuti dei file PDF, che devono però essere scaricati attraverso un'apposita pagina dotata di tasto download.
    Se metto deny from all ovviamente il download fallisce con errore forbidden, ma non ho proprio idea di come fare altrimenti!
    Qualunque aiuto mi farebbe tanto comodo, vi ringrazio!

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,436

    Predefinito

    Nega l'accesso come hai già fatto, quindi usa uno script PHP per leggere il file PDF e mostrarlo quando viene premuto il tasto "download". Usando il content-type opportuno puoi anche forzare il download anziché la visualizzazione, qualora ti interessi.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  3. #3
    Data registrazione
    16-09-2019
    Messaggi
    4

    Predefinito

    Purtroppo non saprei come fare... Potresti mica darmi qualche dritta?
    mzanella

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,436

    Predefinito

    Ipotizziamo che i tasto download effettui una richiesta GET verso la pagina download.php passando un parametro pdf_filepath che contenga il percorso locale del file PDF in questione.

    La pagina download.php deve quindi leggere il file PDF, impostare lo header Content-Type in modo che il contenuto venga interpretato come PDF, e mostrare il contenuto del file. A questo puoi aggiungere tutte le modifiche e i controlli di sicurezza che ritieni opportuni. Il risultato diventa qualcosa di simile a:
    Codice PHP:
    <?php
    if (!isset($_GET['pdf_filepath')) {
        die(
    "Missing PDF file path.");
    }
    $file_path $_GET['pdf_filepath'];

    if (!
    file_exists($file_path)) {
        die(
    "PDF file not found.");
    }


    header("Content-type:application/pdf");
    readfile($file_path);
    ?>
    Occhio a eventuali errori di battitura.

    Una nota: se non aggiungi nessun controllo di sicurezza (es. solo gli utenti che hanno effettuato il login possono scaricare i file), l'intero meccanismo diventa inutile.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  5. #5
    Data registrazione
    16-09-2019
    Messaggi
    4

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Ipotizziamo che i tasto download effettui una richiesta GET verso la pagina download.php passando un parametro pdf_filepath che contenga il percorso locale del file PDF in questione.

    La pagina download.php deve quindi leggere il file PDF, impostare lo header Content-Type in modo che il contenuto venga interpretato come PDF, e mostrare il contenuto del file. A questo puoi aggiungere tutte le modifiche e i controlli di sicurezza che ritieni opportuni. Il risultato diventa qualcosa di simile a:
    Codice PHP:
    <?php
    if (!isset($_GET['pdf_filepath')) {
        die(
    "Missing PDF file path.");
    }
    $file_path $_GET['pdf_filepath'];

    if (!
    file_exists($file_path)) {
        die(
    "PDF file not found.");
    }


    header("Content-type:application/pdf");
    readfile($file_path);
    ?>
    Occhio a eventuali errori di battitura.

    Una nota: se non aggiungi nessun controllo di sicurezza (es. solo gli utenti che hanno effettuato il login possono scaricare i file), l'intero meccanismo diventa inutile.
    Ho provato il tuo codice: dopo ore di tentativi falliti ha funzionato ed ho quasi pianto... GRAZIE!
    Ora ho solo più un dubbio. I file che possono essere caricati sono anche jpeg, jpg, png. Se metto però come content type png e provo a scaricare un file png, mi scarica la pagina download.php. Come posso risolvere?

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,436

    Predefinito

    "dowwnload.php" è il nome di default che viene assegnato al file. Puoi modificarlo impostando lo header Content-Disposition: attachment; filename="nome-del-file.jpg".

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  7. #7
    Data registrazione
    16-09-2019
    Messaggi
    4

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    "dowwnload.php" è il nome di default che viene assegnato al file. Puoi modificarlo impostando lo header Content-Disposition: attachment; filename="nome-del-file.jpg".
    Perfetto, ti ringrazio molto per il tuo aiuto, è stato fondamentale!

Tags for this Thread

Regole di scrittura

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