Being a superglobal, $_FILES
is presumably always set, regardless whether an uploaded file exists or not.
Check for the file upload(s) you would expect and look at the size field. (Apparently according to the User Contributed Notes in the manual, if the form contains the upload element, it is possible that even isset($_FILES["my_file_name"])
will return true even though there was no file selected.
This should work reliably:
if($_POST['type'] == 'photo' &&
((isset($_FILES["my_file_name"]["size"]) &&
($_FILES["my_file_name"]["size"] > 0)) ){
(the isset() is to prevent a "undefined index" notice.)
What do you do this for, by the way?:
$_FILES = $HTTP_POST_FILES;
$HTTP_POST_FILES
is deprecated: php.net/manual/en/reserved.variables.files.php (besides that it contains the same values as$_FILES
) – Eye