Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   несколько вопросов по <form> (http://www.flasher.ru/forum/showthread.php?t=32475)

metton 01.06.2002 23:27

несколько вопросов по <form>
 
1) Какой метод (GET и POST) лучше использовать для каких целей?..

2) атрибут enctype-data - для чего
спсб... :)

Crazy 02.06.2002 01:02

Re: несколько вопросов по <form>
 
Цитата:

Оригинал написал(а) metton
1) Какой метод (GET и POST) лучше использовать для каких целей?..
Случаи, когда в form уместен именно GET, весьма редки. Ибо такие формы имеют серьезные ограничения на размер передаваемых данных и -- сюрприз -- их ответ может кэшироваться. Следовательно, на одинаковый ввод они должны давать одинаковый разультат. Типичный пример -- поисковики.

Опять же из-за кэширования запрещается GET-формам модифицировать данные.

Цитата:


2) атрибут enctype-data - для чего
спсб... :)

Для указания способа кодирования передаваемых данных. Надеюсь, для тебя не секрет, что формы могут передавать только текстовые данные и для upload'а файлов, к примеру, пришлось извращаться. :)

metton 02.06.2002 02:30

спасибо за ответ
из ответа на первый вопрос понял, что ГЕТ лучше вообще не использовать... так?

единственное не понял вот этой фразы:
"Следовательно, на одинаковый ввод они должны давать одинаковый результат."

из ответа на второй вопрос возникли ещё вопросы...
а какие существуют способы кодирования? (мож вопрос и глуп, но: это кодировка?)
а как же input file (насчёт извращения)?

спасибо...

Crazy 02.06.2002 03:15

Цитата:

Оригинал написал(а) metton
из ответа на первый вопрос понял, что ГЕТ лучше вообще не использовать... так?
Неверно. Нужно использовать там, где его особенности являются плюсами, а не минусами.

Цитата:


единственное не понял вот этой фразы:
"Следовательно, на одинаковый ввод они должны давать одинаковый результат."

Есть два основных правила кэширования:

1. Нельзя кэшировать то, что пришло в ответ на POST.
2. Можно кэшировать то, чо пришло в ответ на GET. При этом ключом является, разумеется, URL. Применительно к форме -- то, что в нее ввели.

Соответственно, когда активируется SUBMIT формы, браузер для GET-форм имеет право взять страницу из кэша и вообще не отправлять страницу на сервер -- если точно такие же данные уже вводились в форму ранее.

В случае POST -- обращение к серверу будет в любом случае.

А теперь -- пример. Форма, в которой два поля: название проданного товара и его количество. Обработчик формы на сервере должен внести эти данные в БД.

В случае POST-формы это будет работать корректно всегда. В случае же GET-формы если ввести несколько раз одно и то же сочетание товар-количество, то каждый раз будет выдано сообщение об успешном добавлении, тогда как в реальнойсти может оказаться, что обращение к серверу было всего одно и два транзакции просто потеряны.

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

Если для любого пользователя поиск возвращает одно и то же -- будет экономия ресурсов сервера. Иначе -- будет крутой глюк. :)

Цитата:


из ответа на второй вопрос возникли ещё вопросы...
а какие существуют способы кодирования?

Реально используются две:

1. URL-кодирование (латинские буквы, цифры и некоторые символы передаются как есть, пробел заменяется на '+', а все остальное -- на hex-код с префиксом '%').

2. mime (формат, часто используемый в e-mail).

Цитата:


а как же input file (насчёт извращения)?

Вот как раз файлы и передают в mime-- в формате, допускающем несколько блоков и различные виды кодирования (обычно -- base64).

metton 02.06.2002 03:53

опять же спасибо
и опять же возникают новые вопросы...
в каких именно случаях ГЕТ имеет плюсы?
и как пречисленные тобой спосбы кодирования называются (что именно нужно прописывать в enctype)
спсб...
:)

Crazy 02.06.2002 04:13

Цитата:

Оригинал написал(а) metton
опять же спасибо
и опять же возникают новые вопросы...
в каких именно случаях ГЕТ имеет плюсы?

Дык я ж написал: типичное применение -- поиск.

Цитата:

и как пречисленные тобой спосбы кодирования называются (что именно нужно прописывать в enctype)

Поскольку URL-кодирование используется по-умолчанию, то только при upload'е файлов нужно указать enctype="multipart/form-data". В остальных случаях -- вообще не указывать. Разумеется, для GET эта опция особого смыла не имеет. :)

metton 03.06.2002 20:26

2Crazy
а всё-тки, для чего же тогда input file ?

Crazy 03.06.2002 20:31

Чтобы браузер догадался, что ты ввел в поле не сами пересылаемые данные, а всего лишь имя файла. Заодно -- и кнопка "Browse" добавит. :)

metton 03.06.2002 20:37

а как же через простой text выбрать файл на диске?

Crazy 03.06.2002 20:47

Никак. А при чем здесь "простой текст"?


Часовой пояс GMT +4, время: 10:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.