Передача большого количества данных формы методом 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 символов.
 

ksnk

прохожий
Представляю себе муки паука, который пытается сохранить себе как URL строчку на 3к ... :)
А насколько оно надо? И ЗАЧЕМ такие большие объемы данных передавать методом GET?
 

HEm

Сетевой бобер
ksnk
наверное, кому то ссылку показать чтобы можно было
 

hermit_refined

Отшельник
если при изменении всяких "option" на всякие "o" проблема остается - то да, либо пост + преобразование + редирект, либо javascript - забивая на тех, кто его не включает или не имеет.
 

ksnk

прохожий
как вариант - сохранять в таблице значения массива POST и переадресовывать на ?o=md5(print_r($_POST),true). Таблицу - хранить вечно...
HEm
Если вам придет по почте строчка URL на целую страницу, вы не испугаетесь ? :) Я, например, испугаюсь и не пойду...
Гриша К.
Хотелось бы определить круг применения таких "длинных" ссылок.
 

Гриша К.

Новичок
Спасибо всем за ответы.

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

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

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

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

HraKK

Мудак
Команда форума
+1 Фанату. Никак по другому только так!!!!

Что вы курили?
почему пост такое не сделать?
hidden поля вам в зубы.
 

HEm

Сетевой бобер
ksnk
я лично испугаюсь, но пойду ;)

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

bgm

 
Автор оригинала: Гриша К.
У метода 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 в их читаемости.
 

HraKK

Мудак
Команда форума
Тук-тук. Эни бади хоме?

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

Гриша К.

Новичок
Спасибо всем за ответы.

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

Вот наглядный пример реализации: http://magazin.pozvonochnik.info/catalog/?category_id=2&sort=&desc=&from_price=&to_price=&ovd[]=20&ovd[]=&ovd[]=&ovd[]=&ovd[]=&ovd[]=14&ovd[]=&ovd[]=&fd[]=3&fd[]=11&fd[]=2&fd[]=4&fd[]=6&fd[]=5&fd[]=

А вот к примеру запрос на яндекс маркете (при выборе почти всех производителей - 1398 симолов, и это не предел), повидимому пока они не нашли другого решения, это наверное вполне удовлетворяет:
http://market.yandex.ru/guru.xml?CMD=-RR=b,7,0,0-PF=1801946+EQ+sel+1870667-PF=1801946+EQ+sel+1870551-PF=1801946+EQ+sel+1870947-PF=1801946+EQ+sel+1870535-PF=1801946+EQ+sel+1871607-PF=1801946+EQ+sel+1871023-PF=1801946+EQ+sel+3321491-PF=1801946+EQ+sel+1870215-PF=1801946+EQ+sel+1870855-PF=1801946+EQ+sel+1871299-PF=1801946+EQ+sel+1871447-PF=1801946+EQ+sel+1870187-PF=1801946+EQ+sel+1871015-PF=1801946+EQ+sel+1870683-PF=1801946+EQ+sel+1871531-PF=1801946+EQ+sel+1870531-PF=1801946+EQ+sel+1870147-PF=1801946+EQ+sel+1870863-PF=1801946+EQ+sel+1870127-PF=1801946+EQ+sel+1871499-PF=1801946+EQ+sel+1871075-PF=1801946+EQ+sel+1870379-PF=1801946+EQ+sel+3160709-PF=1801946+EQ+sel+1870743-PF=1801946+EQ+sel+1870083-PF=1801946+EQ+sel+1871371-PF=1801946+EQ+sel+3346687-PF=1801946+EQ+sel+7832212-PF=1801946+EQ+sel+3329970-PF=1801946+EQ+sel+1870555-PF=1801946+EQ+sel+1871395-PF=1801946+EQ+sel+12512572-PF=1801946+EQ+sel+3483283-PF=1801946+EQ+sel+3321243-PF=1801946+EQ+sel+1869995-PF=1801946+EQ+sel+1870007-PF=1801946+EQ+sel+3346686-PF=1801946+EQ+sel+3321485-PF=1801946+EQ+sel+3305501-PF=1801946+EQ+sel+1871387-VIS=160-CAT_ID=104236-EXC=1-PG=10&view=&num=&sort=&hid=90544&filter=
 

HraKK

Мудак
Команда форума
hermit_refined
Ссылки <a href=...> заменить на сабмит формы с хидден полями в которых указаны текущие критерии поиска, и подставлтся номер страницы
 

hermit_refined

Отшельник
а страницу передаем по GET
Ссылки <a href=...> заменить на сабмит формы с хидден полями в которых указаны текущие критерии поиска, и подставлтся номер страницы
боюсь, вы не понимаете (как это ни странно звучит), что такое GET и что такое POST, и с чем их и когда едят.
 

HraKK

Мудак
Команда форума
а страницу передаем по 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


Приблизительно то о чем я говорю
 

hermit_refined

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

ничего личного, просто ваше "тук-тук" было совсем не в тему.
 

HraKK

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