2010-04-30 1 views
2

Таким образом, сайт, на котором я работаю, имеет систему фильтров, которая управляет передачей ключа и системы значений через запрос.UrlEncoding-Safe Delimiter

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

Текущий формат выглядит так:

cf=<key>:<value>

Проблема заключается в том, что я в последнее время столкнулся с проблемой, потому что некоторые из наших новых значений для этого фильтра содержит : в них. То есть: cf=MO_AspectRatio:16:10

значениеявляется быть UrlEncoded, но браузеры ДЭ-кодирование% 3a в: на лету, потому что: по своей природе не нарушать URLs.

Мне нужны некоторые предложения для URL-адресов в безопасности разделителей, которые не :, -, _, &, ?, что имеет смысл. Я не ищу решение вроде () или что-то дикое.

ответ

4

А как насчет трубы?

cf=MO_AspectRatio|16:10 
0

Наиболее прямым решением является base64 кодировать всю строку, а затем base64 декодировать ее на входе.

Еще один вариант - удвоить его дважды перед выходом, а затем urldecode он один раз на входе (будет автоматический urldecode, сделанный на всех входах php или, возможно, apache не уверен, кто это делает).

2

This Wikipedia article полезно узнать больше о незарезервированных и зарезервированных персонажах.

До сих пор tilde ~, вероятно, является лучшим вариантом. Но все еще есть шансы, что рано или поздно он сломается. Или вы должны правильно документировать и проверять его на входе пользователя.

2

URI scheme generic syntax допускает два действительных разделителя параметров: & и ;. Я всегда видел первое, и никогда не позже. Для правильной идентификации начала строки запроса необходим символ ?, поэтому я бы не рекомендовал его использовать. То же самое касается /, используемого на URL-адресах.

Любой символ, который не является одним из этих и не является частью ваших значений, является приемлемым. Вот список возможных, отсортированный по собственному выбору, не считая тех, которые вы явно бракованных:

,+|#$!

Любой из них должен делать.

Кроме того, даже если вы специально просили не: В будущем рефакторинг попытаться использовать реальные параметры URI (используя &). Сэкономит вам много головных уборов.

+0

Да, это план повторной сборки сайта или, возможно, повторная сборка механизма фильтра для текущего. Сегодня меня больше интересовали изменения данных, не нарушающие существующие функциональные возможности. Спасибо :) – Aren

 Смежные вопросы

  • Нет связанных вопросов^_^