finecms2.7.3搜索显示关闭内容bug

By | 2016/01/06

BUG表现

通过模块的搜索功能,搜索条件包含栏目分类的时候,会把后台已经关闭的内容同时搜索出来。而根据规则,已经关闭的内容应该被过滤掉才对。

问题分析

代码位于dayrui\models\Search_model.php,关键代码如下:

// 搜索关键字条件
$where = array();
$where[] = ‘`’.$table.’`.`status` = 9′;
if ($keyword != ”) {
$where[] = ‘(`’.$table.’`.`title` LIKE “%’.$this->db->escape_str($keyword).’%” OR `’.$table.’`.`keywords` LIKE “%’.$this->db->escape_str($keyword).’%” OR `’.$table.’`.`description` LIKE “%’.$this->db->escape_str($keyword).’%”)’;
}

……省略若干代码……

// 栏目的字段
if ($get[‘catid’]) {
$more = FALSE;
$cat_field = $module[‘category’][$get[‘catid’]][‘field’];
$where[0] = ‘`’.$table.’`.`catid`’.($module[‘category’][$get[‘catid’]][‘child’] ? ‘IN (‘.$module[‘category’][$get[‘catid’]][‘childids’].’)’ : ‘=’.(int)$get[‘catid’]);
if ($cat_field) {

 

内容是否显示通过status=9来判断,9为正常,10为关闭。“搜索关键字条件”部分在where[0]中初始化了status的条件,但奇葩的是“栏目的字段”又出现了$where[0]这样一个赋值,直接导致了status的覆盖,不出问题才怪。

BUG修复

修复方法十分简单,直接把$where[0]修改为$where[]即可。

PS:

1.此问题至少在2.7.0-2.7.3之间的版本存在,问题未提交官方,估计会存在一段时间;

2.show也存在一定的问题。按理说关闭的文章内容是不应该打开的,但是经测试即使关闭了,文章内容照样可以打开。此问题未深究。

One thought on “finecms2.7.3搜索显示关闭内容bug

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据