Товары остаются в корзине после завершения заказа

Тема в разделе "Ошибки и их решения", создана пользователем lemche, 11 ноя 2015.

  1. lemche

    lemche Новичок

    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте!

    Сегодня выяснилось, что товары остаются висеть в корзине у зарегистрированных пользователей даже после того, как заказ получил статус завершенный.

    UPD: они появляются в корзине снова при начале новой сессии, после удаления вручную.

    Версия 2.0.3.1 (rs.2), шаблон стандартный.

    Решения в интернете не нашла, так что буду рада любому совету.

    Спасибо!
     
    Последнее редактирование: 11 ноя 2015
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    т.е заказ оформился и товаров нет в корзине. Потом открываем опять браузер и они появляются?
     
  3. lemche

    lemche Новичок

    Сообщения:
    6
    Симпатии:
    0
    Ravilr, заказ оформился, товаров нет в корзине, пользователь логинится в следующий раз и они появляются
     
  4. lemche

    lemche Новичок

    Сообщения:
    6
    Симпатии:
    0
    + пользователь жаловался, что товар из прошлого заказа появлялся при добавлении новой позиции. то есть, корзина была пустая, добавили новый товар, в результате их оказалось два.
     
  5. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    922
    Симпатии:
    240
    Сайт покажите. Очень интересно. Может у вас там скрипт левый стоит или у пользователя вирус какой.
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    вообще может и ошибка. Надо потестировать. В опенкарте после 2.0.3.1 много чего с сессиями делали, видимо из за таких багов.
     
  7. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    мне не удалось повторить такого как у вас. Проверил на локалке.. работает отлично.
    Вы сами у себя пробовали так ?? Получилось??
    Или только по слухам пользователей?
     
  8. lemche

    lemche Новичок

    Сообщения:
    6
    Симпатии:
    0
    Товары из прошлых заказов при добавлении нового у меня не появлялись. Тут повторить не получилось.

    Но если зайти в магазин под другими пользователями, товары из последнего заказа у них висят.
    Тут я человек 10 проверила.

    Нашлось решение. На первый взгляд работает, будем тестировать тщательнее и отпишемся по результатам.

    в catalog/model/checkout/order.php
    добавить строчку: $this->cart->clear();
     
  9. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    Все и так есть, при success
    HTML:
    class ControllerCheckoutSuccess extends Controller {
        public function index() {
            $this->load->language('checkout/success');
    
            if (isset($this->session->data['order_id'])) {
                $this->cart->clear();
    конечно висят, если они не удалились при оформлении или не дооформили..
     
  10. Lazy_Den

    Lazy_Den Новичок

    Сообщения:
    4
    Симпатии:
    0
    Пардон, что поднимаю старую тему, но баг, по крайней мере в версии 2.1, присутствует. Всё дело в том, что зайдя в редактирование товара в админ. части, в корзину (таблицу `cart`) добавляется запись, как если бы товар добавлял покупатель и кроме всего прочего, в эту таблицу записывается ID покупателя. По понятным причинам, если в это же время на сайте крутится этот покупатель, то по его ID вытягиваются и записи из таблицы `cart`. Но это еще не всё... После того, как вы завершили редактирование товара в админке, запись из таблицы `cart` не удаляется. Поэтому, если и не было покупателя в этот момент на сайте, а он зашёл через лет 150, то всё равно в корзине он обнаружит свой заказанный товар. Для полной уверенности, проверял на абсолютно девственном движке, без единого плагина/расширения и т.д.

    P.S. На этой информации я хотел остановится, но понимаю, что будут вопросы о том, как это пофиксить. Пожалуй, я промолчу о качестве этой CMS в целом, т.к. на форуме почитателей оной, было говорить неуместно, но мне пришлось переписать не менее 80% процентов кода и мои решения не подойдут к стандартному коду. Единственное, что могу предложить - это очищать корзину после сохранения редактирования заказа в админке (catalog\controller\api\order, метод edit) и после этого редирект к списку заказов (можно на уровне JS, после успешного завершения ajax-запроса). По крайней мере, это избавит покупателя от недоумения , когда он зайдёт в следующий раз.
     
  11. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    если бы был, то тут бы 1000 тем уже создали про это.

    Проблема возникает от сторонних факторов. И после завершения оформления заказа все хорошо, корзина очищается.
    Другое дело, когда вы редактируете заказ.. и на это тоже есть выход. Вроде обсуждали..
     
  12. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    почему бы и нет. Код переписывается постоянно (в версии 2.3 переписали 80% наверно) и вы тоже можете переписать его. Выложить на гитхаб.. все будут только рады.
     
  13. Lazy_Den

    Lazy_Den Новичок

    Сообщения:
    4
    Симпатии:
    0
    Прежде всего, я хочу акцентировать внимание на том, что мы говорим о версии 2.1 и особо подчеркну, что холиварить ни с кем принципиально не буду.
    А многие знают о том, что в OC есть Remote File Include (RFI), Cross Site Scripting (отражённый), уязвимость к SQL-инъекцииям, External Redirect, отсутствии заголовков X-Frame-Options, Parameter Tampering, Cookie No HttpOnly Flag, Cross-Domain JavaScript Source File Inclusion, остутствии Web Browser XSS Protection и Anti-MIME-Sniffing header X-Content-Type-Options и т.д.? А ведь вся эта беда сплошь и рядом присутствует в ОС. Думаю, что 99% пользователей форума, даже некоторых слов таких не знают. А знаете почему? Потому, что они обычные пользователи, которые мало что понимаю в программировании и слепо используют то, что им дают. А дают, по сути, бесплатный сыр в мышеловке. Поэтому можете мне не рассказывать про "1000 тем" ;)

    А проверить мои слова очень легко:
    1. Скачиваете и устанавливаете OC 2.1.0.1
    2. Для чистоты эксперимента, открываете два браузера
    3. В одном браузере регистрируетесь и заказываете товар. Корзина очистилась.
    4. Во втором браузере, заходите в редактирование заказа и доходите хотя бы до второй этапа (Закладка Products)
    5. Теперь возвращаемся в браузер с покупателем, обновляем страницу смотрим в корзину.
    Можете продолжить редактирование вплоть до сохранения и выхода, но результат останется прежним. Особым "приятным" сюрпризом будет то, если пользователь удалит из корзины этот "внезапный" товар, а в это время вы его редактировали. О результате вы можете догадаться ;) Успехов.
     
  14. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    тоже не собирался. Удачи. ;) Если есть что по делу, пишите.. а так, все это болтология..
     
  15. Allaur

    Allaur Пользователь

    Сообщения:
    63
    Симпатии:
    2
    Добрый день
    ОС 2.1х
    После удаления товара на странице оформления заказа, товар в корзине остаётся висеть
    upload_2020-7-22_12-10-23.png
    При перезагрузке страницы товар в корзине пропадает.
    Есть ли решение этой проблемы?
    Прошу помощи!
     
  16. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Тема не стандартная. Может быть все что угодно. Автор шаблона вам поможет.