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 file, anziché un semplice link HTML allo stesso, dovrà essere richiamato uno script PHP che provveda ad inviare il file al client in HTTP. Ad esempio:
[url="scarica_file.php?id_file=..."]Scarica il file[/url]
o, per 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 ZIP, compatibile 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????