Newsgroup: it.comp.www.php
Titolo: come consentire il download di un file solo a chi è loggato?

Salve,
sto cercando di sviluppare un are riservata per il mio sito
mi trovo però di fronte ad un problema
vorrei far scaricare dei file pdf solo agli utenti loggati
non vorrei lasciare i file accessibili conoscendo il path giusto pe
rraggiungerli
ma se li metto uno in una dir private non so come permettere il
download
Vi ringrazio per l'aiuto.



gabriele76 ha scritto:

filesize
header(*)
file_get_contents
echo
incomincia con header


ciao grazie per avermi risposto
però nonho capito moto bene
provo:
in preatica
//ho un file ad es. pippo.ppt o pdf o .zip
$filename= "pippo.ppt";
$path = // pathsulserver? e come lo ricavo?
$filepath = $path & $filename;
//ottengo il binario del file
file_get_contents($filepath);
//cosa ne faccio adesso del return della funzione file_get_contents?
n.b.
il file pippo.ppt si trova in una directory private (oppure protetta
usando .htaccess)
quello che vorrei ottenere è:
1. login nell'area riservata con controllo tramite sessione
2. pagina nell'area irsevat con lnk al file pippo.ppt
3. il file pippo.ppt NON deve essere scaricabile conoscendo la url
grazie mille

 wrote:

ciao grazie per avermi risposto


 deve essere scaricabile conoscendo la url
Non puoi usare la sessione o i metodi standard con GET e POST per 
accedere a una directory protetta con htaccess.
Deve essere il client a passare al server, ad ogni richiesta, username 
e password negli header.
Lato server htaccess viene ignorato, perche` non passi per Apache per 
accedere alla cartella, ma attraverso il normale filesystem, quindi tu 
da PHP basta che va a leggere il file in quella cartella (e se l'hai 
protetta con htaccess, sai dov'e`) e lo mandi al client con fpassthru, 
per esempio, dopo aver impostato l'header e il MIME type corretto con 
header().
Ne abbiamo parlato diverse volte negli ultimi 2-3 mesi. Cerca negli 
archivi del ng su google gruppi.
Bye.


allora
grazie alle vostre indicazioni ho fatto un bel passo avanti
vi illustro così mi dite se è giusto:
$path = "/web/htdocs/
www.miosito.org/home/area1/abstract.pdf
";
//N.B. area1 è una directory con password tramite .htaccess
// apre il file in modalità binaria
$fp = fopen($path, 'rb');
header("Content-Type: application/pdf");
header("Content-Length: " . filesize($path));
// invia ed esce dallo script
fpassthru($fp);
exit;
RISULTATO:
se creco di accedere al file 
www.miosito.org/area1/abstrct.pdf
 mi
viene richiesta la password
se invece passo dal file php sopra indicato no il file viene giù
PROBLEMI:
1. se area1 è una directory private (chmo 700 oppure 770) il file non
viene giù. Perchè?
2. se il file è uno zip e metto header("Content-Type: application/
zip"); mi chiede il download di un nomefile.php. Dove sbaglio?
grazie mille

 zip"); mi chiede il download di un nomefile.php. Dove sbaglio?
Devi specificare anche il nome del file, altrimenti, naturalmente, te 
lo salva col nome dell'eseguibile. Adesso al volo non ricordo la 
sintassi, ma dovresti trovarla cercando "header filename php" su Google.
Bye.


Grazie ho risolto
adesso però ho un'altra domanda al riguardo:
avendo risolto su ser verver linux mi trovo nella situazione che
ancora devo trasferire la'pplicazion anche su un server microsoft
qual è l'equivalente di .htaccess su server microsoft?
in pratica devo chiedere di avere una directory con i soli permessi di
accesso via ftp credo. In quel caso uno script in php come quello
usato (vedi sotto) funziona anche su iis?


 anche su iis?
Si`, sono tutte istruzioni PHP multipiattaforma, quindi vai tranquillo.
Bye.


grazie mille per l'aiuto