栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > dedecms

升级到dedecms 5.7文档关键词代码部分细节警示

dedecms 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

升级到dedecms 5.7文档关键词代码部分细节警示

织梦58主站从dedecms 5.6 升级到5.7, 两周之后百度权重直接消失,还被惩罚了 。找了几天总算是发现到了问题,有个细节地方忘记了,文章内的描文本成全站所有文章都有,部分页还有错误。  原来dedecms 升级把 文档关键词换站全站了,害死人!

1. 原本的dedecms是文章内描文本必须是设定的关键词与文档关键词相应对称,两边有才出现描文本。
代码:

 function ReplaceKeyword($kw,&$body)
 {
  global $cfg_cmspath;
  $maxkey = 5;
  $kws = explode(",",trim($kw)); //以分好为间隔符
  $i=0;
  $karr = $kaarr = $GLOBALS['replaced'] = array();

  //暂时屏蔽超链接
  $body = preg_replace("/()(.*)(<)(/a>)/isU", '\1-]-\4-[-\6', $body);

  foreach($kws as $k)
  {
   $k = trim($k);
   if($k!="")
   {
    if($i > $maxkey)
    {
     break;
    }
    $myrow = $this->dsql->GetOne("select * from dede58_keywords where keyword='$k' And rpurl<>'' ");
    if(is_array($myrow))
    {
     $karr[] = $k;
     $GLOBALS['replaced'][$k] = 0;
     $kaarr[] = "$k";
    }
    $i++;
   }
  }
  $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\2', $karr, $kaarr, '\1')", $body);

  //恢复超链接
  $body = preg_replace("/()/isU", '\1>\3<\4', $body);
  return $body;
 }

  2.  dedecms 5.7  直接就修改成不管文章关键词有没有,只要文档内关键词存在,文章展示全部描文本。更可怕的是dedecms有bug,若同个文章有两个关键词,有包含关系,如 ecshop 与ecshop模板,描文本就加的混乱,页面还显示出代码来。  这不轻易发现 网站出现大量的描文本,不K站才怪!  
代码部分:
function ReplaceKeyword($kw,&$body)
    {
 global $cfg_cmspath;
 $maxkey = 5;
 $kws = explode(",",trim($kw));    //以分好为间隔符
 $i=0;
 $karr = $kaarr = $GLOBALS['replaced'] = array();

 //暂时屏蔽超链接
 $body = preg_replace("#()(.*)(<)(/a>)#isU", '\1-]-\4-[-\6', $body);

 
 $query = "SELECT * FROM dede58_keywords WHERe rpurl<>'' ORDER BY rank DESC"; 
 $this->dsql->SetQuery($query);
 $this->dsql->Execute();
 while($row = $this->dsql->GetArray())
 {
     $key = trim($row['keyword']);
     $key_url=trim($row['rpurl']);
     $karr[] = $key;
     $kaarr[] = "$key";
 }

 // 这里可能会有错误
 $body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe", "_highlight('\2', $karr, $kaarr, '\1')", $body);

 //恢复超链接
 $body = preg_replace("#()#isU", '\1>\3<\4', $body);
 return $body;
    }
以上代码里居然有注释: 这里可能会有错误。 作为程序代码来说,还可能有错误? 不可预见? 明明已经预见,为什么不修正呢? 不负责任!

从5.6 到5.7升级,如果不注意,很容易忽略到这个问题,进而蜘蛛来抓取,感觉页面又变化了,描写文本还有作弊嫌疑。K站呀,减权重呀!DEDECMS也不特别提醒下!   不是DEDECMS经常出漏洞,还真不想升级!  这次倒霉到了!  你呢?
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/5657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号