Перейти к содержимому



Загрузка нескольких файлов на сервер одновременно

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 07 Октябрь 2010 - 14:12

мультизагрузка

<?php
$uploaddir = '../../media/original/';
for ($i=0; $i<count($_FILES['photo']['name']); $i++)
{
if ($_FILES['photo']['error'][$i] == 0)
{
$uploadfile = $uploaddir . $_FILES['photo']['name'][$i];
$type = getimagesize($_FILES['photo']['tmp_name'][$i]);
if ($type[2] == 1 || $type[2] == 2 || $type[2] == 3 )
{
if (move_uploaded_file($_FILES['photo']['tmp_name'][$i], $uploadfile))
{
echo "Файл успешно загружен.<br />";
}
else
{
echo "<span class=\"error\">1Файл не был загружен на сервер.</span><br />";
}
}
else
{
echo "<span class=\"error\">2Файл не является изображением.</span><br />";
}
}
else
{
echo "<span class=\"error\">3Файл не был загружен на сервер.</span><br />";
}
}
?>


как добавить проверку на пустые поля и удаление их из массива?
Как тут проверять расширение?
Какие тут могут быть атаки, и как защититься от них?

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Два сайта на одном хостинге
  2. Заработок на картинках
  3. Загрузка файла на сервер
  4. Как сделать на сайте возможность загрузки файлов от пользователей по FTP?
  5. Несколько сайтов на один хостинг

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Октябрь 2010 - 01:09

sc2r2bey,

как добавить проверку на пустые поля и удаление их из массива?

По-моему я использовал is_uploaded_file()

Как тут проверять расширение?

Если работаешь точно с картинками, нужно проверять не расширение а MIME-тип. Проверяется всё очень просто.
В цикле вытаскиваем Mime текущей перебираемой картинки и сравниваем, встречается ли такой MIME в массиве разрешенных. Если да, то пропускаем, если нет, то удаляем файл + выдаём ошибку в несоответствии.

Какие тут могут быть атаки, и как защититься от них?

1) Загрузка исполняемых файлов с двойным расширением - решение - сверка MIME + проверка последнего расширения на соответствие.
2) Загрузка недопустимо больших файлов - проверяем настройки PHP и если что предупреждаем
3) Пропуск файла(пусто) в одном из полей мультизагрузки для выявления ошибок в работе и дыр в скрипте - решение - делаем тщательную проверку каждого загруженного файла на его наличие

Более надо продумывать, всё ято надумал пока что :)
  • 0


Оформление форума – IPBSkins.ru