当前位置:首页 > 包含标签 Emlog 的所有文章

Bug描述

今天论坛有人说评论有BUG,我看了一下,无意中注意到isLogCanComment函数。

function isLogCanComment($blogId) { if (Option::get('iscomment') == 'n') { return false; } $query = $this->db->query("SELECT allow_remark FROM ".DB_PREFIX."blog WHERE gid=$blogId"); $show_remark = $this->db->fetch_array($query); if ($show_remark['allow_remark'] == 'n' || $show_remark === false) { return false; }else { return true; } }

以上是isLogCanComment函数的代码,数据库(连接方式使用mysqli)查询$show_remark的值应该是空值NULL,所以不能用===false。

注意:数据库连接方式使用mysqli就会出现这个问题

影响就是POST伪造gid,可以把评论发布到不存在或者未审核未发布的文章下,影响应该不大。

emlog文章连接使用gid自增号作为文章的ID,但是由于后台有删除文章的功能,一旦删除文章那么gid自增就会出现断号。

其实断号问题解决很方便,第一种是不删除文章,采用转为草稿再重新编辑发布的方法,适用于没有删除过文章的。第二种是只要在添加文章的时候判断gid之前的有没有断号问题,有的话直接插入,没有的话自增。

这里主要讲讲第二种需要如何解决,把gid自增段顺序读取作为值写入数组,自增段是从1开始的,但是数组键值是0开始的,那么先把数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,然后只要发现$gidarr键和键值不等就是断号了。

找到我们的addlog添加文章和页面函数。路径在include/model/log_model.php。

原始代码:

emlog 6.0.0正式版本的发布,趁着有时间,对自己的博客程序也进行了升级。

对比下emlog5.3.1和emlog6.0.0发现程序变化不大,主要是对tag标签进行了优化。


升级方法:

1、确定程序是emlog5.3.1(本程序是对照5.3.1和6.0.0做的);

2、备份网站系统和数据库(非常重要);

3、下载update.zip(下载地址在文章最后),解压把update.php上传到网站根目录,同config.php同一个目录;

4、浏览器访问update,按照提示输入数据库密码,确认等待升级完成;

PHP7出来一段时间了,据说PHP7可以性能翻倍。而且我的服务器上也已经开通了PHP7,就开始折腾下Emlog5.3.1。


直接在php7安装emlog5.3.1各种报错。emlog5.3.1虽然已经出了使用mysqli连接类,但是为了兼容性还是默认是使用了mysql。因为PHP7已经不支持mysql扩展了,但是支持mysqli和pdo_mysql。所以这里还是介绍如何使用mysqli来安装emlog。


以下是修改emlog安装程序,无报错安装。如果是实际环境请在本地环境模拟后成功后再更换。

1、修改include\lib\option.php,大概11行修改为mysqli

看到emlog BBS有人需要这个代码(emlog统计指定时间内发表的文章数量),所以简单的写一下。

通过log_model.php中的模块函数getLogNum不用自己费力的去写函数了,直接构造数据库查询语句就可以使用这个函数来读取emlog文章数量了。

PS:只要你去研究emlog的核心代码,很多代码都是可以通过emlog自带的核心代码来实现效果的,不用费力不讨好的自己去写数据库查询函数。还能不破坏emlog速度和稳定性。


以下是这段代码,你可以在模版文件的任何地方使用,这个只是简单写一下,当然这个还可以写成函数的格式。建议使用的时候自己改写成函数形式来使用。