
08.11.2009, 15:05
|
|
Новичок
Регистрация: 15.10.2007
Сообщений: 24
Провел на форуме: 386127
Репутация:
7
|
|
защита файлов от скачки на других сайтов
PHP код:
<?php
// Настройки
$antiurl = "d0pz.com"; // Разрешённые сайты (referer).
$antidir = "test/"; // Папка где находятся защищённые файлы / - обязательно в конце.
//$logfile = "log.htm"; // Eсли хотите вести лог удалите // перед строкой. Файл логов (должен быть 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!");
$cnr_date = date("l d F H:i:s");
$cnr_counter = $logfile;
$cnr_fp = fopen($cnr_counter, "a");
$cnr_hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if ($_SERVER['HTTP_REFERER'] == "")
{ $cnr_ref = "BLOCKED"; } else { $cnr_ref = "<a href=\"" . $_SERVER['HTTP_REFERER'] . "\">" . $_SERVER['HTTP_REFERER'] . "</a>";}
$cnr_data = "<font color=\"green\">" . $_SERVER['REMOTE_ADDR'] . "</font> HOST <font color=\"red\">" . $cnr_hostname . "</font> visited on " . $cnr_date . " linked by " . $cnr_ref . " <br>";
fputs($cnr_fp, $cnr_data);
fclose($cnr_fp); }
// Проверка реферера
$mtu = "PGg2PjxhIHN0eWxlPSd0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6Izk5MDAwMCcgaHJlZj0naHR0cDovL3d3dy5kMHB6LmNvbSc+QW50aWxlZWNoIHYwLjE8L2E+PC9oNj4="; $c = base64_decode($mtu);
if (!strstr($_SERVER["HTTP_REFERER"], $antiurl) or !isset($_SERVER["HTTP_REFERER"]))
{echo '<html><p></p>' . $c . '<p></p></body></html>'; exit;}
if (is_numeric($_GET["down"]))
{
/************НАЧАЛО ФАЙЛОВ***************************************************************************/
// Здесь идут файлы для скачивания
if ($_GET["down"] == 1)
$filename = "test.rar";
elseif ($_GET["down"] == 2)
$filename = "test2.rar";
elseif ($_GET["down"] == 3)
$filename = "test3.rar";
/************КОНЕЦ ФАЙЛОВ***************************************************************************/
//Находим окончание файла
$split= explode(".", $filename);
$textcount= substr_count($filename, ".")+1; //
$ttype =$split[$nextcount];
// Создается ссылка на файл
$path = $antidir . $filename ;
// Проверка файла есть он или нет
if (!file_exists($path)) {
echo "Файл '$filename' не существует.";
echo $c;
exit; }
$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 { echo "Недействительный файл."; echo $c; } }
exit;
?>
Добавление файлов:
Находим строку (43):
/************НАЧАЛО ФАЙЛОВ***************/
Здесь идут ваши защищённые файлы из папки.
elseif ($_GET["down"] == 2) пишиться номер файла от 1- и так далее.
$filename = "test2.rar"; файл в папке ($antidir).
Потом даем ссылку на скачивание пример: http://example.com/antileech.php?down=4 <-- номер файла
Последний раз редактировалось SL@YER; 08.11.2009 в 15:12..
|
|
|