Когда я отправляю форму с несколькими флажками с таким же именем, я получаю URL-адрес, который выглядит примерно так: www.mysite.com/search.php?myvalue%5B%5D=value1&myvalue%5B%5D=value2
Есть ли что-то, что я могу удалить% 5B% 5D, чтобы сделать URL «симпатичным», с чем-то вроде htaccess?
Код:
<form> <input type="checkbox" name="myvalue[]" value="value1"> <input type="checkbox" name="myvalue[]" value="value2"> </form>
Есть ли что-то, что я могу удалить% 5B% 5D, чтобы сделать URL «симпатичным», с чем-то вроде htaccess?
Нет. []
Являются зарезервированными символами в URL-адресах, поэтому они обязательно должны быть закодированы в URL-адресах .
Если использование POST не является вариантом, что имеет смысл, учитывая, что это форма поиска, лучше всего дать им каждое другое имя со значением 1 или около того.
<form> <input type="checkbox" name="option1" value="1" /> <input type="checkbox" name="option2" value="1" /> </form>
Или, если вы действительно настаиваете на том, чтобы они имели одно и то же имя, тогда вы должны сами извлекать строку запроса, вместо того чтобы полагаться на специфичную для PHP функцию возврата массива при получении параметра с суффиксом []
в имени.
$params = explode('&', $_SERVER['QUERY_STRING']); foreach ($params as $param) { $name_value = explode('=', $param); $name = $name_value[0]; $value = $name_value[1]; // ... Collect them yourself. }
Таким образом, вы можете просто использовать бесцельное имя.
<form> <input type="checkbox" name="option" value="option1" /> <input type="checkbox" name="option" value="option2" /> </form>
[
и ]
являются зарезервированными символами в URL-адресе, поэтому браузер должен закодировать их, чтобы URL-адрес работал правильно. Вы не можете иметь эти символы в URL-адресе. Вы также не можете использовать любые другие зарезервированные символы, такие как пробелы, амперсанды и т. Д. Все они будут автоматически закодированы для вас (во многих случаях, даже если вы вводите URL-адрес в браузере вручную).
Если вам нужен «симпатичный URL», вы можете:
Не использовать форму вообще; укажите ссылку на известный «симпатичный» URL-адрес.
Примите уродливый URL-адрес, но перенаправляйте его сразу на симпатичный URL-адрес в пункте 1 выше.
Избегайте использования угловых скобок вообще в именах полей (но это также означало бы много изменений в вашем заднем коде)
Используйте метод POST
в форме, чтобы данные поля вообще не отображались в URL-адресе (но это означает, что у вас нет ссылки, которую пользователь может добавить в закладки).
Если вы должны «прикрыть» этот URL-адрес, моим предложением будет вариант 2 выше.
Честно говоря, я бы не стал беспокоиться об этом. Люди получают waaaay, чтобы подчеркнуть «красивые» URL-адреса. Я не понимаю почему.
&
и =
повсюду. Закодированные скобки действительно не ухудшают ситуацию. Поэтому мой честный ответ: не потеть. Это нормально; игнорируй это; займитесь более важными частями вашей работы по разработке веб-сайтов.