Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как защитить файлы от прямого скачивания?
 
 автор: antf   (13.06.2006 в 18:58)   письмо автору
 
 

Здравствуйте
Допустим, у меня есть директория, куда складываются аттачи к форуму. Дело в том, что некоторые разделы форума доступны только определенным категориям пользователей. Соответсвенно и аттачи, которые относятся к vip-форумам также должны быть защищены. Как это можно сделать?

В этой теме
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=12349&page=3
указаны заголовки. Как их правильно использовать. Мои попытки закончились неудачно (аттач).
Заранее спасибо.

   
 
 автор: Diablo_   (13.06.2006 в 21:33)   письмо автору
 
   для: antf   (13.06.2006 в 18:58)
 

А можно подробнее вот про этот код?

header('Content-type:'.$row['content-type']); // Отправляем тип файла. 
header('Content-length'.filesize ('files/'.$row['name'].'.'.$row['exe'])); // Отправляем его размер. 
header( 'Content-Disposition: attachment; filename='.$row['name'].'.'.$row['exe']); // Отправляем его имя.

Непонятно, чему равен $row

   
 
 автор: antf   (13.06.2006 в 21:37)   письмо автору
 
   для: Diablo_   (13.06.2006 в 21:33)
 

Мне не только не понятно чему равен $row, мне непонятно где применять эти заголовки.

   
 
 автор: cheops   (13.06.2006 в 22:41)   письмо автору
 
   для: antf   (13.06.2006 в 18:58)
 

Хм... так а вы содержимое самого файла после заголовков не выводите...

   
 
 автор: antf   (13.06.2006 в 23:04)   письмо автору
 
   для: cheops   (13.06.2006 в 22:41)
 

- Все ли три вышеприведенных заголовка обязательны?
- Как можно вывести содержимое файла? :)
- Правильно ли я их использую (см. аттач первого поста)?

   
 
 автор: antf   (14.06.2006 в 00:40)   письмо автору
 
   для: antf   (13.06.2006 в 23:04)
 

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

1. Нужно создать .htaccess следующего вида

deny from all


положить его в директорию

2. Написать скрипт, который выдавал бы файлы из закрытой директории. Вот его устройством я и интересуюсь.

   
 
 автор: AKIRA   (14.06.2006 в 00:50)   письмо автору
 
   для: antf   (14.06.2006 в 00:40)
 

Тогда уже работать через базовую авторизацию.
С логином и паролем.

   
 
 автор: AKIRA   (14.06.2006 в 00:51)   письмо автору
 
   для: AKIRA   (14.06.2006 в 00:50)
 

PS а не проще тогда файла через фтп отдавать?

   
 
 автор: cheops   (14.06.2006 в 13:30)   письмо автору
 
   для: antf   (13.06.2006 в 23:04)
 

Второй не обязательный - он просто сообщает браузеру размер загружаемого файла. Вывести содержимое файла можно при помощи конструкции
<?php
  
echo file_get_contents('files/'.$row['name'].'.'.$row['exe']);
?>

   
 
 автор: antf   (14.06.2006 в 13:55)   письмо автору
 
   для: cheops   (14.06.2006 в 13:30)
 

Круто! Вот только один недостаток: вес файлов не должен превышать ресурсов оперативной памяти хостинга. Как узнать размер этих ресурсов через скрипт и предупредить об этом админа?
PS Думаю такую защиту сделать опциональной.

   
 
 автор: antf   (14.06.2006 в 13:56)   письмо автору
 
   для: antf   (14.06.2006 в 13:55)
 

Нет ли универсального параметра для заголовка

header('Content-type:'.$row['content-type']);

Тип файла может быть любым и я его не знаю.

   
 
 автор: Trianon   (14.06.2006 в 14:24)   письмо автору
 
   для: antf   (14.06.2006 в 13:55)
 

Для этих целей применяется функция fpassthru()
Тип данных для неизвестных файлов: application/octet-stream

   
 
 автор: antf   (14.06.2006 в 16:54)   письмо автору
 
   для: Trianon   (14.06.2006 в 14:24)
 

Итого весь сценарий будет выглядеть так.

А есть ли функция, которая сможет определить тип файла на диске?

   
 
 автор: Trianon   (14.06.2006 в 17:00)   письмо автору
 
   для: antf   (14.06.2006 в 16:54)
 

>Итого весь сценарий будет выглядеть так.

fpassthru я в нем не заметил.

>А есть ли функция, которая сможет определить тип файла на
>диске?

по каким критериям?

   
 
 автор: antf   (14.06.2006 в 17:22)   письмо автору
 
   для: Trianon   (14.06.2006 в 17:00)
 

>> fpassthru я в нем не заметил.
В форуме он необязателен, поскольку файлы более 1 мб к загрузке не допускается. Вот когда буду обновлять файловый архив Proteus, оставлю эту информацию для админа, как напоминание :).
>> >А есть ли функция, которая сможет определить тип файла на
>диске?
Для заголовка.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования