Сохранение переменной плагина для неавторизированного пользователя

День добрый!

Столкнулся со следующей бедой - плагин отрабатывает и должен записать в сессию нужную переменную, которая потом используется при оформлении заказа. Если пользователь залогинен в webasyst как контакт, то всё проходит нормально. Но если пользователь новый (сами понимаете, самый частый случай) - система возвращает сообщение "Сессия истекла". То есть пользователь не создан, сессия для него пуста, хотя мы уже находимся на стадии оформления заказа и ввели имя клиента и номер телефона (т.е. первый шаг пройден)
Отсюда вопрос - что не так? Или принудительно запускать сессию, или сохранять параметры как-то еще.
Буду очень благодарен за любую помощь.

1 ответ

  • 0
    В сессию пишите методом wa()->getStorage()->set()?
    В какой момент пишется значение в сессию? В какой считвается?
    Опишите ситуацию подробнее. Возможно, найдёте ошибку в коде, пока будете описывать :)
    • 0
      Snapix Snapix 12 мая 2014 09:24 #
      Спасибо за ответ!
      Сейчас пишу значение через $wa->getStorage()->write() , есть ли разница в этих двух методах (write() и set())?
      Значение (пытается) пишется на этапе оформления заказа (шаг №2 страницы checkout), после того, как клиент ввел свои контактные данные и перешел на шаг №2 (у меня там условия доставки). На этом шаге приложение выводит форму, в которую вводятся данные (при помощи AJAX). На основе этих данных должна выставиться нужная переменная, но в ответе JSON приходит сообщение "сессия истекла". Если же я проделываю точно такие же операции, но будучи залогиненым (в бэкенде), всё проходит на отлично. То есть разница - в не стартанувшей сессии для незалогиненого пользователя (как я понимаю проблему)
      • 0
        Разницы между write() и set() нет — см. wa-system/storage/waSessionStorage.class.php:
        public function set($key, $data)
        {
        $this->write($key, $data);
        }

        В переменной $wa у вас что хранится?
        Пробовали логировать значение переменной сессии сразу после записи, чтобы проверить, что туда вообще записалось?
        Каким кодом формируется ответ на AJAX-запрос? Попробуйте максимально сократить объём кода, чтобы сузить "круг подозреваемых".

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите