Есть ли такая вещь, как слишком много переменных в запросе PHP GET? - PullRequest
2 голосов
/ 04 февраля 2011

Я пишу веб-приложение на PHP, которое по сути является дизайнером шаблонов.Пользователи вводят свои размеры, цвета и т. Д. В форму, а при отправке они видят предварительный просмотр.Все определенные переменные отображаются в URL-адресе (например, http://mysite.com/template.php?height=100&width=300&color=blue...)

. У меня есть около 100 таких переменных, поэтому нет необходимости говорить, что полученный URL-адрес может быть довольно запутанным. Не то, чтобы с этим что-то не так, но яновичок в PHP, поэтому мне просто интересно, есть ли лучший способ сделать это? Замедляет ли браузер излишне иметь 100 переменных, проходящих через GET-запрос?

Ответы [ 6 ]

5 голосов
/ 04 февраля 2011

Есть ли такая вещь, как слишком много переменных в запросе PHP GET?

Не напрямую, но URL может быть длиной всего 2083 символа в Internet Explorer (определенно в версиях до 7, не уверен на 100% о 8 и не знаю о 9). Аналогичные ограничения существуют для более старых версий Opera (я думаю, 4 КБ) и некоторых веб-серверов.

В зависимости от вашего варианта использования рассмотрите возможность хранения данных в переменных сеанса.

4 голосов
/ 04 февраля 2011

Ну, теоретически нет, практически некоторые браузеры устанавливают ограничение на длину URL.

Тема, связанная со Stackoverflow

4 голосов
/ 04 февраля 2011

Проблема в том, что некоторые браузеры поддерживают только фиксированный размер запроса URL.

Разве вы не можете отправить его как POST вместо этого?

Проверьте IE, например:

http://support.microsoft.com/kb/208427

А некоторые старые клиенты или реализации прокси поддерживают только до 255 байт ...

4 голосов
/ 04 февраля 2011

Нет, не существует максимального количества переменных, но есть максимальная длина вашего URL. См:

Какова максимальная длина URL Apache?

2 голосов
/ 04 февраля 2011

GET procotol не предназначен для обработки такого запроса, поскольку он предназначен для получения статического содержимого.

Ваш контент зависит от некоторых параметров, и POST будет более эффективным в любом случае.

Кстати, вы должны знать, что протокол GET ограничивает длину URL, и это на самом деле зависит от браузера.

2 голосов
/ 04 февраля 2011

Единственная проблема, с которой я сталкиваюсь (и с которой я столкнулся один раз), - это ограничение максимальной длины в некоторых браузерах: http://en.wikipedia.org/wiki/Query_string#Compatibility_issues

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...