Материалы
[:NetFAQ://]


Поиск

[:NetFAQ://]


Партнеры
Хостинг от Park-Web

www.popularsite.ru
[:NetFAQ://]


Реклама
[:NetFAQ://]


Антилич на PHP не дадим свое родное

Антилич на PHP:// Не дадим свое родное ...


Если Вам знакома ситуация, когда траффик идет, а народу на сайте нет. Либо Вы частенько замечаете, что ваши картинки и фотографии размещают на других сайтах при этом указывая прямую ссылку на ваш документ. Пользы от такого ноль, а потому с этим надо бороться. В этой статье будет рассмотрен способ реализации посредством php и небольшой записи в .htaccess

Вариант конечно не сильно гуманный, но в некоторых случаях, может оказаться полезным.

Приступим.


Допустим, кто то разместил прямую ссылку на вашу программу. Программа будет лежать в папке data. Все её качают, а про вас никто не знает.


Теория: Для контроля, кто откуда пришел, будем использовать наш либимый PHP, для этого перенаправим все запросы на него и в случае если все хорошо, то скрипт нам файл и отдаст.

Минусы: Если к примеру вы хотите защитить картинки и изображения, то лучше это сделать через .htaccess.

Реализация


Для начала в защищаемой папке создадим файл .htaccess В него засунем две строчки.

RewriteEngine On
RewriteRule (.*) index.php

Тем самым все обращения будут идти к файлу index.php

Далее.

Создаем файл index.php со следующим содержимым.

$file = pathinfo($_SERVER['REQUEST_URI']);
$filename = $file['basename']; //Смотрим, какой файл запросили

// лимит времени выполнения
set_time_limit(0);

$self = pathinfo($_SERVER['PHP_SELF']);
$self = $self['dirname']; //Смотрим из какой папки вызван скрипт.

if(!is_file($_SERVER['DOCUMENT_ROOT']."$self/".$filename)){
    echo "Файл не найден";
    return;
}

// А теперь главное. Запоминаем откуда, к нам пришел посетитель
$refer = $_SERVER['HTTP_REFERER'];

if(!strstr($refer,$_SERVER['SERVER_NAME'])){ // Если не с нашего района, то ...
    echo "<html><head><META http-equiv=Content-Type content=\"text/html; charset=windows-1251\"></head><body>";
    echo "<center><h1>ЙУХ тебе а не файл...</h1></center>";
    echo "</body></html>";
    return;
}

$f = fopen($filename, 'rb'); // Открываем файл и отдаем клиенту.


if (isset($_SERVER['HTTP_RANGE'])) { // поддерживается ли докачка
  $range = $_SERVER['HTTP_RANGE'];
  $range = str_replace('bytes=', '', $range);
  $range = str_replace('-', '', $range);
  if ($range) fseek($f, $range);
}
 
// если есть смещение
if ($range) {
  header($_SERVER['SERVER_PROTOCOL'].' 206 Partial Content');
} else {
  header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
}

header( 'Last-Modified: '.date('D, d M Y H:i:s T', filemtime($filename)) );
header('Content-Length: '.($filesize-$range));
header('Accept-Ranges: bytes');
header('Content-Range: bytes '.$range.'-'.($filesize - 1).'/'.$filesize);
header('Content-Type: application');
header('Content-Disposition: attachment; filename="'.$filename.'"');


ini_set('output_buffering', 0);
ini_set('zlib.output_compression', 0);


while( !feof($f) ) {
  ob_start();
  echo fread($f, $speed);
  ob_flush();
  ob_end_flush();
  sleep(1); // засыпаем
}

// закрываем файл
fclose($f);
 


Вот таким нехитрым способом, мы сможем отвадить всех жедающих ....



Опубликовано: 2010-03-15 12:37:17 shadx

Комментарии

filin а как защетить ссылки видео с плеера когда смотрят видаёт прямую ссылку как зделать чтоб нельзя было украсть ссылку
Anti filin, Этим скриптом этого не сделаешь. Чтобы спрятать ссылки лучше всего симлинки делать и по крону их чистить.
Cawa Почему-то на моем сайте тоже не работает видео
xstas что это за скорость и где её брать echo fread($f, $speed); И эту переменную тоже $filesize

Оставить комментарий:

Имя:
Почта:
Комментарий:
Что написанно на картинке;)
[:NetFAQ://]

Справочники
[:NetFAQ://]


FreeSoftware
Графика
Аудио&Видео
CD&DVD
Офис
Системные утилиты
Антивирусы
Игры
Разное
[:NetFAQ://]


Магазин
Вавилон 5 - второй сезон
Вавилон 5 - второй сезон
[:NetFAQ://]


Статистика


[:NetFAQ://]


FAQ Новости Блог RSS Задать вопрос