Есть ли способ сжать строку GET, чтобы это не было так долго? - PullRequest
1 голос
/ 06 мая 2010

Мне нужно сжать строку, чтобы она была короче для формы метода GET.Есть ли способ сжать строку, и она будет расшифрована позже?Таким образом ...

?error=LOTS OF STUFFLOTS OF STUFFLOTS OF STUFFLOTS OF STUFFLOTS OF STUFF

короче в каком-то ключе

?error=somekey

, поэтому я могу получить результат позже.Желательно не использовать MySQL.

Кто-нибудь знает хороший метод для этого?

Обновление : Чтобы уточнить, я использую GET, потому что это межсайтовое включение иPOST не будет принят в переменную область включенного файла HTTP.

Ответы [ 4 ]

1 голос
/ 06 мая 2010

Я бы вместо этого использовал POST ... Или придумал бы ваше собственное сопоставление клавиш (ошибка = 1 приведёт к длинной словесной ошибке - как пример полковника Шрапнеля).

Вы также можете использовать хеш-таблицу. http://en.wikipedia.org/wiki/Hash_function

1 голос
/ 06 мая 2010

Если вы используете PHP, самый простой способ отправить сообщение об ошибке - $_SESSION. Просто скажите session_start(); вверху страниц и скажите $_SESSION['error'] = "TEXT";. Тогда isset($_SESSION['error']);.

Конечно, вы всегда можете использовать $_POST.

1 голос
/ 06 мая 2010

Самый простой способ сделать вашу GET строку короче. Используйте POST.

( Обновление: опять же, если вы контролируете, как отправляется форма, используйте POST. Используйте его. Не используйте GET. Чтобы было понятно, если вы можете использовать POST. )

Но, возможно, вам нужно передать эти данные как обычную старую ссылку. В этом случае, я думаю, вы можете попробовать функции сжатия php . Некоторые из них работают напрямую со строками.

Например, gzcompress() и gzuncompress() могут использоваться для сжатия / распаковки строки. Из руководства по PHP:

<?php
  $compressed   = gzcompress('Compress me', 9);
  $uncompressed = gzuncompress($compressed);
  echo $uncompressed;
?>

Конечно, вам придется запустить его через urlencode() и urldecode() - что, поскольку я уверен, что алгоритмы сжатия будут выводить двоичные данные, может на самом деле ничего вам не сэкономить.

Или это может вообще не работать. Было бы интересно попробовать.

Обновление : протестировано, это безумие, но оно уменьшило размер строки вашего примера.

0 голосов
/ 06 мая 2010

Не совсем «на лету», вы можете использовать Gzip, а затем кодировать base64 (но кодировка base64 увеличивает размер, я просто не знаю, насколько)

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

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