Подтвердить что ты не робот

Недопустимый тип смещения

У меня возникли проблемы с загрузкой файла через php. Я проверяю тип файла в начале процесса и получаю сообщение об ошибке.

Это ошибка, которую я получаю:

Предупреждение. Недопустимый тип смещения в /balblabla/DBfunctions.inc.php on line 183

Это распечатанный файл $_FILES var

Массив ([Picture] = > Массив ([имя] = >   JPG.jpg [type] = > image/jpeg   [tmp_name] = > /tmp/phpHlrNY8 [ошибка]   = > 0 [размер] = > 192221))

Вот сегмент кода, который я использую, который дает мне проблемы:

function checkFile($file, $type)
{
    if( in_array($_FILES[$file]['type'], $type) ){    //   <---  LINE 183
        return true;
    }//if
    return false;
} // end checkFile()

Это строка кода, вызывающая функцию

if (checkFile ($ _FILES ['Picture'], array ( "image/jpeg" )) == true) { // делать вещи
}//end if

Я использовал этот фрагмент кода на десятках сайтов на моем собственном сервере, поэтому я предполагаю, что это другой вариант конфигурации. Как я могу изменить свой код, чтобы он работал на этом другом сервере?

4b9b3361

Ответ 1

Вы передаете массив, а не индекс string/integer в вашу функцию checkFile.

Чтобы исправить это, внесите одно из следующих изменений:

Измените контрольный файл, чтобы он использовал полученный массив для проверки:

if( in_array($file['type'], $type) )

ИЛИ измените код, вызывающий эту функцию, чтобы передать имя файла для использования в качестве индекса, а не массива файлов, таким образом:

if( checkFile('Picture', array("image/jpeg") ) == true )

Любое изменение будет работать.

Ответ 2

В checkFile() замените $_FILES[$file] на $file. Вы индексируете массив $_FILES дважды.