A. Penso che la prima cosa per voi è quella di disabilitare Content-Range
..
14.16 Content-Range
L'entità-header Content-Range viene inviato con un'entità-parziale del corpo per specificare in quale parte del soggetto-corpo pieno parziale corpo dovrebbe essere applicato. Le unità di portata sono definite nella sezione 3.12.
Download Manager è possibile scaricare un singolo bene in 2 o più connessioni a causa della gamma .. se si disattiva questa sia download resume
o multiple connections
non possono essere effettuate su un singolo file. avrebbero fatto ogni richiesta per l'inizio del file dall'inizio
Esempio
LoadModule headers_module modules/mod_headers.so
Header set Accept-Ranges none
RequestHeader unset Range
Si dovrebbe anche guardare 14.35.1 Byte Ranges
B. Presenta le sessioni di download.
È possibile generare un uniqid id
per ogni download e servirlo tramite la pagina PHP. Se il download è ancora attivo o è stato richiesto prima di esistere solo nella pagina
Esempio
$realFile = "test.pdf";
$fakeFile = uniqid("file");
$uniqid = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
if (empty($uniqid) || strlen($uniqid) < 20 || !ctype_xdigit($uniqid)) {
die("Die! Die! Die! Stolen URL");
}
$memcache = new \Memcache();
$memcache->connect('localhost', 11211);
$runtime = (int) $memcache->get($uniqid);
if ($runtime) {
die("Die! Die! Die! You Multiple Down loader");
} else {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-Transfer-Encoding: binary");
header("Content-disposition: attachment; filename=$fakeFile.pdf"); //
header('Content-type: application/pdf');
header("Content-length: " . filesize($realFile));
readfile($realFile);
$memcache->set($uniqid, 1);
}
semplice client
$url = "a.php?id=" . bin2hex(mcrypt_create_iv(30, MCRYPT_DEV_URANDOM));
printf("<a href='%s'>Download Here</a>",$url);
Sarebbe uscita una cosa del genere
<a href='a.php?id=aed621be9d43b0349fcc0b942e84216bf5cd34bcae9b0e33b9d913cccd6e'>Download Here</a>
È anche bisogno di mappare ogni id per un particolare file ...
Un modo sarebbe quello di generare un id di sessione che verrà invalidato alla prima connessione. – nkr
È necessario identificare gli utenti in qualche modo e quindi limitare * per * utente, non * per * download. – nalply
ok anche in php è possibile farlo solo con ID di sessione, indirizzi IP, database mysql ecc. Va bene, ma ho pensato che sia possibile su .htacess o qualcos'altro ... –