Появился ещё один вопрос по поводу загрузки файлов Дело обстоит так: я загружаю до 4 файлов, файлы загружаются ко мне, переименовуются, и их имя сохраняется в бд. Потом при выводе с базы, я уже проверяю, картинка это или нет. Если картинка - то вывожу через теги <img>, а если нет, то хочу чтобы оно размещалось внизу страницы. Определяю, картинка это или нет с помощью этого кода. Но проблема в том, что расширение то выводится правильно, только вот, всё равно условие не срабатывает, и выводилось как и раньше - всё без разбора. В чём тут может быть проблема? PHP: <?php while($img = $res_img -> fetch_assoc()): ?> <?php echo pathinfo('files/'.$img['name'], PATHINFO_EXTENSION) ?> <?php if (pathinfo('files/'.$img['name'], PATHINFO_EXTENSION) == 'gif' || 'png' || 'jpg' || 'bmp'): ?> <a href="files/<?php echo $img['name'] ?>"><img src="files/<?php echo $img['name'] ?>" style="max-height: 100px; max-width: 100px;"></a> <?php else: ?> тут живет другой файл по имени - <?php echo $img['name'] ?> <?php endif ?> <?php endwhile; ?>
Где вопрос? --- Добавлено --- Если чо, pathinfo не проверяет картинка ли это. Он только вырезает из имени файла его расширение. Ты можешь переименовать .php в .jpg, он от этого картинкой не станет.
Ошибка в твоей конструкции $x == a || b || c это работает не так, как ты думаешь ))) --- Добавлено --- http://php.net/in_array
посмотри вот эту функцию - imagecreatefrompng, она возвращает false если это не рисунок, но иногда она тупит выдает картинку, как не картинку.
imagecreatefromstring + file_get_contents Дисклаймер: большинство типов изображений невозможно определить с помощью GD (фотошоп, например, поддерживает около 20).
Fileinfo PHP: <?php $allowed_types = [ 'image/gif', 'image/jpeg', 'image/png', /* и т.д. */ ]; $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, 'path/to/your/file.ext'); if (in_array($mime, $allowed_types)) { // Заходи } else { // В сад }