原理
3.0以上版本,oc_session表的作用是记录cookie,比如用户登录信息,随时间会越来越大,要是被人尝试登录后台更是雪上加霜。
解决方案
- 手动清除数据,利用老牌phpmyadmin清除表数据即可,注意不是删除,是清除数据。
- 写个自动执行脚本,以插件的方式安装。
- 你可以复制下面的xml代码,并命名为install.xml。压缩为bugfix_session.ocmod.zip,按照插件方法安装即可。
关键代码
<modification>
<id>Bugfix: Session</id>
<version>3.0.x-1.0</version>
<vqmver>2.5.1</vqmver>
<author>silencetime.com</author>
<file name="system/library/session/db.php">
<operation>
<search position="after"><![CDATA[$this->expire = ini_get('session.gc_maxlifetime');]]></search>
<add><![CDATA[
if ($this->db) {
// remove entries older than gc_maxlifetime seconds + 1 day
$sql = "DELETE FROM `".DB_PREFIX."session` WHERE expire < DATE_SUB(NOW(), INTERVAL ".((int)$this->expire+86400)." SECOND);";
$this->db->query( $sql );
}
]]></add>
</operation>
</file>
</modification>