PHP Notice: default_view и selected_views

Multi-Vendor 4.14.2.SP1 RU

На странице микромагазина продавца есть блок выбора категорий с линками вида www.example.com/vendor_name/?category_id=10

Если в category_id подсунуть недопустимое (несуществующее) значение, то в логах веб-сервера две ошибки:

Undefined index: default_view in app/functions/fn.products.php on line 2766
Undefined index: selected_views in app/functions/fn.products.php on line 2767

$_layout = db_get_row(“SELECT default_view, selected_views FROM ?:categories WHERE category_id = ?i”, $params[‘category_id’]);
$category_default_view = $_layout[‘default_view’];
$category_views = unserialize($_layout[‘selected_views’]);

После запроса к базе нет проверки на содержимое ответа.

3 лайка

А можно поинтересоваться, зачем подсовывать недопустимое (несуществующее) значение, и кому это может понадобится? :no_mouth:

Я спалил за этим занятием поискового бота от хуавея )) Он по какой-то китайской логике перебирал цифры и плодил тем самым нотисы в логах. Да и вообще, есть у меня дурацкая привычка стремления к перфекционизму. По моему скромному мнению, никакое событие не должно приводить к ошибкам. При разборе url вопрошающему нужно отдать либо подходящую страницу, либо послать его на… 404 ))

Подтверждаю данное поведение — такие нотайсы это как минимум мусор в логах для тех кто не юзает модули SEO Templates или Antibot от Alexbranding

Пока разработчики заняты чем-то очень важным (например, изучают мнение форумчан о характеристиках, фильтрах и статусах) позволю себе предложить своё скромное решение бага, описанного мной 24 ночи назад.

Решение неофициальное:
файл /app/controllers/frontend/companies.php
строка 343

    }

заменить на

    } else {
        return [CONTROLLER_STATUS_NO_PAGE];
    }

2 лайка

Добрый день! Благодарю вас за обращение и приношу извинения за задержку.

Я сформировал репорт для наших разработчиков на изучение наличия данной проблемы. В случае ее подтверждения - будет взято в работу для разработки фикса.

С Уважением, Серж
Специалист поддержки CS-Cart

1 лайк

И снова здравствуйте!

Наш разработчик ответил, что предоставленной информации недостаточно для точного воспроизведения данного бага. Пришлите пожалуйста подробно и поэтапно какие шаги вы предприняли в воспроизведении. Скриншоты приветствуются. Заранее спасибо!

  1. мультивендор (ну это и так вроде ясно). жаль, что у вас нет открытой демки для мультика.
  2. установлен и включен модуль vendor_plans (Тарифные планы для продавцов)
  3. в настройках тарифного плана включен микромагазин (и соответственно есть продавец с этим тарифным планом)

на странице www.example.com/index.php?dispatch=companies.catalog выбираем продавца с тарифом, в котором есть микромагазин
переходим в любую категорию


в адресной строке видим урл www.example.com/vendor123/?category_id=16

category_id в урле правим на число которого точно нет в базе, например: 123123123123123123123123
www.example.com/vendor123/?category_id=123123123123123123123123

ловим в лог ошибки

Спасибо за внимание, рад ответить на уточняющие вопросы ))

2 лайка

без ошибок:
https://dev.demo.mv.cs-cart.com/stores/2d8822c293a95baa/simtech/?category_id=222

с ошибками:
https://dev.demo.mv.cs-cart.com/stores/2d8822c293a95baa/simtech/?category_id=22

1 лайк

Добрый день, благодарю вас за предоставленную информацию!

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

2 лайка

Здравствуйте, @Alexander.M!
Спасибо за подробное описание, оно помогло быстро решить проблему. Исправление войдет в следующий релиз Multi-Vendor.
Для исправления проблемы собственными силами можно использовать патч:


О том, как применить патч, можно прочитать в нашей документации: https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html

1 лайк

Патч в обновлении Multi-Vendor 4.14.3 RU не обнаружен.

Фикс будет включен в версию 4.14.4

1 лайк