а можно тогда настроить апач так, чтобы если в <img src=file.abra></img> зарание ясно что не будет отображен рисунок, отображался зарание заготовленый с надписю "нет фото"? автоматически подставлялся
PHP: $allowed_types = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'); if(!in_array($_FILES['file']['type'], $allowed_types)) die('Ошибка'); Но это лажа. Если порыться в мане, там функции есть по работе с изображениями, если скормить функции неправильную картинку она ругнётся. Где-то я так уже пробовал делать.
есть список файлов, среди них есть рисунки и не рисунки. перед отображением в броузере надо проверять рисунок или нет?
joost, передай в getimagesize URL файла в полном формате и усё. Hight, ну в POST-запросе какой угодно mime-тип можно написать
Код (Text): function image_valid($type) { $file_types = array('image/pjpeg' => 'jpg', 'image/jpeg' => 'jpg', 'image/jpeg' => 'jpeg', 'image/gif' => 'gif', 'image/X-PNG' => 'png', 'image/PNG' => 'png', 'image/png' => 'png', 'image/x-png' => 'png', 'image/JPG' => 'jpg', 'image/GIF' => 'gif', 'image/bmp' => 'bmp', 'image/bmp' => 'BMP', ); if (!array_key_exists($type, $file_types)) { return "FALSE"; } else { return "TRUE"; } }
Во. По сигнатуре: PHP: <?php function get_image_type($file) { if (!$f = fopen($file, 'rb')) { return false; } $data = fread($f, 8); fclose($f); if ( @array_pop(unpack('H12', $data)) == '474946383961' || @array_pop(unpack('H12', $data)) == '474946383761' ) { return 'GIF'; } else if ( @array_pop(unpack('H4', $data)) == 'ffd8' ) { return 'JPEG'; } else if ( @array_pop(unpack('H16', $data)) == '89504e470d0a1a0a' ) { return 'PNG'; } else if ( @array_pop(unpack('H4', $data)) == '424d' ) { return 'BMP'; } return false; } ?> Естественно никаких гарантий нет.
Не совсем так. getimagesize () возвращает false так же если размер файла превышает допустимый размер для загружаемых файлов, указанный в php.ini. Даже если файл - картинка.