PhP программисты, прошу помочь надо сделать разовые ссылки для скачивания файлов

  • Автор темы sega_omm
  • Дата начала
  • Ответы 3
  • Просмотры
sega_omm

sega_omm

ЯЯЯЯЯЯЯЯЯЯ
Сообщения
372
Реакции
1
Город
Стрельна
Авто
VW
Задача:
будет большой список файлов для скачивания, необходимо, чтобы прямые ссылки на файлы были скрыты и только человек, зашедший на сайт, мог скачать файл, и при этом ссылка бы на него умирала через сутки,
вообщем, чтобы ссылки на файлы не гуляли по интернету.

Умею работать с БД sql, в принципе представляю только как сделать убийство ссылок(заносим id файла в базу, еще какой-нить указатель, дату начала и через скрипт потом удаляем все записи, время с создания которых больше 24 часов.)
Но я не умею работать с файлами толком. Нарыл такой код с softtime.ru

Код:
<?php  

$handle = fopen($fullname, &#39;rb&#39;); 
fseek($handle, 0, SEEK_END); 
$size = ftell($handle); 

if(isset($_SERVER[&#39;HTTP_RANGE&#39;])) 
{ 
    $range = explode(&#39;-&#39;, $_SERVER[&#39;HTTP_RANGE&#39;]); 
    if(!$range[0])$range[0] = 0; 
    if($range[1]) ++ $range[1]; 
    else $range[1] = $size; 
} 
else $range = array(0, $size); 
if($range[0] < 0) $range[0] = 0; 
if($range[1] > $size) $range[1] = $size; 

$part_size = $range[1]-$range[0]; 
$range_start = $range[1]; 

if($range[0] > 0 || $range[1] < $size) 
{ 
    $range_stop = $range[1]-1; 
    header("206 HTTP/1.0 Partial content"); 
    header("Content-Length: $part_size"); 
    header("Content-Range: bytes $range_start-$range_stop/$size"); 
}else 
    header("Content-Length: $size"); 
header("Accept-Ranges: bytes"); 
header("Content-Type: application/octet-stream; name=\"$name\""); 
header("Content-Disposition: attachment; filename=\"$name\""); 

fseek($handle, $range_start, SEEK_SET); 
if($arnge[1] == $size) 
    fpassthru($handle); 
else 
    for($blklen = 16384, $pos = $range_start; $pos < $range[1]; $pos += $buflen) 
    { 
        if($range[1]-$pos < $blklen) 
            $blklen = intval($range[1]-$pos); 
        $buffer = fread($handle, $blklen); 
        $buflen = strlen($buffer); 
        echo $buffer; 
    } 
?>

Можете его прокомментировать? где тут что...

Надеюсь, поможете!
 
Это у тебя, похоже отдача файлов по частям.
Контроля, откуда пришел посетитель, я не вижу.

только человек, зашедший на сайт, мог скачать файл
предполагается регистрация?
и при этом ссылка бы на него умирала через сутки
через сутки после чего?

Кури мануал PHP на тему SESSIONS, когда они образуются и как этим управлять. Там все просто.

(написал бы больше - не могу, надо работать)
 
ладно, сам разберусь, сегодня мозги вроде начали работать!
 
Назад
Сверху Снизу