Форум 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

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

metton 03.06.2002 20:55

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

Crazy 03.06.2002 21:07

Я говорил о том, что POST будет пересылать только текст. Когда ты пересылаешь двоичный файл он преобразуется в текстовое представление (обычно -- base64).

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

metton 03.06.2002 21:10

ну имелось ввиду input file ?
так?

Crazy 03.06.2002 21:12

Имелось в виду, что все, что ты выберешь в <input type=file> будет передано в текстовом представлении. :)

metton 03.06.2002 21:17

усё ясно
я подумал, что ты имел ввиду input text
:rolleyes: :D

DeepDiver 10.06.2002 09:41

Крейзи, искренне сочувствую!

metton 10.06.2002 20:40

2Crazy
а есть ли какие-нить минусы при использовании POST при поиске?

Crazy 10.06.2002 21:02

Кэшировать не будет. Никогда.

И нельзя будет поставить закладку на результат поиска.

metton 10.06.2002 21:10

А вот это интересно...
не очень понял с закладками...
что за закладки?..

Crazy 10.06.2002 21:25

Мсье не в курсе, что означает -- применительно к IE -- понятие "Favorites"? :)

metton 10.06.2002 21:28

2Crazy
упс...
понятно....
а что значит нельзя ставить закладку?
експлорер не захочет ставить или потом её не найти?

Crazy 10.06.2002 21:46

И поставить можно. И найти. Только смысла в этом нет -- все закладки будут вести в одно место. Что бы ты ни искал.

metton 10.06.2002 21:54

понэл...
т.е. ссылка будет вести на первую страницу поиска?...
search.php
вместо найденного search.php?id=3 (например)?

RomikChef 10.06.2002 22:54

Я искренне присоединяюсь к дип дайверу.
Столь долго отвечать на вопросы, которые снимаются пятью минутами глазения на собственный броузер - такое даже за деньги в хелпдесках бывает редко...

Crazy 10.06.2002 23:12

Это помогает отрешиться от суеты мира и достигнуть просветления. :D

nagash 11.06.2002 14:41

http://smiles.nagash.org/dressed - device/poke2.gif

metton 13.06.2002 02:20

2RomikChef
блин вы такие умные :(
ну не очень я в этом пока разбираюсь...
я же в отличие от тебя не родился со знанием веб-технологий...


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

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