|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Apr 2004
Messaggi: 957
|
[PHP-Apache] Download con autenticazione
Devo realizzare un "download con autenticazione" in php,
ossia posso downloadare il file solo se sono autenticato, ossia una cosa banale del tipo /download.php?file=myfile download.php: <?php if (utente_loggato()) { download the file myfile } else { echo("non hai il permesso"); } Nessun problema per l'autenticazione, ma qual è il modo piu' semplice di gestire la parte "download the file"? Devo settare l' header content a seconda del tipo di file? e poi inviare il contenuto? Qual è il modo piu' semplice di fare tutto questo? Credo sia un problema comune, e in effetti qualcosa in rete ho trovato, ma volevo anche la vostra opinione. Grazie bicchiere |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Jan 2011
Messaggi: 7
|
sì è come hai detto
es. (dal manuale di php) <?php $file = 'file.bin'; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?> |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Apr 2004
Messaggi: 957
|
Una cosa, pero'.
Per download intendevo semplicemente accedere alla risorsa. Non voglio che appaia la finestra di dialogo "save file", o meglio voglio che appaia quando deve apparire. Il browser deve comportarsi come se download.php non ci fosse. Ad esempio, questa cosa <img src='download.php?file=prova.png'/> deve visualizzare un'immagine senza aprire finestre "save file" (se non sono autenticato invece boh, mostrerà un'immagine vuota) Non cambia niente o c'è da fare qualche modifica? Grazie Paolo |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Jan 2011
Messaggi: 7
|
basta cambiare questa opzione per fare quello che devi
header('Content-Disposition: inline; filename='.basename($file)); |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:24.



















