У меня есть форма загрузки с загружаемым файлом. Проблема заключается в том, что даже когда ни один файл не загружается, if (isset ($ _ FILES)) ИЛИ if (! Empty ($ _ FILES)) по-прежнему проходит как успешное:
$_FILES = $HTTP_POST_FILES; if($_POST['type'] == 'photo' && isset($_FILES)){ // returns true even if no file is uploaded. What am I missing! }
Будучи суперглобальным, $_FILES
предположительно всегда устанавливается независимо от того, существует ли загруженный файл или нет.
Проверьте загруженные файлы, которые вы ожидаете, и посмотрите на поле размера. (Очевидно, согласно примечаниям пользователя, внесенным в руководство, если форма содержит элемент загрузки, возможно, что даже isset($_FILES["my_file_name"])
вернет true, даже если не было выбранного файла.
Это должно работать надежно:
if($_POST['type'] == 'photo' && ((isset($_FILES["my_file_name"]["size"]) && ($_FILES["my_file_name"]["size"] > 0)) ){
(isset () предназначен для предотвращения уведомления об неопределенном индексе.)
Для чего вы это делаете, кстати ?:
$_FILES = $HTTP_POST_FILES;