
E-shop opencart obsahuje (obsahoval) drobnou chybu ve vyhledávání. Jde o to že při pokusu vyhledat produkt který není aktivní dojde i tak k jeho nalezení. Naštěstí produkt nejde dále zobrazit, tzn. ani objednat.
Chyba je v modulu /catalog/controller/search.php, řádek 48:
select * from product p left join product_description pd on (p.product_id = pd.product_id) left join image i on (p.image_id = i.image_id) where pd.language_id = '?' and pd.name like '?' or pd.description like '?' and p.date_available < now() and p.status = '1'
.
Chyba není na první pohled vidět, ale chybí zde závorky okolo vyhledávací formulace, tedy:
select * from product p left join product_description pd on (p.product_id = pd.product_id) left join image i on (p.image_id = i.image_id) where pd.language_id = '?' and (pd.name like '?' or pd.description like '?') and p.date_available < now() and p.status = '1'
.
Bez závorek SQL bere příkaz OR jako vyznamější takže dojde k vynechání části and p.status = '1'