if($_FILES['image']['type'] == 'image/jpeg'){
Никогда не полагайтесь на тип MIME, предоставленный браузером.
В этом случае ваша проблема, на которую ссылается Дэвид: IE обычно (ошибочно) предоставляет image/pjpeg
для JPEG, поэтому вы обнаруживаете неизвестный тип файла и устанавливаете $ error на Error: The image could not be uploaded. It must be in .jpg, .jpeg or .gif format.
... но, несмотря на это, вы все равно попробуйте переместить файл, несмотря на то, что он не установил $ small или $ large.
Но более того, представленный браузером тип, вероятно, будет полностью неверным. Вы не можете доверять загруженному имени файла или типу носителя, так что даже не проверяйте их. Вместо этого посмотрите на $imgsize[2]
после вашего вызова getimagesize, чтобы узнать, какой тип PHP думает, что изображение.
И ... если вы принимаете загрузки изображений от обычных пользователей, у вас есть проблемы с безопасностью. Вполне возможно создать действительный GIF (или другой тип файла), который содержит теги HTML. Затем, когда приходит bloody-stupid-IE для доступа к GIF как к отдельной странице, он обнаружит теги HTML, решит, что тип контента, который вы сказали, что он неправильный, и вместо этого интерпретирует его как страницу HTML, включая любые Там есть JavaScript, который затем выполняется в контексте безопасности вашего сайта.
Если вам нужно разрешить загрузку файлов из ненадежного источника и вы сами не обрабатываете изображения (что обычно приводит к побочному эффекту удаления нежелательного HTML), вам, как правило, приходится обслуживать изображения с другого имени хоста для избегайте сценариев на вашем сайте.