IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Огранничение на скачивание файлов (https://www.imho.ws/showthread.php?t=90602)

Hatifnatt 07.08.2005 19:16

Огранничение на скачивание файлов
 
Вопрос, как сделать ограничение на скачивание файлов (как на Wzor.net например), т.е. чтоб с одного IP могли тянуть например в 2 потока, и максимальное кол-во подключение не превышало допустим 10, итого имеем 5 юзеров. FTP сервер нет возможности сделать, можно только через HTTP, средствами .htaccess, PHP лучший вариант или Perl на крайний случай. Может есть какие-то другие варианы советуйте.
Второй вопрос, как лучше отслеживать количество скачиваний файлов дабы контролировать не в меру жадных.
Может быть это относится к антиличу, но помоему не совсем, поэтому и сделал новую тему. Мне важно не чтобы можно было скачать только с моего сайта, а важен контоль над скачиванием.

Всем заранее спасибо.

RaZEr 07.08.2005 23:51

Обычно делается настройками FTP или модулем для апача. Можно конечно и на php написать. Главное чтобы был выключен safe_mode().

Hatifnatt 08.08.2005 22:04

Да понятно, а как именно? Какие-нибудь примеры или ссылочки туда, где об этом можно почитать, а то я почти не имею понятия с какого конца браться то. :confused:

smap 20.08.2005 12:21

Вообще о чем ты говоришь это и есть антилич.

С чего начать?

1) Закачка через скрипт ...

очень примитивно...

при одном потоке:
PHP код:

set_time_limit(0);
 
ob_implicit_flush(true);

  
$File_Download $_GET["file"]; // пусть к файлу
  
$kbat 5// скорость скачивания 

   
while (!feof($File_Download)) {

   if (
connection_aborted()) break;

   echo  
fread($File_Download, (1024 $kbat));

   
sleep(1);

    } 
fclose($File_Download); 

при много поточной чтуки, надо использовать что то типа етого:
(п.с работает только, если php установлен как модуль)
PHP код:

$header getallheaders();

  if (isset(
$header["Range"])) {

    
$from eregi_Replace("bytes=([0-9]+)-","\\1"$header["Range"]);
    
$length $size $from;
    
$range_start $size $length;
    
$range_end $size 1;

    
header ("HTTP/1.1 206 Partial Content");
    
header ("Last-Modified: $ftime");
    
header ("ETag: \"".md5_file($File)."\"");
    
header ("Accept-Ranges: bytes");
    
header ("Content-Length: $length");
    
header ("Content-Range: bytes $range_start-$range_end/$size");

 } else  
header("Content-Length: $size"); 

2) Написать код, который бы каждого кто скачивает, заносил бы в базу или в файл или вообще создавал просто пустые файлы... или обычную сессию в php .... ну вообщем вариантов много что быстрее хз,
потом проверяешь, сколько в данный момент скачивает сколько одновременно

Всё это очень груба... стуки в Пм .. поговорим если тебе ещё надо ;)

3) IMHO лучше "настройками FTP или модулем для апача"


Часовой пояс GMT +4, время: 23:36.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.