Сеанс CI Cart прерывается из-за символа '\'

У меня есть корзина CodeIgniter, в которой хранится URL-адрес в массиве параметров. Проблема заключается в том, что при добавлении URL-адреса с '/' (например, www.website.com/page) корзина опустошается, когда пользователь покидает страницу содержимого корзины. Это поведение не зависит от браузера.

Вот как это выглядит в таблице ci_session после добавления товара в корзину.

s:56:"{"aid":"111111","url":"www.testing.again.com\/whatisup"}"

Обратите внимание, что к URL-адресу добавлен escape-символ '\'.

Итак, как я могу это исправить? Моя первая мысль - сделать str_replace, чтобы изменить '/' на что-то еще, например '|' а затем верните '/' позже. Я подозреваю, что есть лучший способ сделать это.

Спасибо.


person Dave    schedule 25.02.2012    source источник
comment
Для чего URL в корзине? Обычно вы просто кладете идентификатор объекта в корзину, а затем выбираете свойства каждого элемента по мере необходимости.   -  person Parrots    schedule 25.02.2012
comment
URL-адрес — это параметр продукта, как цвет или размер для рубашки. Поэтому я получаю некоторую информацию от пользователя, такую ​​как «помощь», URL-адрес, а иногда и номер телефона и имя. Все это входит в массив параметров корзины CI.   -  person Dave    schedule 25.02.2012
comment
Итак, я попробовал идею str_escape, и она работает, но есть ли более элегантный способ сделать это?   -  person Dave    schedule 25.02.2012


Ответы (1)


Вы можете base64_encode, base64_decode кодировать/декодировать URL. Однако, если вы не используете db_session, это займет больше места в файле cookie, что подтолкнет вас к ограничению в 5 КБ на хранилище файлов cookie, так что имейте это в виду.

http://php.net/manual/en/function.base64-encode.php

person stormdrain    schedule 27.02.2012