Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    force download, come integrarlo in pagina html

    Ciao a tutti intanto...

    premettiamo che sono neofita, autodidatta HTML, quindi di PHP ci capisco poco e niente...
    sul mio sito ci sono delle locandine pubblicitarie in formato PDF, che, tramite codici html che dopo riporto, vengono aperte correttamente dal browser

    <p class="hotel" align="center">CROCIERA: RELITTI E REEF
    nel cercare di capire come, attraverso magheggi strani, potessi "forzare il download" di questo file PDF senza aprirlo nel frame della pagina (causando evidenti problemi di controllo...del tipo difficoltà di tornare alla pagina precedente etc.) sono incappato nell'omonimo codice PHP di Andrea...

    il mio problema è...come "integrare" il codice di andrea nella mia situazione ???

    sinceramente, non ho capito se devo:
    A) creare un file PHP con il codice del ForceDownload e richiamarlo dall'html
    B) inserire il codice del ForceDownload direttamente nell'html

    nel caso A, non so come richiamarlo....nel caso B, non so come inserirlo ^^

    scusate la mia niubbaggine....

  2. #2
    Crea uno script PHP con il codice dell'esempio #1 del manuale ufficiale (http://www.php.net/header) e nel codice HTML inserisci semplicemente un link che punta al questo nuovo script.

  3. #3
    Lo farei nella stessa pagina.
    Attento che la pagina dovrà avere estensione php. Poniamo che si chiami pagina.php
    Dovrai modificare i link come segue:

    <p class="hotel" align="center">CROCIERA: RELITTI E REEF

    In questo modo passi tramite GET il nome del file che vuoi scaricare.

    E poi, all'inizio del file, inserisci la funzione con un'aggiunta:

    Codice PHP:
    <?php
    function forceDownload($file) {
        
    /**
         * Function forceDownload:
         *    download any type of file if it exists and is readable
         * -------------------------------------
         * @author        Andrea Giammarchi
         * @date        18/01/2005 [17/05/2006]
         * @compatibility    PHP >= 4.3.0
         */
        
    if(file_exists($file) && is_readable($file)) {
            
    $filename basename($file);
            if(
    strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), 'MSIE') !== false && strpos($filename'.') !== false) {
                
    $parsename explode('.'$filename);
                
    $last count($parsename) - 1;
                
    $filename implode('%2E'array_slice($parsename0$last));
                
    $filename .= '.'.$parsename[$last];
            }
            
    header('Content-Type: application/octet-stream');
            
    header('Content-Disposition: attachment; filename="'.$filename.'"');
            
    header('Content-Length:'.filesize($file));
            
    header('Content-Transfer-Encoding: binary');
            if(@
    $file fopen($file"rb")) {
                while(!
    feof($file))
                    echo 
    fread($file8192);
                
    fclose($file);
            }
            exit(
    0);
        }
    }

    if (isset(
    $_GET['file']))
    {
        
    forceDownload($_GET['file']);
    }

    ?>

    Nell'ultima parte verifico se la variabile è settata. Se è settata invoco la funzione passando come valore il nome del file.

  4. #4
    Il codice suggerito da mtx_maurizio introduce una voragine nella sicurezza del sito. Lo scirpt DEVE verificare che sia permesso scricare il file richiesto per il download, altrimenti l'utente può scaricare qualsiasi file dal sito manipolando la query string.

  5. #5
    vero.

    Si può fare un array dei file scaricabili, o prevedere una directory di download, e lo script può puntare solo su quella.

    tk filippo. ogni tanto la si butta giù troppo veloce

  6. #6
    ok ringrazio tutti per l'intervento...

    x quanto riguarda l'ipotetica falla di sicurezza non è un problema, in quanto il sito non è altro che un catalogo online di hotel/viaggi etc. dedicate alle agenzie di viaggio....chiunque scarichi del contenuto, non ci crea del danno...anzi, ci pubblicizza ^^

  7. #7
    chiunque scarichi del contenuto, non ci crea del danno...anzi, ci pubblicizza
    Nemmeno se scarica il file contenente i dati di accesso al database, si faccia un dump di tutti i dati personali ivi contenuti, e poi lo svuoti completamente?

    Se vuoi sviluppare delle applicazioni web, ti suggerisco vivamente di iniziare a studiare le basi della sicurezza informatica.

  8. #8
    Se sei sicuro che non esite un file in tutto il sito che necessiti protezione alloa va bene.
    Per intendreci, se il sito è tutto html in effetti non cambia niente. però controlla.

    credo che non abbia il database

  9. #9
    @filippo_toso: non c'è un database...è solo un insieme di pagine HTML o PDF informative, niente di più

    @mtx_maurizio: ho provato la tua modifica (quella interna alla pagina) ... anzichè scaricare il file, mi apre una pagina orrenda piena di caratteri senza senso ...

    provo con la pagina esterna

  10. #10
    Però, se vuoi una soluzione al volo per questo problema, modifica l'ultima parte così:

    Codice PHP:
    $scaricabili = array ("pag1.pdf""pag2.pdf""pag3.pdf""eccetera");

    if (isset(
    $_GET['file']) AND in_array($_GET['file'], $scaricabili))
    {
        
    forceDownload($_GET['file']);

    Nell'array $scaricabili metti i nomi dei file scaricabili

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.