前言

老高写的TpCache插件配合Redis确实是非常好用,但是一直存在一个很大的问题。当文章被评论后,评论者的个人信息也会被自动缓存下来(原本是保存在访客的cookies中的),导致下一个访客会看到上一个评论者的信息,造成信息泄露。

但是老高一直建议大家使用第三方评论系统,所以也没有去修复这个Bug。本篇文章通过修改comments.php文件解决了这个问题。

教程

首先编辑/usr/themes/你的主题/component/comments.php文件

分别找到这三个语句并全部替换为空值:

<?php $this->remember('author'); ?>
<?php $this->remember('mail'); ?>
<?php $this->remember('url'); ?>

找到下列语句;

<div id="author_info" class="hide">

并修改为:

<div id="author_info">

然后在文件底部插入一下代码:

<script>
<?php if(!$this->user->hasLogin()){ ?>
function getCookie(name){
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
        return unescape(decodeURI(arr[2]));
    else
        return null;
    }
function adduser(){   
    document.getElementById('author').value = getCookie('<?php echo md5($this->request->getUrlPrefix()); ?>__typecho_remember_author');
    document.getElementById('mail').value = getCookie('<?php echo md5($this->request->getUrlPrefix()); ?>__typecho_remember_mail');
    document.getElementById('url').value = getCookie('<?php echo md5($this->request->getUrlPrefix()); ?>__typecho_remember_url');
}
adduser();
<?php } ?>
</script>

保存即可。

参考文章:修复typecho使用缓存插件TpCache时缓存评论人的信息的问题

最后修改:2020 年 03 月 25 日 08 : 15 AM