Вы говорите, что ваша форма загрузки перенаправляет после загрузки?Помните, что PHP удаляет все загруженные файлы при выходе из скрипта, если вы не предприняли шаги для сохранения файла.Если ваша форма отправляет (скажем) «upload.php», который затем перенаправляет на «handle_upload.php», вы должны фактически обработать загрузку в сценарии «upload.php», в противном случае файл пропал.
Также не доверяйте параметрам ['type']
и ['name']
в массиве $ _FILES.Это предоставленные пользователем данные и могут быть легко подорваны.Вы также используете предоставленное пользователем имя файла для хранения файла на вашем сервере.Ничто не говорит, что пользователь не может взломать форму загрузки и вызвать свой файл "../../../../etc/passwd" с типом mime "application.zip".Ваш сценарий с радостью примет это и перезапишет файл пароля вашего сервера.
Правильный способ обработки загрузок с проверкой ошибок:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_FILES['file'])) {
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
... file was succesfully uploaded, process it
} else {
... file upload failed, output error message, etc...
} else {
... no upload at all, not even an attempt
}
} else {
.... not in a POSt environment, so can't possibly have a file upload ...
}