PDA

View Full Version : [PHP-Apache] Download con autenticazione


bicchiere
18-01-2011, 12:32
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

simone.s
18-01-2011, 12:51
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;
}
?>

bicchiere
18-01-2011, 23:54
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

simone.s
19-01-2011, 09:22
basta cambiare questa opzione per fare quello che devi

header('Content-Disposition: inline; filename='.basename($file));