yy日韩无码,富婆的诱惑,国产菊爆视频在线观看,国产精品无码AV高清波波AV,国产成人啪精品视频站午夜,已满十八岁免费观看电视剧十八岁,中文字幕av久久人妻蜜桃臀

LOGO
外貿(mào)網(wǎng)站建設,讓業(yè)務全球可達
0%
新聞中心 網(wǎng)絡推廣 網(wǎng)站建設 服務器相關(guān) 優(yōu)化推廣 首頁>新聞>網(wǎng)站建設

PBOOT篩選邏輯上是模糊篩選,在特定條件下出現(xiàn)的BUG

時間:2026-01-19   訪問量:0

問題是這樣的,在做一個網(wǎng)站篩選的時候,客戶的篩選項中是包括:床,床頭柜

PBOOT篩選邏輯上是模糊篩選,在特定條件下出現(xiàn)的BUG

由于篩選是模糊匹配的,所以在選擇床之后,產(chǎn)品床頭柜的產(chǎn)品也會被篩選出來。

通過查詢代碼發(fā)現(xiàn),在:ParserController.php中的篩選代碼中,parserSelectSonRowsLabel的函數(shù)方法是:

$where1[] = $filter[0] . " like '%" . escape_string($value) . "%'";

$where2[] = "FIND_IN_SET('" . escape_string($value) . "', a.tags)";

以及

 // 擴展字段數(shù)據(jù)篩選
                    foreach ($_GET as $key => $value) {
                        if (preg_match('/^ext_[\w\-]+$/', $key)) { // 其他字段不加入
                            $isselect = true;                            
                            if (strpos(get($key, 'vars'), ',') !== false) {
                                $selects = explode(',', get($key, 'vars'));
                                $selects_where = [];
                                foreach ($selects as $key2 => $value2) {
                                    $selects_where[] = FIND_IN_SET_AUTO($value2, "e.".$key);
                                }
                                $where3[] = "(" . implode(' OR ' , $selects_where) . ")";
                            } else {
                                $where3[$key] = get($key, 'vars');
                            }
                        }
                    }


所以我們需要將其修改成精確匹配:

 $where1[] = "FIND_IN_SET('" . escape_string($value) . "', " . $filter[0] . ")";
 $where2[] = "FIND_IN_SET('" . escape_string($value) . "', a.tags)";


以及:

foreach ($_GET as $key => $value) {
    if (preg_match('/^ext_[\w\-]+$/', $key)) {
        $isselect = true;
        $vars = get($key, 'vars');
        if (strpos($vars, ',') !== false) {
            $selects = explode(',', $vars);
            $selects_where = [];
            foreach ($selects as $value2) {
                $selects_where[] = "FIND_IN_SET('" . escape_string($value2) . "', e.".$key.")";
            }
            $where3[] = "(" . implode(' OR ', $selects_where) . ")";
        } else {
            $where3[] = "FIND_IN_SET('" . escape_string($vars) . "', e.".$key.")";
        }
    }
}


修改之后就可以了。

服務咨詢
1對1咨詢,專業(yè)客服為您解疑答惑
聯(lián)系銷售
15899750475
在線咨詢
聯(lián)系在線客服,為您解答所有的疑問
ARE YOU INTERESTED IN ?
感興趣嗎?

有關(guān)我們服務的更多信息,請聯(lián)系項目經(jīng)理

15899750475 楊先生