29.11.2013, 01:50
|
Интересующийся
|
|
Регистрация: 10.11.2013
Сообщений: 12
|
|
Смещение по чарам
Здравствуйте. Мне нужно написать простенькое кодирование ссылки, таким образом, что бы сервер ее кодировал, вставлял в страницу, а жс получал и декодировал.
Для этого я смещал через char каждый символ строки на определенную величину, передавал эту величину в жс, и потом смещал в другую сторону, и я заметил, что при определенных величинах смещения ссылка декодируется неверно. Закодированную ссылку я вставлял в див, а потом с помощью innerHTML получал в переменную. Я подозреваю, что при этом действии происходит какое-то изменение строки. У меня появлялись лишниэ элементы массива (рассматривал строку, как массив). И это касалось одинарной кавычки. Она заменялась на: amp;
А если я смещал в другую сторону на сервере, то у меня в некоторых случаях символы обратно неправильно преобразовывались. Подскажите пожалуйста метод решения этой проблемы.
|
|
29.11.2013, 09:06
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от potomuchto
|
Подскажите пожалуйста метод решения этой проблемы.
|
Как вариант, кодировать не "символами", а "циферками"... Закодированый УРЛ будет выхлядеть как-то так
123;10;230;22;
Где каждая циферка это код символя + некое смещение... Т.о. ты не будешь иметь особых проблем с обработкой строки...
|
|
29.11.2013, 09:52
|
Интересующийся
|
|
Регистрация: 10.11.2013
Сообщений: 12
|
|
ksa,
А ты не знаешь в чем собственно корень проблемы? За метод спасибо, если с этой проблемой не разберусь, то наверное его использовать буду
|
|
29.11.2013, 09:55
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
Код в студию)
__________________
.
|
|
29.11.2013, 10:03
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от potomuchto
|
А ты не знаешь в чем собственно корень проблемы?
|
При смещении ты попадаешь в "особенные" символы, они-то и парят потом мосх.
|
|
29.11.2013, 13:05
|
Интересующийся
|
|
Регистрация: 10.11.2013
Сообщений: 12
|
|
Решил, что буду кодировать простым XOR, нашел функцию на жс, написал аналог на php, но возникла такая проблема. Закодированная строка содержит зарезервированные симовлы жс-а, и когда я делаю вот такое:
var str = xor_str('`llh2''bYnYk[jahl&jm'^gjme'k`gol`j]Y\&h`h7h5*0+,).hgkl*0+,).', '8');
То соответственно получаю ошибку синтаксиса. Насколько я понимаю, проблемный символ - это ^ . Есть какая-то фича что бы эти символы не выполняли свои функции? Может писать код в куки, а потом брать в переменную из кук?
Последний раз редактировалось potomuchto, 29.11.2013 в 13:10.
|
|
29.11.2013, 13:08
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от potomuchto
|
Может писать код в куки, а потом брать в переменную из кук?
|
Это та же строка, которую должен прочитать JS-скрипт...
Сообщение от potomuchto
|
Насколько я понимаю проблемный символ - это ^
|
Отнють!
var str = xor_str('`llh2''bYnYk[jahl&jm\'^gjme\'k`gol`j]Y\&h`h7h5*0+,).hgkl*0+,).', '8');
Это не экранированый апостров внутри апострофов...
В твоем случае их аш два!
|
|
29.11.2013, 13:36
|
Интересующийся
|
|
Регистрация: 10.11.2013
Сообщений: 12
|
|
ksa,
а если вмочить по слэшу после каждого символа, а потом в жс-е разбивать на пары, забирать слэш и декодировать?
|
|
29.11.2013, 13:48
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от potomuchto
|
а если вмочить по слэшу после каждого символа
|
Синтаксической ошибки не будет.
Сообщение от potomuchto
|
а потом в жс-е разбивать на пары, забирать слэш и декодировать?
|
Видал что получится...
alert('123\'45\'6789\'0'.length);
Т.ч. "забирать" ничего не нужно. Т.к. слэшей, как символов, в той строке нет.
Последний раз редактировалось ksa, 29.11.2013 в 13:51.
|
|
29.11.2013, 13:53
|
Интересующийся
|
|
Регистрация: 10.11.2013
Сообщений: 12
|
|
обрамил слэшами с помощью addslashes() и заработало, спасибо большое!
Последний раз редактировалось potomuchto, 29.11.2013 в 13:57.
|
|
|
|