Большой Воронежский Форум
» Программирование>PHP, GET и Explorer - проблема с массивом переменных
Доброход 20:39 28.04.2011
Привет.

Столкнулся с такой проблемой.
Есть форма. У нее есть чекбоксы - варианты одной переменной.
Передаются массивом - с квадратными скобками.
Т.е. имя переменной param_20[], к примеру.


Все стандартно как в букваре - но странная проблема, IE при обработке запроса методом GET (это так стандартно в движке передается данная форма) заменяет квадратные скобки на символьные коды

и вместо param_20[]=43&param_20[]=44
получается param_20%5B%5D=42&param_20%5B%5D=43&param_20%5B%5D =44

и ничего не работает соответственно.

Кто-нибудь может сталкивался с таким? Как это поправить, обойти?

Спасибо.

http://mimoda.ru/category/men_jeans/ - форма на этой странице, "размеры". [Ответ]
Constantine 08:30 10.05.2011
У вас проблема не в этом.

То, как браузер кодирует символы при передаче вас не должно волновать (URL-encoded strings нормально воспринимаются со стороны пхп и из кода будут видны все те же символы [], вне зависимости от того, как они выглядят в урле).

В коде формы я вижу, что все чекбоксы имеют одинаковое значение name. А эти значения обязаны быть уникальными по стандарту. Поскольку ваша реализация ему не соответствует, браузер вправе вести себя как угодно

Кроме того, символы [] вероятнее всего не валидны в качестве части name.

Как поправить - используйте уникальное name для каждого чекбокса.
[Ответ]
Yandex 10:50 10.05.2011
Constantine, использование скобок - это трюк такой. Сам использовал несколько раз, в том числе и в IE.

Автор не указал версию IE. Большие подозрения на имя переменной - param_20. Стоит попробовать именовать без подчеркивания. [Ответ]
Constantine 22:39 10.05.2011

Сообщение от Yandex:
Constantine, использование скобок - это трюк такой. Сам использовал несколько раз, в том числе и в IE.

Автор не указал версию IE. Большие подозрения на имя переменной - param_20. Стоит попробовать именовать без подчеркивания.

Ну трюки, они такие, могут не работать

Вообще, имхо, проблемы от лени. Пользуйтесь стандартами - меньше вероятность наткнуться на косяк в ИЕ.

Кстати, в чем фишка передачи чекбоксов в качестве булевского массива? Где вероятность, что значения чекбоксов будут отправлены в правильном порядке? Массив-то может быть заполнен в разном порядке. А разбор параметров со скобками происходит не на клиенте, а на стороне пхп, так что это потенциальная проблема.
[Ответ]
Вверх