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

    [PHP] Problema Protezione file

    Ciao a tutti,

    ho una piccola domanda, come faccio a proteggere i link diretti sul mio server?

    per esempio se uno fa http://www.test.com/file/file.zip riesce a scaricarlo

    io una pagina internet protetta da user e pass e solo gli utenti registrati possono scaricare, come posso fare??

    ho trovato questo:

    Codice PHP:
    Se deteniamo il controllo completo del server su cui gira la nostra applicazione (quindi non si è in hosting), è possibile salvare i file dati in una cartella superiore alla root del Web server (root che come noto è solitamente chiamata htdocs o wwwroot), dato che al browser è intrinsecamente impedito l'accesso a cartelle ad essa superiori.

    A questo punto: per permettere all'
    utente di scaricare un fileanziché un semplice link HTML allo stessodovrà essere richiamato uno script PHP che provveda ad inviare il file al client in HTTPAd esempio:

    [
    url="scarica_file.php?id_file=..."]Scarica il file[/url]
    oper gli amanti del JavaScript:

    [
    url="#."]Scarica il file[/url]
    Il codice per lo scaricamento del file dati è il seguente (valido per il download di uno ZIPcompatibile sia con Mozilla Firefox che con MS Internet Explorer):

    header("Content-Type: application; name=".$nome_file);
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".$dimensione_file);
    header("Content-Disposition: inline; filename=".$nome_file);
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Cache-Control: private");
    header("Pragma: public");
     
    readfile($percorso_assoluto.$nome_file); 
    io ho creato una pagina index.php con la lista dei file :

    Codice PHP:
    <?php 
    $host 
    "localhost";
    $user "xxx";
    $pass "xxx";
    $dbase "tslpsy";

    $conn mysql_connect($host$user$pass) or die (mysql_error());
    mysql_select_db($dbase$conn) or die (mysql_error());

    $sql "SELECT * FROM tb_store";
    $query mysql_query($sql) or die (mysql_error());

    while(
    $result mysql_fetch_assoc($query)) {
    $nome_file $result['st_file'];
    $id $result['st_id'];
    echo 
    "[url='scarica_file.php?id_file=$id']$nome_file[/url]
    "
    ;
    }
    ?>
    e una pagina scarica_file php :

    Codice PHP:
    <?php 

    header
    ("Content-Type: application; name=".$nome_file);
    header("Content-Transfer-Encoding: binary");
    //header("Content-Length: ".$dimensione_file);
    header("Content-Disposition: inline; filename=".$nome_file);
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Cache-Control: private");
    header("Pragma: public");
    $percorso_assoluto "/cartella/file/";
    readfile($percorso_assoluto.$nome_file);
    ?>

    Ma non mi quadra come funziona????
    PHP THE BEST

  2. #2
    uppete
    PHP THE BEST

  3. #3
    Nessuno sa dirmi come devo procedere per far si che vadi? Non ho capico come devo fare!

    Devo creare una pagina dove faccio la lista dei file e poi do il link scarica_file.php?id_file=1, ma non mi funziona come dovrebbe!!

    PHP THE BEST

  4. #4
    up
    PHP THE BEST

  5. #5
    nessuno che abbiua qualche idea o consiglio? Chiedo l'ipossibile?
    PHP THE BEST

  6. #6
    up
    PHP THE BEST

  7. #7
    Nessuno mi sa dare una mano per evitare che si possa scaricare direttamente un file?

    Per esmpio se uno fa http://www.tet.com/file/file.zip chiaramente riesce a scaricare, ho provato a settare da apache di non fare scaicare e funziona, però nel mio caso anche se l'utente si logga nel sito e cerca di scaricare non può.

    Come posso fare??
    PHP THE BEST

  8. #8
    Al volo mi viene in mente questo:

    Metti i file in una cartella con un nome lungo (molto) e strano, insomma che funga da password.
    Ovviamente deve essere settato apache che non sia possibile leggerlo... e comunque mettendo un index.html vuoto nella cartella superiore (se non ce n'è già uno pieno) dovresti risolvere...
    Quindi metti i link per lo scarico in una pagina accessibile solo dagli utenti... poi potresti far copiare il file in una cartella temp (per il download) con il file che si cancella dopo un tot... in questo modo neanche gli utenti possono conoscere la cartella segreta... se ne banni uno non potendo entrare alla pagina dei link non può accedere più ai file (che non ha già scaricato ovviamente)

    Faresti prima ad inserire i file in db... ma se non puoi (o non vuoi appesantirlo, o se sono file enormi) dovrebbe funzionare



    Magari ho scritto stupidaggini... non ho verificato, fai delle prove

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.