Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не все изображения проходят проверку


Автор: Steisi1982 29.1.2020, 15:39
Из формы на сайте на mail должен уходить файл изображения. Перед отправкой он проходит проверку с помощью кода

Код

    $fname = explode('.', $_FILES["file"]["name"]);
    $ext = strtolower(array_pop($fname));
    $allowed_ext = ['bmp', 'gif', 'jpg', 'jpeg', 'svg']; 
    $type = explode('/', $_FILES["file"]["type"]);
    if ($type[0] != 'image' || !in_array($ext, $allowed_ext)) {
        $errors['file'] = 'Недопустимый формат файла';
    }
    if (!count($errors)) {
        echo "все ок";
    }


Проверка на разрешенные расширения файлов проходит как-то не так. При загрузке одних изображений в формате jpg файл передается нормально, другие изображения с тем же расширением не уходят. Выдается предупреждение 'Недопустимый формат файла'. Причем похоже на то, что отправляются файлы, в названии которых содержатся только цифры. Если кроме цифр содержатся буквы, дефис или что-то еще файл не уходит.

В чем может быть проблема?

Автор: ksnk 29.1.2020, 22:21
А что грузить хочешь ? Либо файлы с нужным расширением, либо с нужным типом ? Тогда нужно поставить && вместо ||

Но вообще то верить юзеру нельзя и тип файла нужно определять на сервере - mime_content_type . Этого достаточно, по идее. Тогда на расширение можно не обращать внимания.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)