Предупреждения в PHP

  • Автор темы Автор темы pervrom1
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

pervrom1

Участник
Топикстартер
Сообщения
37
Реакции
0
Здравствуйте )) Опять я застрял... ))
На этот раз такой вопрос:
Могут ли разные браузеры по-разному интерпретировать php? Дело в том, что один и тот же код Mozilla, Opera, Chrome, Safari пропускают без ошибок, код работает, а в Internet Explorer сценарий не выполняется, и выводятся такие предупреждения:

Warning: imagerotate(): supplied argument is not a valid Image resource in /site.ru/scripts1.php on line 18

Warning: imagesx(): supplied argument is not a valid Image resource in /site.ru/scripts1.php on line 20

Warning: imagesy(): supplied argument is not a valid Image resource in /site.ru/scripts1.php on line 21

Ведь php, насколько я успел понять, серверный язык, почему же тогда всё нормально в других обозревателях... Вот и гадаю теперь чего я не понимаю.
Сам скрипт, указанный в action такой (он просто меняет размер изображения, если его ширина больше 150 px, и записывает его в файл):
<html>
<head>
<title>Загрузка---
</title>
</head>
<body>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//pictName - имя формы 'file'
if ($_FILES['pictName']['type'] == 'image/jpeg')
{$imageCreate = imagecreatefromjpeg($_FILES['pictName']['tmp_name']);}
elseif ($_FILES['pictName']['type'] == 'image/gif')
{$imageCreate = imagecreatefromgif($_FILES['pictName']['tmp_name']);}
elseif ($_FILES['pictName']['type'] == 'image/png')
{$imageCreate = imagecreatefrompng($_FILES['pictName']['tmp_name']);}

$imageCreate = imagerotate($imageCreate, 5, 0); //поворот изображения на 5 гр.

$wid = imagesx($imageCreate);
$hei = imagesy($imageCreate);

// если ширина изображения > 150px, делаем его размер меньше (150x?) и сохраняем в файл
if ($wid > 150) {
$ko = $wid/150;
$newheight = $hei/$ko;

$newimage = imagecreatetruecolor(150, $newheight);

imagecopyresampled($newimage, $imageCreate, 0, 0, 0, 0, 150, $newheight, $wid, $hei);

imagejpeg($newimage, '/patch/image_arhiv/'.$_FILES['pictName']['name'], 75);

imagedestroy($imageCreate);

imagedestroy($newimage);

unlink($_FILES['pictName']['tmp_name']);

echo "Загрузка удалась";
}
//если ширина <= 150px просто выводим сообщение
else {echo "ширина в норме";}


}
?>
</body>
</html>

Буду очень благодарен за помощь. И уже за внимание спасибо. ))
 
Ответ: Предупреждения в PHP

Ну наверное потому-что ie передает картинку методом post в том виде, в котором вы не учитываете.
gif/png проглатывает?
Если проглатывает смотрим вариации на тему 'image/jpeg', если нет, то курим мануалы.
 
Ответ: Предупреждения в PHP

Ну наверное потому-что ie передает картинку методом post в том виде, в котором вы не учитываете.

Спасибо, splxgf, вы оказались правы.
Я проверял на png и jpg - оба формата не работали. Зато gif загрузился успешно, без всяких предупреждений.
Тогда, с вашей подачи, я проверил (через echo) какой тип передаёт браузер:

$types = $_FILES['pictName']['type'];
echo "$types";

Оказалось, что:
для PNG Internet Explorer выдаёт тип - image/x-png; // а я учитывал image/png
для JPG Internet Explorer выдаёт тип - image/pjpeg; // а я учитывал image/jpeg
для GIF Internet Explorer выдаёт тот же тип - image/gif, что и в других браузерах; // поэтому он и работает в IE

Но мне всё ещё не понятно, что это за диковинные типы: image/x-png и image/pjpeg, и какие ещё бывают типы, чтобы заранее можно было их предусмотреть и избежать предупреждений впредь. И тогда получается, что тип изображения определяет браузер перед отправкой, а не сам сервер?
Но уже за подсказку вам ОГРОМНОЕ СПАСИБО! ))
 
Ответ: Предупреждения в PHP

К сожалению с php не знаком и в интернет технологиях не разбираюсь.
pjpeg - это прогрессивный jpeg, в целом imho проще в типе искать подстроку jpeg/gif/png и еще из серии xbitmap
Линк до кучи http://msdn.microsoft.com/en-us/library/ms775147(VS.85).aspx
 
Ответ: Предупреждения в PHP

в целом imho проще в типе искать подстроку jpeg/gif/png и еще из серии xbitmap
Так и буду делать ))

За пояснения и ссылку я очень вам благодарен )

К сожалению с php не знаком и в интернет технологиях не разбираюсь.
Если вы не разбираетесь, то что тогда можно сказать обо мне...)))

Всего самого доброго. Счастливо! )
 
Статус
Закрыто для дальнейших ответов.