ecshop 导航栏bug

2009-05-26 00:34 来源:www.chinab4c.com 作者:admin

    在ecshop某个版本,或许是某人修改后又放在网络上开源之后,发现导航有个严重的问题,当被选种的类别,有时候好几个都处于被选中的状态.我认真分析了一下get_navigator()函数,发现里面有一代码不安全,if(strpos($cur_url, $v['url']) === 0) ,这里有明显的bug .

  有category.php?id=2 和 category.php?id=21,如果选了category.php?id=21,那么id=2也处于被选种状态,因为strpos('category.php?id=21','category.php?id=21') === 0 并且 strpos('category.php?id=21','category.php?id=2') ===0 所以都被选中了.

 解决办法

  $condition = empty($ctype) ? (strpos($cur_url, $v['url']) === 0) : (strpos($cur_url, $v['url']) === 0 && strlen($cur_url) == strlen($v['url']));
        if ($condition)
        {
            $navlist['middle'][$k]['active'] = 1;
            $noindex = true;
            $active += 1;
        }

     或者直接用==符号来判断.

 来源:中国B4C电子商务