isset и! пустой не прохождение через проверку на загруженные файлы

У меня есть форма загрузки с файлом, который будет загружен. Проблема, которую я имею, является этим, даже когда никакой файл не загружается если (isset ($ _FILES)) ИЛИ если (! пустой ($ _FILES)), все еще передает как успешный:

$_FILES = $HTTP_POST_FILES;
if($_POST['type'] == 'photo' && isset($_FILES)){
// returns true even if no file is uploaded. What am I missing!
}
6
задан kalpaitch 30 March 2010 в 22:02
поделиться

1 ответ

Будучи суперглобальным, $_FILES предположительно всегда установлен, независимо от того, существует ли загруженный файл или нет.

Проверьте загрузку файла(ов), которую вы ожидаете, и посмотрите на поле размера. (По-видимому, в соответствии с User Contributed Notes в руководстве, если форма содержит элемент upload, возможно, что даже isset($_FILES["my_file_name"]) вернет true, несмотря на отсутствие выбранного файла.

Это должно работать надежно:

if($_POST['type'] == 'photo' && 
   ((isset($_FILES["my_file_name"]["size"]) && 
    ($_FILES["my_file_name"]["size"] > 0)) ){

(isset() - для предотвращения уведомления "undefined index".)

Для чего вы это делаете, кстати?:

$_FILES = $HTTP_POST_FILES;
11
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: