Передача большого количества данных формы методом GET?

Гриша К.

Новичок
Передача большого количества данных формы методом GET?

Здравствуйте.

Есть каталог товаров, есть фильтр по параметрам, данные в котором передаются методом GET.
У метода GET есть ограничения на размер данных (точно незнаю какие). Форма фильтра по параметрам, может содержать большое количество данных и соответсвенно передавать большое количество данных.

Сейчас данные из формы сразу же передаются на текущую страница каталога методом GET,
/catalog/?option[]=1&option[]=2&option[]=3

Предполагаю следующий вариант: Данные из формы передаются сначала к примеру на страницу /catalog/filter.php методом POST, затем данные обрабатываются в строку и передаются, при помощи редиректа на страницу каталога, /catalog/?option=1,2,3
ну а затем например explode() и т.д.

С одной стороны получается лишняя операция (редирект), но зато так объем данных сокращается, что возможно поможет уложиться в ограничения метода GET.

Возможно вы можете подсказать какие-то варианты, дать советы, с учетом того, чтобы итоговый результат, была строка url содержащая необходимые прараметры для фильтрации?


-----------------------------
На localhost максимальная длина данных GET допустима 3345 символов, в броузере IE 6, в строке url нельзя ввести более 1756 символов.
 
Представляю себе муки паука, который пытается сохранить себе как URL строчку на 3к ... :)
А насколько оно надо? И ЗАЧЕМ такие большие объемы данных передавать методом GET?
 
ksnk
наверное, кому то ссылку показать чтобы можно было
 
если при изменении всяких "option" на всякие "o" проблема остается - то да, либо пост + преобразование + редирект, либо javascript - забивая на тех, кто его не включает или не имеет.
 
как вариант - сохранять в таблице значения массива POST и переадресовывать на ?o=md5(print_r($_POST),true). Таблицу - хранить вечно...
HEm
Если вам придет по почте строчка URL на целую страницу, вы не испугаетесь ? :) Я, например, испугаюсь и не пойду...
Гриша К.
Хотелось бы определить круг применения таких "длинных" ссылок.
 
Спасибо всем за ответы.

Передаю методом GET, хотябы потому что пользователь захочет сохранить ссылку.
Если мой знакомый пришлет мне ссылку любых размеров, я нажму на нее. Ссылки от незнакомцев это другой разоговор.

+ Например, есть 100 товаров, пользователь воспользовался фильтром, товаров стало 20, на странице выводится 10 товаров, пользователю нужно перейти на вторую страницу.
А с методом POST, так не сделать.

Как вариант щас можно рассматривать сокращение "option" на "o".

Создавать дополнительную таблицу для хронения данных POST, такой вариант неравится мне.
 
+1 Фанату. Никак по другому только так!!!!

Что вы курили?
почему пост такое не сделать?
hidden поля вам в зубы.
 
ksnk
я лично испугаюсь, но пойду ;)

можно зашить комбинацию параметров в базу и передавать только id записи (так, например, реализован поиск на этом форуме, http://phpclub.ru/talk/search.php?s=&action=showresults&searchid=1575108&sortby=lastpost&sortorder=descending)
 
Автор оригинала: Гриша К.
У метода GET есть ограничения на размер данных (точно незнаю какие).
Относительно ограничений:

The HTTP protocol does not place any a priori limit on the length of
a URI. Servers MUST be able to handle the URI of any resource they
serve, and SHOULD be able to handle URIs of unbounded length if they
provide GET-based forms that could generate such URIs.

http://rfc.net/rfc2068.html#p19
http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestline

Браузеры да - обрезать могут. Эксплорер больше 2027 символов не принимает.

Рецептура, в общем, озвучена: применять короткие (одно-двух символьные) имена для переменных, плюс оптимизировать их возможные значения. Ну и комбинировать, по возможности, GET с кэшированием однотипных и повторяющихся частей запросов, но разумно - прелесть передачи параметров через GET в их читаемости.
 
Тук-тук. Эни бади хоме?

POST + hidden поля прячем условия поиска. а страницу передаем по GET.
 
Спасибо всем за ответы.

Сейчас пока сократил имена переменных. При выборе максимального кличества параметров + производители + сортировка, получается не более 300 символов в строке URL. Огромные фильтры по параметрам я пока не предполагаю делать, но может быть все, поэтому хотел по возможности определиться заранее.

Вот наглядный пример реализации: http://magazin.pozvonochnik.info/ca...]=3&fd[]=11&fd[]=2&fd[]=4&fd[]=6&fd[]=5&fd[]=

А вот к примеру запрос на яндекс маркете (при выборе почти всех производителей - 1398 симолов, и это не предел), повидимому пока они не нашли другого решения, это наверное вполне удовлетворяет:
http://market.yandex.ru/guru.xml?CM...XC=1-PG=10&view=&num=&sort=&hid=90544&filter=
 
hermit_refined
Ссылки <a href=...> заменить на сабмит формы с хидден полями в которых указаны текущие критерии поиска, и подставлтся номер страницы
 
а страницу передаем по GET
Ссылки <a href=...> заменить на сабмит формы с хидден полями в которых указаны текущие критерии поиска, и подставлтся номер страницы
боюсь, вы не понимаете (как это ни странно звучит), что такое GET и что такое POST, и с чем их и когда едят.
 
а страницу передаем по GET
Боюсь я это не в тему написал(не подумал когда писал, хотя можно извратитсяс JS и отправлять GET'ом) - копайте в сторону
Ссылки <a href=...> заменить на сабмит формы с хидден полями в которых указаны текущие критерии поиска, и подставлтся номер страницы

-~{}~ 19.02.07 23:09:

<form action=...... method=POST>
<input type=hidden .........>
<input type=hidden .........>
<input type=hidden .........>
<input type=hidden name=page id=page>
</form>

onclick=setPage(12);someForm.submit();return false


Приблизительно то о чем я говорю
 
Ссылки <a href=...> заменить на сабмит формы с хидден полями в которых указаны текущие критерии поиска, и подставлтся номер страницы
хорошо. а как вы думаете, почему никто кроме вас не предложил этот замечательный вариант?..
наверное, неспроста, если есть такая возможность, отображение данных, и тем более - поиск, всегда осуществляют гетом?..
может, потому что возможность сохранить ссылку - действительно требуется?
и может, из-за ещё не менее важной причины - чертыханий пользователя при попытках нажать кнопку back?..

ничего личного, просто ваше "тук-тук" было совсем не в тему.
 
Нечего личного, но меня просто убила эта фраза
А с методом POST, так не сделать.
может, из-за ещё не менее важной причины - чертыханий пользователя при попытках нажать кнопку back?..
Хм, а вот тут действительно будут четыхания =)
 
Сверху