Pull to refresh

Comments 47

а если файл потом все равно будет РНР принимать, пусть заодно и проверит размер файла.
PHP считает ограничение и уже сам «отклонит» файл по той схеме, которую я писал. Пока на моей практике «обхода» на уровне PHP этого механизма не было. Чтобы например проверить «а не ломалась ли форма», можно проверять наличие в запросе $_POST элемента MAX_FILE_SIZE, и сравнивать его с тем, что мы устанавливали для формы. Если они разнятся — то можем смело считать, что форму ломали, и отклонять вообще запрос такой формы.
А если тот кто ломал форму, также подменит MAX_FILE_SIZE?
вообще, насчет формы отлично придумали друпаловцы, и Сakephp, с Security компонентом(о других не знаю): когда генерируется форма, то на основе ее полей создается хеш. а при submit-е, создается хеш введенных параметров. и если они схожи, то все ок.
Ну я когда генерю форму, то беру MAX_FILE_SIZE из настроек формы.
Когда идет пост формы, я проверяю размер файла по настройкам формы. MAX_FILE_SIZE использую исключительно для того, чтобы пользователи Оперы и ИЕ не тратили время сервера и свое на пустую обработку запроса. Вопщем как показала практика, то
1) пользователи (не хуцкеры злостные) экономят свое время
2) нагрузка от таких пользователей на сервере снижается
а против злостных личностей есть и другие меры борьбы
Не вижу смысла устанавливать это скрытое поле. Ни одну из приведенных вами проблем это не решает — файл все равно загружается, пользователь ждет. А если размер файла потом все равно перепроверять, то пропадает смысл этого поля. Кстати это все описано в мануале…
Смысл есть хотя бы в том, чтобы постараться снизить загрузку и «спам» большими файлами сервер. А также проверить была ли попытка «атаки» сервера такой формой. Например можно будет забанить по IP тех «добрых» людей которые пытались обойти механизм
Банить все же не стоит, но механизм уж больно хлипкий, ну не внушает доверия :)
ЗЫ на PHP.net можно найти почти все, что касается работы с PHP, главное знать, что ищешь.
Тем более я попытался более коротко и понятно расписать «без мусора». Что ссылку на статью на пхп нете не дал — то да, мой касяк :) за то Вам спасибо :)
На php.net лучше не искать, а просто читать все подряд и вникать, особенно когда уже знания о языке есть — столько всяких интересных функций находишь!
Статья хорошая, это вам +, а вот механизм странный :)
:) он не странный, просто вот создатели ие и оперы решили, что так можно хоть как-то сэкономить время пользователей.

Кстати, многие (не ломатели всего и вся) знакомые всегда радуются, когда на формах например закачки фоток, есть такое ограничение, и ты не ждешь пока сервер зальет файл.

Нинаю, по мне так удобно просто. Так сказать «юзабельность» сайта повышает.

Просто надеюсь, что кому-нить пригодится :) Увеличение «юзабельности сайта» это мне кажется хороший тон создания такового
Полностью согласен. Одна из причин такой поплуярности PHP, помимо его простоты, — это хороший структурированный мануал и куча статей в интернете. А комменты на php.net — просто кладезь.
Да, комменты на php.net это мне кажется и есть тот основной плюс и «фишка» их мануалов/статей :)
Может это кому-то и будет полезно, но по моему это не уровень хабра. Не обижайтесь.
Не обижаюсь :)

Имха любая сколько-нибудь полезная информация имеет право на жисть, тем более, что хабру читают нетолько «отцы» программирования, о чем не стоит забывать.
Да причем тут «отцы». Просто разжеванный ман — это не то, что нужно хабраюзерам. Я так думаю.
Тут не могу согласиться :) Так как хабру посещают и начинающие (да почти всем начинающим в каком то деле советуют читать хабру по нужной тематике) в своей области люди. Думаю спорить неимеет смысл, так как у каждого имха :) Все равно спасибо, что обратили внимание на статью, это всеже лучше чем пыление в застенках «Моих документов» :)
Статья попросту неверная.
MAX_FILE_SIZE не имеет никакого отношения к «механизмам отправки запроса формы на сервер» и не имеет никакого отношения к браузерам. Ни для однго браузера никакой версии MAX_FILE_SIZE не является никаким ограничением.

Это простая переменная, отправляемая на сервер и используемая только самим PHP.
Ни одну из обозначенных проблем MAX_FILE_SIZE не решает.

enctype=«multipart/form-data» нужно использовать всегда для форм с возможностью загрузки файлов
Хм… а вы проверяли насчет MAX_FILE_SIZE и что оно никак не влияет? Если нет, то можете прям вот сейчас проверить.

Перед ее публикование проверял в указанных браузерах, что и написал в примечании
Проверьте еще раз, используя для загрузки разные файлы.

Браузеры обрабатывают формы в соответствии со спецификацией.
www.w3.org/TR/html401/interact/forms.html

В частности элемент input
www.w3.org/TR/html401/interact/forms.html#h-17.4

Если бы даже была возможность ограничить размер загружаемого файла на стороне клиента, она явно была бы не столь уродливой.
еще раз повторяю :) Вы проверьте данную возможность, а потом уже говорите «уродлива» или красива. Тем более уродств в данном случае не вижу.
Пока не проверите сами — не вижу смысла с Вами спорить. Так же почитайте ссылку (еще раз списибо 2 kirik за нее)
Прочитайте последний комментарий в приведенной Вами ссылке.
а вы проверьте в ие и опере :) поверьте статью в преведенной мной ссылке я давно читал и считаю, что последний комментарий оставлен пользователем, который не проверял этот механизм в указанных мной браузерах
Вы правда считаете, что все разработчики использующие все серверные языки читают мануал PHP чтобы узнать о возможностях браузеров?

Прекратите пудрить людям мозги.
не вижу смысла с Вами спорить ибо Вы уперлись и даже не хотите проверить, что Вы пишите. Сперва проверяйте, а потом опровергайте. Иначе нету смысла читать Ваши «опровержения»
Господи. Вы хотите научиться веб-разработке или безаргументированным спорам?
aubt.ru/upload.php

Загрузите в эту форму файл размером >500 МБ через IE8, засеките время, через которое загрузка прекратится.
MAX_FILE_SIZE установлен 1КБ.

И вообще, «не вижу смысла с Вами спорить» равносильно «мне нечего сказать». я с Вами не спорил, я задал прямой вопрос, на который можно ответить «да» или «нет», и который должен был натолкнуть Вас на размышления, что Вы, все-таки, где-то ошиблись.

Вы заставляете меня делать проверку того, что я и так знаю. Завтра пользователь FilZone2 напишет статью, что есть ограничение I_DONT_WANT_FILE_BIGGER_THAN, которое у него работает, я что, тоже проверять должен буду? Не хотите понимать — Ваши проблемы, но зачем публиковать такое?
у вас не работает — не спорю
но внимательно ли вы прочли:
> Что происходит на практике (хотя некоторые конфигурации PHP и Apache запрещают данный метод)

www.artfest.com.ua/upload.php тот же пример, только в пхп разрешен этот метод

Еще раз объясняю механизм: пхп (если у него включена такая возможность) проверяет данную настройку и не грузит сервак лишней закачкой
можно для интереса проверить заголовки сообщений и тд :) честно признаюсь ПХП не я писал и не я писал поддержки этого метода, простите, я лишь использую их
У Вас, кстати, тоже не работает (ну явно время загрузки файла больше чем оное для 1КБ) в IE8 и Хроме.

То, что Вы хотите сделать средствами PHP и, тем более, HTML не далется. Вашу задачу можно решить директивой Apache LimitRequestBody. И никак иначе. Обрывать длинные запросы может только принимающий эти запросы процесс, коим PHP не является.
Объясните почему:
когда загрузка большого файла (пример 5 Мб) ведется через мазилу время загрузки при моей скорости 2-4 минуты
когда загрузка того же файла ведется через ИЕ и оперу (неважно у Вас или меня на хосте) время которое тратит сервер примерно 1-10 сек.

Если объясните — я скажу вам ОГРОМНОЕ спасибо :)
да и думаю тогда это объяснит многое
Я бы давно объяснил, но дело в том, что я до конца не уверен.

Возможно, если имя временного файла на сервере и его размер совпадают с указанным в Content-Length, присланным браузером, Apache берет временный файл, обрывая закачку. Либо производится сравнение неких ключей, присылаемых браузером, на основании пути или имени файла.
Так я тоже не могу объяснить, но вот что странно — работает жеж…
Заметил только одну вещь, которую нада указать в базовом топике, но не знаю как:
если размел файла превышает и макс файл сайз и аплоад сайз в пхп — то файл закачивается полностью, потом уже режется.
если размер файла в пределах от макс до аплоад файл сайзов, то срабатывает вышеуказанное мной ограничени ИЕ и Оперы.

В документации пхп на русском написано что это необязательная рекомендация браузера и вероятно дело в каких то заголовках.

Механизм до конца не понимаю, но использую для удобства пользователей :)

Если будет интересно можно будет вне этой ветки обсудить механизмы и выяснить а далее уже тут рассписать :)
В любом случае, это интимные отношения Apache с обработкой загружаемых файлов. MAX_FILE_SIZE тут ну совсем ни при чем, никаким боком.
так я ж не навязываю никому, тем более что желающие могут проверить сами, что к чему.
При моем (на данный момент) плохом интернете и тем более скорости аплоада, данное ограничение очень наглядно работает.

При большой скорост аплоада, возможно в нем и нету смысла. Что же касается реального ограничения файла по размеру, то естественно на этот параметр полагаться не стОит.

Какой у Вас интернет — я не знаю. Попробуйте уменьшить ширину канала до какой то велечины и уже проверить еще раз.

Но тем не менее я это использую, оно работает и оно мне сейчас очень помагает в отладке :)
Что значит «у меня»? Я говорил о браузерах — Ваш браузер не у меня находится.
простите протупил, на вашем хостинге тоже самое, при моем аплоаде 10кб в сек, 5 метров сражу режутся браузером

проверил спецом еще раз, тогда тормозил ИЕ в виду загрузки компа
Я еще раз повторю, используйте разные файлы для своих проверок. Если бы Вы последовали этому совету еще во втором моем комментарии, не было бы все этой ветви. Вы принимаете один эффект за другой и, соответственно делаете неверные выводы, вопреки документации, спецификациям и здравому смыслу.
так разные файлы проверяю
мозила почему то упорно продолжает грузить файл пока его не пошлет сам пхп.
разница во времени — 6 минут между «обрезкой» в ие и продолжение закачки в мазиле
ЗЫ то, что это не спецификация в3с — это не мешает разрабам ИЕ и Оперы использовать данный механизм. в браузерах вообще много того, что не поддерживается официальной спецификацией.
UFO just landed and posted this here
нет, просто напсал вкраце на русском и + свой тест
Этот комментарий огорчает НЛО и поэтому оно его никому не покажет
верояно баги ;) вызванные искуственно в результате «прощупывания» движка хабры :)
могу рассписать если интересно как получить их :) убираются жаль что легко… :( а так прикольно моно заблокировать показы комментов на время :)
В принципе, интересно, но что-то мне подсказывает, что комментарий с описанием бага НЛО съест быстро и безвозвратно. :))
Sign up to leave a comment.

Articles