Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Download file protetti

  1. #1

    Download file protetti

    Ciao a tutti,spiego velocemente.

    devo far scaricare dei file agli utenti del mio sito e la soluzione l'ho trovata in altri post. Però come già trattato c'è la necessita di proteggere la directory da qualche malcapitato che si copia il percorso. Non ho potuto utilizzare .htaccess per problemi che non so spiegarmi e non mi hanno spiegato nemmeno i sistemisti del mio hoster (vedere post "file htaccess").

    Ad ogni modo la directory >> /download/ << è stata protetta lato server (non chiedetemi, hanno fatto tutto i tecnici del mio host perchè i file htaccess non funzionavano - sistema Microsoft-IIS/5)

    Comunque ora se accedo direttamente via web inserendo l'intero percorso www.miosito.ext/cartella1/download/ciccio.doc l'allert di windows mi richiede user e pass (create dall'host)

    Io avevo creato questo script per poter far scaricare i file contenuti nella cartella download dai miei utenti. Alla richiesta del documento li mando a download.php che prima controlla se è loggato e poi lo reinderizza nella directory del file.

    Codice PHP:
    <?php
    include_once("../include/config.php");
    include_once(
    "../include/auth.lib.php");

    list(
    $status$user) = auth_get_status();

    switch(
    $status){
        case 
    AUTH_LOGGED:
        
    $file $_GET['file'];
        
    header("Refresh: 1;URL=./download/$file");
        break;

    case 
    AUTH_NOT_LOGGED:
    echo 
    'You must be logged in to do that';
    header("Refresh: 3;URL=../memberslogin.php");
    break;
          
    }
    ?>
    Il problema è che l'utente non riesce a scaricarlo poichè l'accesso a quella directory richiede l'inserimento della pass, in teoria dovrei far passare user e pass mediante download.php ma come faccio?

    Spero sia chiaro (so è una cosa un pò contorta da spiegare) altrimento delucido meglio i punti oscuri. Grazie

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    usa readfile.

    Readfile legge il contenuto di un file e lo manda in output.

    Se dai l'header adeguato verra richiesto il download del file, senza la richiesta di nessuna password, perchè il readfile va a leggere direttamente un percorso sul filesystem senza passare dal web server (al cui livello è stata messa la restrizione).

    Con il codice che avevo postato qui:

    http://forum.html.it/forum/showthrea...light=readfile

    dovresti avere abbastanza informazioni a riguardo, altrimenti cerca "readfile" e troverai un sacco di discussioni a riguardo.


  3. #3
    Sto provando ad implementare il tutto al caso mio.

    Ma cosa vuol dire se dai l'header adeguato?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    sono i comandi header() nel post che ti ho linkato.

    In pratica istruisci il browser su come comportarsi con il testo che stai dando in output. (in questo caso gli dici che quello che stai stampando a video è un flusso di dati che forma un file che vuoi sia scaricato anzichè visualizzato sullo schermo).

    ciao

  5. #5
    La funzione l'ho capita, ma non capisco come far passare il percorso dove si trova il file!!

    Codice PHP:
    <?php
    include_once("../include/config.php");
    include_once(
    "../include/auth.lib.php");

    list(
    $status$user) = auth_get_status();

        function 
    readfileheader($file) {
        
        if(
    $file) {
        
          
    header("Expires: Mon, 12 Jul 1976 06:20:00 GMT");
          
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");

          
    header("Cache-Control: no-store, no-cache, must-revalidate");
          
    header("Cache-Control: post-check=0, pre-check=0"false);

          
    header("Pragma: no-cache");
        
          
    header('Content-type: application/octet-stream');
          
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
          
    readfile($file);
          
        } 
        
      }

    switch(
    $status){
        case 
    AUTH_LOGGED:
            
    readfileheader($_GET['file']);
    break;

    case 
    AUTH_NOT_LOGGED:
    echo 
    'You must be logged in to do that';
    header("Refresh: 3;URL=../memberslogin.php");
    break;
          
    }
    ?>

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    la richiami con :

    readfileheader('/percorso/completo/sul/filesystem/al/file.pdf');

  7. #7
    Tu sei preciso, ma son io che son un ignorante!

    Quindi quando richiami la funzione readfileheader gli passi l'intero percorso!

    Ma cosa vuol dire l'intero percorso sul fyle sistem??

    Avendo un webserver credo che devo chiederlo al mio hoster!

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    mi rifaccio al tuo post precedente:

    http://forum.html.it/forum/showthrea...4#post11610404

    Credo che il percorso sara qualcosa tipo quello che avevi postato tu:

    /workdisk/home/web/www.nomedominio.ext/htdocs/nomedirdaproteggere/file_nella_dirprotetta.ext

    (comunque puoi passargli anche un percorso relativo, io in genere uso gli assoluti per evitare problemi nel caso dovessi spostare il file di download).

    ciao

  9. #9
    Le cose iniziano a funzionare!

    Riesco ad accedere al file. Questo è un pdf solo che al momento di aprirlo Adobe mi lancia un messaggio di errore "File danneggiato, forse non è stato decodificato correttamente"

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ricorda che la funzione che ti ho dato devi lanciarla in una pagina che non ha dato nessun output in precedenza.


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 © 2024 vBulletin Solutions, Inc. All rights reserved.