| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 24.10.2002
Сообщения: 68
![]() |
Логика if - else PHP нужна помощь
День добрый.
Помогите, пожалуйста, разобраться с логикой многоуровнего if - else. Есть код загрузки картинок на сервер + пути в базу. Многочисленные проверки работают и всю грузиться куда надо, если проходит проверки. Но вот текст ошибки по проверке размера фаила в Кб не выдаётся, а выдается ошибка по пикселям. Хотя фаил большого чем надо размера не пропускает. В общем хочу понять почему не выдаёт ошибку по размеру. ![]() Заранее спасибо. PHP код:
__________________
Через терни к звездам! |
|
|
|
|
# 2 | |
|
Administrator
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 062
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
хммм
Цитата:
![]() <font color=#FF0000>Размер...
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!! ~~~~~~~~~~~~~~~~~~~~~~ The time has come it is quite clear, our antichrist is M.M.
|
|
|
|
|
|
# 3 |
|
Junior Member
Регистрация: 24.10.2002
Сообщения: 68
![]() |
Спасибо.
Однако вопрос до конца не решён. Проверил еще раз. Дано два тестовых фаила: первый - маленький 150*112 (по геометр. размерам подходит). Сохранён специально без сжатия - 44 Кб (по Кб не подходит) - загружаем только его - PHP честно пишет - не подходит - ура! второй - большой 600*450 (по геометр. размерам подходит). Сохранён специально без сжатия - 323 Кб (по Кб не подходит) - загружаем только его - PHP пишет - "Размеры картинки слишком большие. Для фото-миниатюры ширина = 150px, высота максимально - 300px, для полной фотографии ширина максимально 800px, высота максимально - 1000px." - не то - косяк! Грузим оба - PHP честно пишет - не подходит - ура! (ссылаясь скорее всего на первый фаил) Жмем фаилы по размеру - ошибок нет - грузим на сервер и в базу. Всё бы ничего, если бы делал интерфейс для себя. А так пользователь будет биться головой о стенку (хоть весь лист испиши help'ом) почему размеры большой картинки по пикселям верны, а картинка не грузится и выдаёт что неправильные размеры по пикселям. P.S. Сделал то же самое для одного фаила При выполнение условий всё грузиться. Если взять картинку меньшую по пикселям, но большую по Кб, пишет большая по Кб. Если взять нужную по пикселям, но большую по Кб, пишет неправильные размеры по пикселям. ![]() PHP код:
__________________
Через терни к звездам! Последний раз редактировалось killhunter; 16.10.2009 в 03:37. |
|
|
|
|
# 4 |
|
Administrator
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 062
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
бррр. многа букф. особенно для третьего часа ночи. я честно пытался трижды прочесть и собрать в кучу. ниасилил.
файл a - проходит по dimension и не проходит по size файл b - проходит по dimension и не проходит по size дальше что?
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!! ~~~~~~~~~~~~~~~~~~~~~~ The time has come it is quite clear, our antichrist is M.M.
|
|
|
|
|
# 5 |
|
Junior Member
Регистрация: 24.10.2002
Сообщения: 68
![]() |
Сделал дополнение на один фаил.
По вопросам, да именно так. Оба фаила правильно проверяются на условия, но первый выдаёт правильные else (dimension, size). Второй выдает только dimension, на проверку как dimension, так и size.
__________________
Через терни к звездам! Последний раз редактировалось killhunter; 16.10.2009 в 03:47. |
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 24.10.2002
Сообщения: 68
![]() |
Сделал.
Проверял скрипт одного фаила. Взял фаил 150*105, т.е. размеры подходят, но 30 Кб (не подходит). Дальше началось странное: три загрузки этого фаила - выводит неправильные размеры по ширине и высоте и не выводит echo размера по Кб и по ширине. Четвертая и далее загрузки пишет большой размер по Кб и выводит echo filesize($filename2_1); 30150 как и должен. Т.е. получается первые три загрузки getimagesize вообще не сработал. Я правильно понимаю? Если это так, то как можно с этим бороться - это же код, а не гадание на кофейной гуще
__________________
Через терни к звездам! Последний раз редактировалось killhunter; 16.10.2009 в 13:12. |
|
|
|
|
# 10 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Хм, скажу честно, код жуткий (начиная с прямых проверок, странных получений имени файла и расширения и copy вместо move_uploaded_file ну и других конечно), но суть Вашей проблемы полагаю что Вы просто не проверяете ошибку аплоада ($_FILES['image_path']['error']) в Вашем случае получается, когда размер больше указанного в MAX_FILE_SIZE, php выставляет ошибку 2 ( UPLOAD_ERR_FORM_SIZE ), и соответственно $filename2_1 = $_FILES['image_path']['tmp_name']; пустые.
Правда getimagesize потом честно говорит об этом: Код:
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /home/hubbitus/_SITES/ru.bir.ru/_temp/imho.ws/Upload/1.php on line 35
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
# 11 |
|
Junior Member
Регистрация: 24.10.2002
Сообщения: 68
![]() |
Т.е. надо ввести проверку на размер временного фаила, чтобы не ноль.
Понял, спасибо. И ещё вопрос в контексте ![]() Все мы в общем-то учимся постоянно. Вот сейчас я изучаю php, мне интересно почему код жуткий Дело в том, что пытаюсь таким образом максимально обезопасить загрузку картинок пользователями (там есть еще ограничения на вывод информации из БД). Однако, буду признателен любой ссылки на мануал или пример максимально безопасной загрузки картинок на сервер
__________________
Через терни к звездам! Последний раз редактировалось killhunter; 19.10.2009 в 14:52. |
|
|
|
|
# 12 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Про жуткий код, ну я частично в скобках уже указал, ну например, что за велосипед: Код:
$name=substr($filename1_1, 0, strrpos($filename1_1, "."));
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 13 |
|
Junior Member
Регистрация: 24.10.2002
Сообщения: 68
![]() |
Вот вариант с учётом, анализа ошибок загрузки и проверки временного фаила на ноль. Всё работает.
Кстати фаил a.b.c.d.jpg тоже правильно грузится ![]() Поясню про 8 символов - сделано по двум причинам: 1. ограничить имя конечного фаила после bin2hex() 2. можно было и 5,7; 8 символов просто небольшая хитрость и пыль в глаза ![]() PHP код:
Пойду выяснять про отличие copy и move_uploaded_file в аспекте безопасности.
__________________
Через терни к звездам! |
|
|