原理

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>
最后修改:2021 年 04 月 20 日
如果觉得我的文章对你有用,请随意赞赏