isset и! empty, не проходя проверку чеком для загруженных файлов

У меня есть форма загрузки с загружаемым файлом. Проблема заключается в том, что даже когда ни один файл не загружается, 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;