Очень неприятно, когда замечаешь, что трафик твоего сайта растет, а посетителей не прибавляется. И тут замечаешь, что "добрые люди" ставят ссылки на своих сайтах не на твою статью на твоем сайте, а непосредственное на твои файлы для скачивания. Вот от таких добрых людей и хочется сделать защиту. Она конечно не совершенна, но от простых ссылок непорядочных людей, ворующих контент очень эфективна.
<?php/*Защита файлов от скачивания по ссылкам с чужих сайтов ссылка на скачивание выглядит так:http://example.com/antileech.php?down=4 <-- номер файлаили http://example.com/antileech.php?down=filename <-- имя файла*/// Настройки$antiurl = "htmlweb.ru"; // Разрешённый сайт (referer).$antidir = $_SERVER['DOCUMENT_ROOT']."/download/"; // Папка где находятся защищённые от скачивания файлы$logfile = "log.htm"; // Файл протокола (должен быть html или htm и обязательно CHMOD 777.if (isset($logfile)) {if (!file_exists($logfile)) die("Файл <font color='red'><b>$logfile</b></font> не найден!");if (!is_writable($logfile)) die("Для файла<font color='red'><b>$logfile</b></font> нужно зделать CHMOD 777!");if ($_SERVER['HTTP_REFERER'] == "")$cnr_data = "[не известно]"; else $cnr_data = "<a href="" . $_SERVER['HTTP_REFERER'] . "">" . $_SERVER['HTTP_REFERER'] . "</a>";$cnr_data = "<font color="green">".$_SERVER['REMOTE_ADDR']."</font> HOST <font color="red">".gethostbyaddr($_SERVER['REMOTE_ADDR'])."</font> visited on ".date("l d F H:i:s")." ссылка с ".$cnr_data."<br>";@file_put_contents($_SERVER['DOCUMENT_ROOT'].$logfile, $cnr_data, FILE_APPEND);}// Проверка реферераif (!stristr($_SERVER["HTTP_REFERER"], $antiurl) or !isset($_SERVER["HTTP_REFERER"])) die('<h1>Файл по указанной ссылке не доступен!</h1>');if (is_numeric($_GET["down"])){// Здесь идут файлы для скачивания пономерам if ($_GET["down"] == 1) $filename = "test1.rar"; elseif ($_GET["down"] == 2) $filename = "test2.rar"; elseif ($_GET["down"] == 3) $filename = "test3.rar";}else $filename = $_GET["down"];$path = $antidir . $filename; // Полная ссылка на файл// Проверка файла есть он или нетif (!file_exists($path)){ header("HTTP/1.0 404 Not Found"); die("Файл '$filename' не существует!");}$ftime = date("D, d M Y H:i:s T", filemtime($path));// Проверкаif (strstr($_SERVER["HTTP_REFERER"], $antiurl)) { if (isset($_GET['down']) && isset($filename)) { $fsize = filesize($path); $ftime = date("D, d M Y H:i:s T", filemtime($path)); $fd = @fopen($path, "rb"); if (!$fd){header ("HTTP/1.0 403 Forbidden");exit; } if ($HTTP_SERVER_VARS["HTTP_RANGE"]) { // докачка $range = $HTTP_SERVER_VARS["HTTP_RANGE"]; $range = str_replace("bytes=", "", $range); $range = str_replace("-", "", $range); if ($range) {fseek($fd, $range);} } $content = fread($fd, filesize($path)); fclose($fd); if ($range) header("HTTP/1.1 206 Partial Content"); else header("HTTP/1.1 200 OK"); header("Content-Disposition: attachment; filename=" . basename($path)); header("Last-Modified: $ftime"); header("Accept-Ranges: bytes"); header("Content-Length: ".($fsize-$range)); header("Content-Range: bytes $range-".($fsize -1)."/".$fsize); header("Content-type: application/octet-stream"); print $content; exit;} else die("Недействительный файл.");}?>