PHP 8.x Warning в core-файле products.php — отсутствует проверка obj_prefix

@cs-cart_team
Добрый день!

Обнаружили ошибку в CS-Cart 4.20.1 при работе под PHP 8.x.

Файл: app/controllers/frontend/products.php, строка 281

Ошибка:

PHP Warning: Undefined array key "obj_prefix"

Причина:

При обработке dispatch=products.subscription_form параметр obj_prefix считывается из $_REQUEST без проверки существования:

Tygh::$app['view']->assign('obj_prefix', $_REQUEST['obj_prefix']);

Параметр obj_prefix добавляется JavaScript-ом на стороне клиента и не передаётся при прямых HTTP-запросах — в частности, при обходе страниц поисковыми ботами (Googlebot). В PHP 7.x это проходило молча, в PHP 8.x генерирует Warning.

За сутки: 503 записи в nginx error.log только с одного сайта.

Предлагаемое исправление:

// Было:Tygh::$app['view']->assign('obj_prefix', $_REQUEST['obj_prefix']);
// Стало:Tygh::$app['view']->assign('obj_prefix', $_REQUEST['obj_prefix'] ?? '');

Просим включить исправление в следующий патч.

Спасибо!

Спасибо! это известная проблема. Решение должно войти в одну из будущих версий. Предлагаемое вами исправление совпадает с тем, что предложено в задаче :+1:

1 лайк