Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Смещение по чарам (https://javascript.ru/forum/misc/43262-smeshhenie-po-charam.html)

potomuchto 29.11.2013 01:50

Смещение по чарам
 
Здравствуйте. Мне нужно написать простенькое кодирование ссылки, таким образом, что бы сервер ее кодировал, вставлял в страницу, а жс получал и декодировал.

Для этого я смещал через char каждый символ строки на определенную величину, передавал эту величину в жс, и потом смещал в другую сторону, и я заметил, что при определенных величинах смещения ссылка декодируется неверно. Закодированную ссылку я вставлял в див, а потом с помощью innerHTML получал в переменную. Я подозреваю, что при этом действии происходит какое-то изменение строки. У меня появлялись лишниэ элементы массива (рассматривал строку, как массив). И это касалось одинарной кавычки. Она заменялась на: amp;

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

ksa 29.11.2013 09:06

Цитата:

Сообщение от potomuchto
Подскажите пожалуйста метод решения этой проблемы.

Как вариант, кодировать не "символами", а "циферками"... Закодированый УРЛ будет выхлядеть как-то так

123;10;230;22;

Где каждая циферка это код символя + некое смещение... Т.о. ты не будешь иметь особых проблем с обработкой строки...

potomuchto 29.11.2013 09:52

ksa,
А ты не знаешь в чем собственно корень проблемы? За метод спасибо, если с этой проблемой не разберусь, то наверное его использовать буду

Skipp 29.11.2013 09:55

Код в студию)

ksa 29.11.2013 10:03

Цитата:

Сообщение от potomuchto
А ты не знаешь в чем собственно корень проблемы?

При смещении ты попадаешь в "особенные" символы, они-то и парят потом мосх. :)

potomuchto 29.11.2013 13:05

Решил, что буду кодировать простым XOR, нашел функцию на жс, написал аналог на php, но возникла такая проблема. Закодированная строка содержит зарезервированные симовлы жс-а, и когда я делаю вот такое:
var str =  xor_str('`llh2''bYnYk[jahl&jm'^gjme'k`gol`j]Y\&h`h7h5*0+,).hgkl*0+,).', '8');


То соответственно получаю ошибку синтаксиса. Насколько я понимаю, проблемный символ - это ^ . Есть какая-то фича что бы эти символы не выполняли свои функции? Может писать код в куки, а потом брать в переменную из кук?

ksa 29.11.2013 13:08

Цитата:

Сообщение от potomuchto
Может писать код в куки, а потом брать в переменную из кук?

Это та же строка, которую должен прочитать JS-скрипт...

Цитата:

Сообщение от potomuchto
Насколько я понимаю проблемный символ - это ^

Отнють!
var str =  xor_str('`llh2''bYnYk[jahl&jm\'^gjme\'k`gol`j]Y\&h`h7h5*0+,).hgkl*0+,).', '8');

Это не экранированый апостров внутри апострофов...
В твоем случае их аш два! :)

potomuchto 29.11.2013 13:36

ksa,
а если вмочить по слэшу после каждого символа, а потом в жс-е разбивать на пары, забирать слэш и декодировать?

ksa 29.11.2013 13:48

Цитата:

Сообщение от potomuchto
а если вмочить по слэшу после каждого символа

Синтаксической ошибки не будет. :yes:

Цитата:

Сообщение от potomuchto
а потом в жс-е разбивать на пары, забирать слэш и декодировать?

Видал что получится...

alert('123\'45\'6789\'0'.length);

Т.ч. "забирать" ничего не нужно. Т.к. слэшей, как символов, в той строке нет.

potomuchto 29.11.2013 13:53

обрамил слэшами с помощью addslashes() и заработало, спасибо большое!


Часовой пояс GMT +3, время: 12:26.