Можно ли сократить текст в javascript для запроса php get? - PullRequest
1 голос
/ 01 ноября 2010

У меня есть очень специфическая ситуация, когда страница javascript создает новое окно с мета-обновлением в нем, которое переходит на страницу php, которая имеет 1 переменную со всем, что вставила страница javascript. Вот так:

form.write('<meta http-equiv="refresh" content="0;URL=contentreq/index.php?data=');
Very long text with a lot of data (over 3000 characters)
form.write('" />');

Страница php выглядит так:

$data=$_GET['data'];
$order=htmlentities(stripslashes(strip_tags($order)));

Проблема в том, что существующее приложение имеет эту проблему, и я не в состоянии решить ее должным образом, поэтому мне было интересно, есть ли какой-нибудь способ зашифровать / кодировать переменную данных, чтобы она была намного короче. (Мой сервер apache не любит URL длиной 82512 символов ...) Как и tinyurl, но PHP должен иметь возможность декодировать его обратно. Я не знаю подходящего термина для этого, поэтому мой поиск в Google не дает много результатов.

Ответы [ 3 ]

3 голосов
/ 01 ноября 2010

Правильный термин для этого будет сжатие , но в этом случае он также не будет работать - общее ограничение длины URL-адреса составляет 2000 символов, потому что IE устанавливает его таким низким, и если ваши данные жесткие чтобы сжать, вы не поместите 3 КБ надежно в 2 КБ.

Единственная идея, которая приходит на ум, если вы не можете сохранить данные в сеансе PHP, - это «отправить данные вперед», используя запрос Ajax POST. Это может нести гораздо больше, чем 3 КБ. Когда запрос будет отправлен, перенаправьте на следующую страницу и попросите PHP извлечь переданные данные из сеанса или чего-то еще.

Это не красиво, но единственная идея, которая приходит мне в голову для этого очень специфического сценария.

Еще одна идея, хотя это чисто клиентская часть, поэтому вы не можете передать URL-адрес, заключается в хранении данных в локальном хранилище на стороне браузера .

Справка:

0 голосов
/ 02 ноября 2010

Сжатие - это термин, который я искал. Я перестроил функцию javascript, чтобы сделать сообщение со ссылкой, отправленной Пеккой Теперь эта штука работает с длинными запросами Bizzare.

Спасибо!

Это код, который я использовал:

document.body.innerHTML += '<form id="dynForm" action="http://example.com/" method="post"><input type="hidden" name="q" value="a"></form>';
document.getElementById("dynForm").submit();

0 голосов
/ 01 ноября 2010

Служба сокращения URL-адресов сохраняет пары хэш-URL-адресов и перенаправляет с коротких URL-адресов на длинные. Это не применимо к вашему случаю, потому что ваша часть данных URL является динамической.

Подход, который вы можете использовать, - поместить все ваши данные в файл cookie и позволить сценарию PHP считывать их из этого файла cookie. Другим вариантом будет POST-запрос к сценарию PHP, но этот может быть неприменим.

Также обратите внимание, что существуют различия между шифрованием, кодированием и сжатием. Вы спрашивали не о шифровании или кодировании, а о сжатии.

С уважением, Alin

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