Выдача файла php скриптом

Печать RSS
91

Автор
Чатланин
0

session_start();


if (!isset($_SESSION['load']) || $_SESSION['load']=="" || $_SERVER['HTTP_REFERER']!=="http://site.org/file".$_GET['id']."")
    {
Header ('Location: http://site.org/file'.$_GET['id']);
exit();

    }else{
$file = ("путь к файлу");
header ("Content-Type: application/octet-stream");
header ("Accept-Ranges: bytes");
header ("Content-Length: ".filesize($file)); 
header ("Content-Disposition: attachment; filename=".$file);  
readfile($file);
         }
Изменил: CROWS (02.03.2011 / 17:07)
K

Транклюкаторщик
0
Автор
Чатланин
0
Суть вот в чем:

на сайте есть страницы с описанием файлов (http://site.org/file'.$_GET['id']). На этой странице расположена ссылка на скачивание файла, код скачивания файла выше. Это сделано с той целью, чтобы скрыть прямые ссылки и чтобы скачивать файл можно было только прийдя с http://site.org/file'.$_GET['id']

В связи с тем, что мы изменяем прямой адрес к файлу на адрес http://site.org/load'.$_GET['id'], выдача файла происходит с помощью php скрипта (код в else).

Но вот огромная проблема есть: при скачивании файла все 256 МБ оперативы забиваются за раз.

Как решить проблему?
K

Транклюкаторщик
0
может что то типа flush() ??
я тебе ссылку дал, там подобный скрипт только все разжевано и удобно.
Автор
Чатланин
0
Ботаник eGo (2 Марта 2011 / 17:14)
может что то типа flush() ??
я тебе ссылку дал, там подобный скрипт только все разжевано и удобно.
Сейчас посмотрю, только врядли там найдется решение этой проблемы.

ツ ツ ツ
0
2. Ботаник eGo, Там косяк в нем, при выдаче юзер не получит сразу файл, а будет ждать пака скрипт полностью не выдаст файл, в циклах flush() нужно добавить.
K

Транклюкаторщик
0
6. .::lugaro::., там по - моему это указано где - то..
P.S: я об этом в 4 посте говорил smile

Голубые штаны
0
1) Накатай файл-ресайз (типа как ресайз фотографий в моторе) и выдавай файлы через него.
2) Чтобы при каждом скачивании ссылка была разная, прикрепляй к джет-запросу сгенерированный код, а сам код пиши в сессию.
3) При скачивании проверяй, если код из ссылки совпадает с кодом в сессии, выдавай TRUE и отдавай файл, в протифном случае - FALSE.
4) При удачном совпадении и удачной загрузке снова генерируй код и перезаписывай сессию.
5) Путь к файлу ресайза для пущей красоты скрой с помощью мод-реврайта.
К примеру, вместо http://site.ru/resize.pgp?fail=12345&specialkod=12345679&
измени на http://site.ru/12345/12345679

Вот и вся любовь. По сути, работы на 15 минут.

ツ ツ ツ
0
7. Ботаник eGo, точно, это я же и писал D

Голубые штаны
0
о том как отдать различные расширения файлов с помощья ресайза, читай тут: http://www.ipm.kstu.ru/it/lec/7.php
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск