Salve,
avrei bisogno di proteggere un file sul mio sito: ovvero in modo che solo i loggati possano scaricarlo.
Come faccio?
(il sistema login l'ho già fatto, ma basta che uno vada su http://www.miosito.it/file.zip e se lo scarica senza problemi...)
Salve,
avrei bisogno di proteggere un file sul mio sito: ovvero in modo che solo i loggati possano scaricarlo.
Come faccio?
(il sistema login l'ho già fatto, ma basta che uno vada su http://www.miosito.it/file.zip e se lo scarica senza problemi...)
alcune note:
- se il file è accessibile da web e non hai altra possibilità, è "sufficiente" usare un percorso non facile da individuare e non pubblicare il link da nessuna parte, fermo restando che se uno lo indovinasse potrebbe comunque scaricarlo (ma se usi un path con caratteri casuali o cose del genere diventa difficile);
- se non vuoi che neanche chi scarica il file conosca il percorso reale (potrebbe "dirlo" ad altri) devi usare un wrapper php, niente di complicato: il percorso reale - difficile da individuare - non lo dici a nessuno, agli utenti loggati dai un path tipo "/download/download.php" e nel file download.php non fai altro che mettere <?php print(file_get_contents('...percorsorealedelfile.. .')); ?>; per questa soluzione esistono anche codifiche più raffinate, comunque;
- se puoi accedere alle impostazioni del server si possono proteggere alcune cartelle da accessi esterni (file ".htaccess" in apache per esempio: se vuoi vedi forum in merito)
- se hai la possibilità di mettere il file al di fuori della web root, fallo e poi usa una soluzione con un wrapper
scusa avresti voglia di farmi un esempio di codice. perchè io ho scritto il codice che mi hai detto ma non funziona.
non avevo fatto caso che era uno ".zip"... prova con:
mettendo il nome opportuno nella prima riga e il percorso giusto nella seconda, ovviamente (puoi usare anche un percorso relativo)Codice PHP:
$name = 'nomefile.zip';
$file = 'esempiocartelladownload/ujgt0u4t/'.$name;
if (file_exists($file)) {
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$name.'"');
readfile($file);
} else {
print 'Errore download.';
};
prego!
(ma in che città? :) )