|
|
|
| Привет всем господам профи (новичков прошу не беспокоить). Мне нужна помощь. Вопрос в том, как мне безопасно хранить файлы на серваке. Примерно знаю, как это делается:
1)Сохранить файл с придуманным именем и расширением (например, юзер хочет закачать файл some_image.jpg или some.exe, а на серваке их хранить в виде 0001.file и 0002.file соотвестственно)
2)Затем, надо во-первых, чтобы файл в браузере (как мне надо, то есть юзеры закачивают файлы и скачивают закаченные) отображался с таким же именем и расширением, с каким его закачивал юзер. Ну а затем, соответственно скачать.
Насчёт пункта (2), во-первых как мне определить тип уже сохраненного файла? Есть такой вариант: при сохранении файла хранить в какой-нибудь таблице имя и тип файла (тип при загрузке храниться в $_FILES[name][type']). Создать два массива, в одном все известные типы, в другом соответствующие им расширения. Потом просто находить соответствующее расширение по типу и таким образом у нас получиться имя исходного файла. Верна ли теория?
Во-вторых, самое важное, как мне файл, сохр. на серваке "превратить" в исходный (тот, который изначально закачивался, например text.txt или movie.mp3) файл.
Очень прошу помочь. Если слишком много пидется писать, то хотя бы скажите, где можно это прочитать? Вся надежда на Вас.
НЕУЖЕЛИ ВСЁ ТАК ПЛОХО??? | |
|
|
|
|
|
|
|
для: Shey
(22.04.2008 в 19:27)
| | Доброго времени суток!
Думаю теория с хранением типа данных возможна.
А вот на счет преврашения файлов думаю надо поработать с функцией system(),или подобными ей..... | |
|
|
|
|
|
|
|
для: Shey
(22.04.2008 в 19:27)
| | > во-первых как мне определить тип уже сохраненного файла?
Можно для известных расширений подставлять свой MIME из таблицы, а для неизвестных брать MIME, полученный от юзера при закачке.
> самое важное, как мне файл, сохр. на серваке "превратить" в исходный
Просто послать нужные загловки:
<?php
header('Content-Length: ' . $filesize);
header('Content-Disposition: attachment; filename="filename.ext"');
header('Content-type: application/octet-stream');
?>
|
Тут заголовки для файла "filename.ext", размера $filesize и MIME "application/octet-stream". | |
|
|
|
|
|
|
|
для: Shey
(22.04.2008 в 19:27)
| | Не меняйте расширение, однако, в папку, где хранятся файлы поместите конфигурационный файл .htaccess следующего содержания
RemoveHandler .php .phtml .pl
AddType text/plain .php .phtm .htm .html .phtml .pl
|
Это предотвратит выполнение загруженных файлов на сервере. | |
|
|
|
|
|
|
|
для: cheops
(23.04.2008 в 11:42)
| | если уж .pl, то до кучи и .cgi можно
а вообще, разве *.pl не только в cgi-bin может исполняться? | |
|
|
|
|
|
|
|
для: mechanic
(23.04.2008 в 12:04)
| | > а вообще, разве *.pl не только в cgi-bin может исполняться?
Может, но при определенной настройке сервера. | |
|
|
|