Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema download dei file

    Salve,
    ragazzi ho un rompicapo assurdo.
    Devo crare un sistema per il download dei file tramite autenticazione.
    Il problema che ho è che un utente una volta conosciuto il percorso del file da scaricare può prelevarlo senza autenticarsi.
    Qualcuno può spiegarmi come risolvere il problema?
    Vincenzo Miele

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    guarda non è una cosa che si scrive in pochi secondi, devi avere a disposizione un database mysql per immagazinare utenti e il contenuto dei file..

  3. #3
    ovviamente, ma vi ringrazio ma sono riuscito a risolvere il problema.
    ho utilizzato una funzione che mi peermette di far scaricare i file senza che il percorso sia visibile.
    Inoltre mi consente di utilizzare path assoluti esterni alla web root.
    Se a qualcuno interessa:

    <?php
    /*

    La funzione prende in input
    il percorso (percorso anceh assoluto) di un file e provvede a scaricarlo.

    */
    function scaricaFile($file){

    //First, see if the file exists
    if (!is_file($file)) { die("404 File not found!"); }

    //Gather relevent info about file
    $len = filesize($file);
    $filename = basename($file);
    $file_extension = strtolower(substr(strrchr($filename,"."),1));

    //This will set the Content-Type to the appropriate setting for the file
    switch( $file_extension ) {
    case "pdf": $ctype="application/pdf"; break;
    case "exe": $ctype="application/octet-stream"; break;
    case "zip": $ctype="application/zip"; break;
    case "doc": $ctype="application/msword"; break;
    case "xls": $ctype="application/vnd.ms-excel"; break;
    case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
    case "gif": $ctype="image/gif"; break;
    case "png": $ctype="image/png"; break;
    case "jpeg":
    case "jpg": $ctype="image/jpg"; break;
    case "mp3": $ctype="audio/mpeg"; break;
    case "wav": $ctype="audio/x-wav"; break;
    case "mpeg":
    case "mpg":
    case "mpe": $ctype="video/mpeg"; break;
    case "mov": $ctype="video/quicktime"; break;
    case "avi": $ctype="video/x-msvideo"; break;

    //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
    case "php":
    case "htm":
    case "html":
    case "txt": die("Cannot be used for ". $file_extension ." files!"); break;

    default: $ctype="application/force-download";
    }

    //Begin writing headers
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");

    //Use the switch-generated Content-Type
    header("Content-Type: $ctype");

    //Force the download
    $header="Content-Disposition: attachment; filename=".$filename.";";
    header($header );
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".$len);
    @readfile($file);
    exit;
    }
    ?>
    Vincenzo Miele

  4. #4
    Ottimo script vinmie, lo proverò al più presto
    Stefano Viscione,
    miosito.ilbello.com
    www.lucemsoft.it/

  5. #5
    Originariamente inviato da spedizione123
    Ottimo script vinmie, lo proverò al più presto
    Grazie, ma non è stato completamente scritto da me.
    Diciamo che i meriti non sono tutti i miei.
    Vincenzo Miele

  6. #6
    Risolvere i problemi significa anche saper trovare quello che serve, capito vinmie?
    Stefano Viscione,
    miosito.ilbello.com
    www.lucemsoft.it/

  7. #7
    ovvio, alcune volte la ricerca è importante. Ma non tutti sanno cercare.
    :-)
    Vincenzo Miele

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.