Завоздка! Почему-то при проверке размера картинки, а именно: Код (Text): if ($File['size'] > $MaxSize) { $Error = "Слишком большой файл"; return false; } браузер перестает реагировать, зависает! И работа его возобновляется только после перезагрузки компьютера. А почему - непонятно! Может у кого была подобная ситуация? Поделитесь опытом!
Хочу уточнить в какой момент происходит зависание браузера! А именно: а) при вызове функции внутри базового класса; б) при выборе фото выше нормативного размера в 1 Мб. Если залить эти функции и форму в отдельный файл всё работает! вызов функции Код (Text): $fsmall = check_and_load_foto($_FILES['picture'],$sm_name,'1'); Две функции. Одна из них для проверки и закачки картинки, а вторая для стандартизации размера фото Вот первая: Код (Text): function check_and_load_foto($file, $newname, $type = 1, $quality = null) { // Массив допустимых значений типа файла $types = array('image/gif', 'image/jpeg','image/jpg'); // Обработка запроса if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Проверяем тип файла if (!in_array($file['type'], $types)) die('<p>Запрещённый тип файла. <a href="'.$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"].'">Попробовать другой файл?</a></p>'); // Проверяем размер файла if ($file['size'] > MAX_SIZE) die('<p>Слишком большой размер файла. <a href="'.$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"].'">Попробовать другой файл?</a></p>'); $name_file = resize_pict($file,$newname, $type); // Загрузка файла и вывод сообщения if (!@copy(ABS_TEMP . $name_file, ABS_PATH . $name_file)) $result = 0; // Что-то пошло не так. else { $result =1; // echo '<p>Загрузка прошла удачно <a href="' . PATH . $name_file . '">Посмотреть</a>.</p>'; // print('<img src="' . PATH . $name_file . '">'); } // Удаляем временный файл unlink(ABS_TEMP . $name_file); if($result>0) return $name_file; else return(0); } } Вот вторая Код (Text): // Функция изменения размера // $file - передается массив значений $_FILES['name'] // $newname - Новое имя файла // Изменяет размер изображения в зависимости от type: // type = 1 - эскиз // type = 2 - большое изображение // quality - качество изображения (по умолчанию 75%) function resize_pict($file, $newname, $type = 1, $quality = null) { // В зависимости от типа (эскиз или большое изображение) устанавливаем ограничение по ширине. if ($type == 1) $w = MAX_SMALL_FILESIZE; elseif ($type == 2) $w = MAX_BIG_FILESIZE; // Качество изображения по умолчанию if ($quality == null) $quality = 75; switch($file['type']): case "image/jpeg" : { $source = imagecreatefromjpeg($file['tmp_name']); break; } case "image/jpg" : { $source = imagecreatefrompng($file['tmp_name']); break; } case "image/gif" : { $source = imagecreatefromgif($file['tmp_name']); break; } default: return false; endswitch; // Определяем ширину и высоту изображения $w_src = imagesx($source); // Определяем его линейный размер по горизонтали (ширина) $h_src = imagesy($source); // Определяем его линейный размер по вертикали (высота) if ($w_src != $w) { // Проверяем не равна ли уже исходная ширина необходимой нам if ($w_src > $h_src) { // Если изображение горизонтальное $ratio = $w_src/$w; // Считаем соотношение пропорций $w_dest = $w; // Конечная ширина будет равна максимальной $h_dest = round($h_src/$ratio); // Считаем конечную высоту } elseif ($h_src > $w_src) { // Если изображение вертикальное $ratio = $h_src/$w; // Считаем соотношение пропорций $h_dest = $w; // Конечная высота будет равна максимальной $w_dest = round($w_src/$ratio); // Считаем конечную ширину } else { // Если изображение квадратное $w_dest = $w; // Подставляем максимальные значения $h_dest = $w; } } $dest = imagecreatetruecolor($w_dest, $h_dest); imagecopyresampled($dest, $source, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); imagejpeg($dest, ABS_TEMP . $newname, $quality); imagedestroy($dest); imagedestroy($source); return $newname; } и форма для загрузки, самая простая Код (Text): <form action="<?=$_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data"> <input type="file" name="picture"> <input type="submit" value="Загрузить"> </form>
Это всё php, он злобный! Разъярённый ударом слишком тяжёлой картинкой (да прямо по голове) он в ответ отправил какое-то ругательство типа HTML: <script type="text/javascript"> while(true) { } </script>
с этим вопросом всё ясно! следующий вопрос такой. Может кто-нибудь объяснить такую штуку: Почему в IE при определении типа файла Код (Text): $_FILES['picture']['type'] выдается ответ image/pjpeg Причем в Opera определяется правильно - image/jpeg откуда берется буква "p"?