 |
 |
Форум сетевых администраторов » Программирование » PHP » Безопастность файлов !
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник
Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус:  |
Помогите пожалуйста найти безопастный построения ссылок на файлы с разширением (*.exe;*.jpg) расположенные на сервере. Например что-бы вместо http://host/files/1.exe писать, http://host/downloads.php?id=($id)! Чтоб id номер этого файла можно было задавать в этом-же, или отдельном файле ! Примерно так-же как это делается с php файлами:
code:
Всё это похоже на то, как это делает форум с прикреплёнными рисунками и файлами ! Но я не понимаю как такое воплотить в реальность, из-за того что с PHP я знаком на 0.01% !
Помогите пожалуйста! Очень нужно !
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
19-07-2004 15:57 |
|
|
Администратор
|
[php]
$filename = 'file.ext';
$path = 'path_to_file/';
header("Cache-control:... |
[сооб. #69076]
20-07-2004 07:47 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
PHP:
$filename = 'file.ext';
$path = 'path_to_file/';
header("Cache-control: private");
header("Content-type: application/force-download");
header("Content-transfer-encoding: binary\n");
header("Content-disposition: attachment; filename=\"$filename\"");
header("Content-Length: ".filesize($path . $filenmae));
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
20-07-2004 07:47 |
|
|
Участник
|
| И как это работает ? Если можно, то поподробнее... |
[сооб. #69080]
20-07-2004 09:38 |
|
|
Администратор
|
| а ты измени переменные $filename - имя файла $path... |
[сооб. #69095]
20-07-2004 13:11 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
а ты измени переменные $filename - имя файла $path - путь до файла и зпусти в браузере, увидишь как работает.
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
20-07-2004 13:11 |
|
|
Участник
|
Нет это не то !
Я нащёл подходящее, но есть... |
[сооб. #69112]
20-07-2004 17:06 |
|
Участник
Зарегистрирован: Jul 2004
Место проживания:
Публикаций: 5
Статус:  |
Нет это не то !
Я нащёл подходящее, но есть ещё одна проблема ! Имея этот скрипт, для каждого каталога надо создавать отдельный файл ! Можно ли сделать так, чтобы проверялось сразу-же несколько дирректорий, и определённая директория задавалась определённым id! Например вот так:
http://nd4spd.ovl.ru/downloads.php?id=1&name=1.exe
Где id1=files - папка, а 1.exe - файл расположенный тут в папке id1/1.exe (files/1.exe)
Вот что я переделал, но не работатет !
code:
<<<--->>>
Сообщение было отредактировано TAPAKAH7 20-07-2004 в 17:08
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
20-07-2004 17:06 |
|
|
Администратор
|
| Ты спрашивал как передать файл юзеру, я ответил.... |
[сооб. #69153]
21-07-2004 19:11 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
Ты спрашивал как передать файл юзеру, я ответил. А вот как создавать путь до файла и где хранить данные это совсем другой вопрос. Возми хотябы взгляни на доку по пхп, особо обрати внимание на массивы. Ну да ладно, если хочешь могу тебе пример дать:
PHP:
/* вот пример массива
$files = array(
'fileid' = array(
'file_path' => 'file_path',
'file_name' = 'file_name'
)
);
*/
// далее создаем массив с нужными файлами
$files = array(
'1' = array(
'file_path' => '/home/files',
'file_name' = 'file1.rar'
),
'2' = array(
'file_path' => '/home/files/tmp',
'file_name' = 'file2.rar'
)
);
// Далее предположим что хотят скачать файл 2, и обращяются по url download.php?id=2
// тогда мы получаем нужный нам путь к файлу и сам файл
// но сначало не забываем проверить правилен ли указанный id
if (!isset($files[$_GET['id']]))
{
echo "Такой файл не существует";
exit;
}
$file_name = $files[$_GET['id']]['file_name'];
$file_path = $files[$_GET['id']]['file_path'];
$full_path = $file_path . '/' . $file_name;
// далее делаем нужные на манипуляции по передаче файла юзверю
header("Cache-control: private");
header("Content-type: application/force-download");
header("Content-transfer-encoding: binary\n");
header("Content-disposition: attachment; filename=\"$file_name\"");
header("Content-Length: ".filesize($full_path));
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
21-07-2004 19:11 |
|
|
Участник
|
| C файлами я разобрался, а как изображения сделать... |
[сооб. #69183]
22-07-2004 13:49 |
|
|
Участник
|
| И как можно защитить страницу, от просмотра... |
[сооб. #69207]
23-07-2004 05:03 |
|
|
|
Формат времени GMT. Текущее время 11:52.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.45892406 seconds (98.42% PHP - 1.58% MySQL) with 23 queries.
|
 |