事情是这样的。使用了老高的缓存插件之后,每位新的评论者都会把自己的用户名·邮箱·地址的评论表单信息跟随网站,下一个访问者会依然看到这位新的评论者的用户名·邮箱·地址的评论表单信息。
大概的Bug逻辑
- 首先激活TpCache插件,选择Memcached缓存(需要服务器支持),消除所有数据
- 退出登录
- 随便给一篇文章添加评论
- 文章添加新的评论触发缓存更新
- 主题里
comments.php
中评论表单中的带有这条<?php $this->remember(''); ?>
的代码,触发记住评论者的评论表单信息 - 缓存更新将评论表单信息也缓存进去
- 然后新的用户打开该含有评论表单信息的文章,告诉给浏览器这个cookie是全站适用的
- 然后浏览器cookie了评论表单信息,全站所有文章都是这位评论者的评论表单信息
这里感谢 Tokin(www.idevs.cn) 的bug反馈。
摸清Bug逻辑之后,就马上谷歌找解决方法。可惜没有,向老高提交bug反馈估计也要等很久。
于是自己从两个角度解决这个问题:
- 修改TpCache插件
- 修改主题里的comments.php
最后最后最后,修改TpCache插件最终无功而返···
但但但修改comments.php成功解决了这个问题···
解决Bug
打开主题里的comments.php
找到
<input type="text" name="author" id="author" value="<?php $this->remember('author'); ?>" placeholder="称呼" required />
<input type="text" name="mail" id="mail" value="<?php $this->remember('mail'); ?>" placeholder="邮件" <?php if ($this->options->commentsRequireMail): ?> required<?php endif; ?> />
<input type="text" name="url" id="url" value="<?php $this->remember('url'); ?>" placeholder="<?php _e('http://'); ?>" <?php if ($this->options->commentsRequireURL): ?> required<?php endif; ?> />
将
<?php $this->remember('author'); ?>
<?php $this->remember('mail'); ?>
<?php $this->remember('url'); ?>
分别去掉
最后结果是:
<input type="text" name="author" id="author" value="" placeholder="称呼" required />
<input type="text" name="mail" id="mail" value="" placeholder="邮件" <?php if ($this->options->commentsRequireMail): ?> required<?php endif; ?> />
<input type="text" name="url" id="url" value="" placeholder="<?php _e('http://'); ?>" <?php if ($this->options->commentsRequireURL): ?> required<?php endif; ?> />
大概就这样子,Bug不再出现了···
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
请问怎么修改评论回调js,我小白一枚(非计算机专业的),用的是TE的原生评论系统。
为毛你这里又是正常的呢?
文章已经基本过时了,主题内集成了解决方法~
好吧,那我折腾不了了
这样以来,每次都得评论者填写一次评论不科学呀!我禁止TpCache插件缓存了!
??? 你可以直接在主题里加上评论回调js,这个问题早就被解决了~
请问怎么修改评论回调js,我小白一枚,啥都不懂,用的是TE的原生评论系统。
这个主题真的不错
谢谢,已经在制作新主题,尽力新年前换掉 :)
我觉得博主还是不用对那一块改动比较好吧,毕竟我觉得不是每一个人都会使用那个缓存插件的,主题还是调用cookie比较方便,不然每次评论一次都要输入一次信息好累。
其实我也想不动,但目前我找不到更适合缓存的插件,问题是我现在用了这个插件,要保证用户的信息的基本安全。
这个问题我也发现过,但没有解决。看了博主的解决过程感觉还是蛮好的。
唉,没办法,其实这样反而安心很多,因为对其他评论用户无骚扰···