Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Подскажите как пропускать файл через PHP

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Подскажите как пропускать файл через PHP
Имя
Сообщение << Старые топики   Новые топики >>
Подскажите как пропускать файл через PHP - 2006-11-22 22:45:21.340000   
PHPprofi

Сообщений: 23
Оценки: 0
Присоединился: 2006-11-22 20:25:30.653333
Задача такая: нужно чтобы все запросы пользователя обрабатывал скрипт, и когда пользователь запросит файл image.gif или другой файл картинки, то ему будет выдан такой файл. Хотя сам файл будет расположен в другой директории, и пользователь запросит несуществующий реально файл, но скрипт все-равно выдаст ему файл, если таковой есть в в директории с картинками.

Есть 2 директории:
/images/
/archive/

В первой директории нет файлов вообще.
Во второй есть все нужные файлы картинок, и эта директория запарролирована (ее нельзя открыть).

Нужно чтобы при запросе /images/image.gif был вызван обработкич (это я настроил через mod_rewrite), проверил есть ли такой файл, и если файл есть, то считал его из директории /archive/ и вывел в браузер.

Однако все картинки будут проходить через этот скрипт, и нужно сделать так, чтобы нагрузка на сервер была минимальной. Файл картинки может быть и 1 Мб и более. Знаю что есть средство для закачки, которое пропускает файл через PHP скрипт, как это делается на файловых архивах. Мне нужен ариант скрипта, который бы грузил по минимуму бы сервер.

Буду благодарен за помошь.
Post #: 1
RE: Подскажите как пропускать файл через PHP - 2006-11-23 00:14:07.840000   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30
А разве через .htaccess это нельзя настроить? Посмотри здесь: http://htaccess.net.ru/
Post #: 2
RE: Подскажите как пропускать файл через PHP - 2006-11-23 10:00:24.890000   
dentist

Сообщений: 36
Оценки: 0
Присоединился: 2006-11-10 11:30:22.520000
в .htaccess указываеш скрипт-обработчик 404й ошибки и уперёд
Post #: 3
RE: Подскажите как пропускать файл через PHP - 2006-11-24 00:30:10.496666   
PHPprofi

Сообщений: 23
Оценки: 0
Присоединился: 2006-11-22 20:25:30.653333
Вопрос не в том.
Я прекрастно перехватываю запросы всех файлов gif, jpeg и т.д., которые нужно обработать.

Вопрос в том, чтобы скрипт "пропускал через себя" нужные файлы. Например как делается на сайтах файловых архивов, где мы запрашиваем файл по ссылке getfile.php?fileid=456456 и нам выводится содержимое файла
Post #: 4
RE: Подскажите как пропускать файл через PHP - 2006-11-24 01:51:28.170000   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30
Что еще значит "выводится содержимое файла"? Т.е. ты можешь перехватить запрос, но не можешь отобразить содержимое этого файла на странице? Я вот не очень понял. Вообще, есть функции readfile и passthru, если тебе не это надо, то тогда что?
Post #: 5
RE: Подскажите как пропускать файл через PHP - 2006-11-24 02:23:05.043333   
PHPprofi

Сообщений: 23
Оценки: 0
Присоединился: 2006-11-22 20:25:30.653333
Я хочу получить совет у того, кто знает какая функция минимально грузит сервер и быстро работает.
Например обратился по адресу http://site.net/page.php?picture=125 и мне вывелась картинка. Наподобие как у каталогов делается
Post #: 6
RE: Подскажите как пропускать файл через PHP - 2006-11-24 08:51:38.576666   
Lex_Voodoo

Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
quote:

кто знает какая функция минимально грузит сервер и быстро работает

Грузят сервер не функции, а процессы. Это если исключить вариант с руками из жопы и кодом типа:
$file = file(...); foreach($file as $line) { &nbsp;&nbsp; echo $line; } Если предполагается хранить объемные файлы и боишься нагрузки, отдавать файл пхп-шником не лучшее решение.
Как вариант - создавать симлинки с рандомным именем в любой доступной юзеру и апачу директории, ставить куки и отправлять его на закачку. Если нужно, добавить проверку на перманентность IP/кук/браузера/имени домашнего попугайчика. Раз в N минут крон чистит все устаревшие симлинки и юзер посылается на [туда, куда укажет твой ErrorDocument 404]

Если предполагается очень большая нагрузка, советую сразу смотреть в сторону nginx и PHP как fastCGI.
Иначе что бы ты не использовал, при nК коннектах всё довольно быстро свалится.
Post #: 7
RE: Подскажите как пропускать файл через PHP - 2006-12-08 21:10:25.966666   
deniska

Сообщений: 25
Оценки: 0
Присоединился: 2006-12-08 21:02:11.436666
$mime_type = 'application/octetstream';
$srv_name = '/home/secure_folder/secure_file.jpg'; // здесь ты можешь выбрать имя файла из БД или ещё откуда в зависисимости от твоих $_REQUEST параметров
$file_name = 'preved.gif';
header('Content-Type: ' . $mime_type );
header('Content-Disposition: attachment; filename="' . $file_name . '";');
readfile( $srv_name );

exit();
У юзера скачается файл, который будет называться preved.gif, а на самом деле скрипт ему отдаст secure_file.jpg, который будет лежать на сервере в папке… (вобщем не важно где он будет лежать). Чтобы ничего не кэшировалось можноо ещё послать заголовки 'Cache-Control' и 'Pragma: no-cache'.
Post #: 8
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Подскажите как пропускать файл через PHP







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.