Будучи суперглобальным, $_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;