Emlog评论BUG修复方法

2015年7月2日

Finally

评论 emlog BUG

  1. 首页
  2. emlog
  3. Emlog评论BUG修复方法
6条评论 收藏

Emlog评论BUG修复方法

  今天,我在自己博客测试的时候发现用户的评论自己是没法看到的,更别说管理了。于是,就问独狼,他让我反馈给EM的开发组,但是,基于6快出了,我想开发组应该不会去管了,于是我让独狼帮解决这个BUG,他经过好几次的测试发现是EM内核的原因,出现点是在include/model/comment_model.php第40行,你会发现一个b.author=UID的信息,这什么意思呢,b就是前面的emlog_blog表了,author就是用户作者ID,EM后台本身是存有一个用户增加的功能的,那增加一个用户后,你只要登录了后台前台文章中就不需要填写用户个人信息了,但这却给了评论提交的一个错误了,他提交并不是获取的单一用户名称,EM是先检测的用户昵称是否为空,为空则获取用户管理帐号,有昵称则获取昵称,那这样提交到数据库中comment表里面的poster就出现了2个用户名称了,而且用户登录过后台过去评论管理页面是无法查看到用户所评论的内容与评论在哪篇文章的。

如果没有改动,用户在后台是看不到评论管理的


解决方法:

  1、打开include/model/comment_model.php在大概40行

$andQuery .= ROLE != ROLE_ADMIN ? ' and b.author='.UID : '';

修改为

$CACHE = Cache::getInstance();
$user_cache = $CACHE->readCache('user');
$names = addslashes($user_cache[UID]['name']);
$andQuery .= ROLE != ROLE_ADMIN ? " and a.poster='$names'" : '';


  2、打开include/controller/comment_controller.php在大概21行

$name = addslashes($user_cache[UID]['name_orig']);

修改为

$name = addslashes($user_cache[UID]['name']);

  3、打开include/lib/cache.php找到用户信息缓存将以下代码覆盖保存

 private function mc_user() {
        $user_cache = array();
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user");
        while ($row = $this->db->fetch_array($query)) {
            $photo = array();
            $avatar = '';
            if(!empty($row['photo'])){
                $photosrc = str_replace("../", '', $row['photo']);
                $imgsize = chImageSize($row['photo'], Option::ICON_MAX_W, Option::ICON_MAX_H);
                $photo['src'] = htmlspecialchars($photosrc);
                $photo['width'] = $imgsize['w'];
                $photo['height'] = $imgsize['h'];

                $avatar = strstr($photosrc, 'thum') ? str_replace('thum', 'thum52', $photosrc) : preg_replace("/^(.*)\/(.*)$/", "\$1/thum52-\$2", $photosrc);
                $avatar = file_exists('../' . $avatar) ? $avatar : $photosrc;
            }
            //$row['nickname'] = empty($row['nickname']) ? $row['username'] : $row['nickname'];
            $user_cache[$row['uid']] = array(
                'photo' => $photo,
                'avatar' => $avatar,
                'name_orig' => htmlspecialchars($row['nickname']),
                'name' => htmlspecialchars($row['username']),
                'mail' => htmlspecialchars($row['email']),
                'des' => htmlClean($row['description']),
                'ischeck' => htmlspecialchars($row['ischeck']),
                'role' => $row['role'],
                );
        }
        $cacheData = serialize($user_cache);
        $this->cacheWrite($cacheData, 'user');
    }

修改好cache.php后前往后台数据更新缓存记录,以上几步就是修改后台用户无法查看评论列表的方法了。

在此,感谢独狼

  • 打赏支付宝扫一扫
  • 打赏微信扫一扫
  • 打赏企鹅扫一扫

本文标签: 评论 emlog BUG

版权声明:若无特殊注明,本文皆为《Finally》原创,转载请保留文章出处。

本文链接:Emlog评论BUG修复方法 - https://emlog.jiaozi.pro/em_bug.html

发表评论

发表评论

评论:3条评论

  • 寒星皓月 Lv.2 评论于 上海市 电信
    我是使用老司机的Emlog6.0.1,在程序后台-评论管理中-管理员进行回复评论,提交出现白屏问题。
    博主使用的是emlog那个版本?
  • 不锈钢网 Lv.1 评论于 河北省衡水市阜城县 电信
    不错的文章,内容出神入化.禁止此消息:nolinkok回复了163.com
    不锈钢网 http://www.hbbuxiugangwang.com/
  • mrxn Lv.6 评论于 黑龙江省鸡西市 联通
    貌似我没有这问题。。
个人中心
今日签到
搜索