typecho 暴力解决“评论RSS”暴露隐私评论信息问题
8个月前 > 以前没有用过rss这个功能,没有发现这个问题,既然发现了就要解决,以...
为什么要过滤侧边栏评论内容?
例如:你的模板中有个私密功能,有网友使用该功能后侧边栏去能看见私密的内容这就非常不符合私密这个功能。这时候就需要通过过滤去掉相关部分内容。
理论上来说可以通过插件的接口进行过滤操作,由于本人懒就没有找这方面的代码。
/**
- @description: 获取文章摘要
- @param {*} $that 文章对象
- @param {*} $maxLength 最大长度
- @param {*} $a 是否开启表情解析
- @param {*} $b 是否开启过滤模式
- @param {*} $c 判断开启那种模式过滤
- @Date: 2023-03-25 00:12:20
- @Author: mulingyuer
/
function getArticleSummary($that, $maxLength = 120,$a = true,$b = false,$c = true)
{
//不建议在这里使用短代码解析,否者后面截取的内容会出现各种问题
$content = $that->content;
$abstract = Typecho_Common::fixHtml(Typecho_Common::subStr($content, 0, $maxLength, "..."));
if (empty($abstract)) {
$abstract = '';
}
$abstract = preg_replace('/<(.+?)>(.+?)<\/(.+?)>/',"$2", $abstract);
$abstract = preg_replace('/<(.+?)>(.+?)/',"$2", $abstract);
if ($a === true){
//注意这里是解析表情操作,如果要使用需要自行替换成相关模板中代码
$abstract = self::biaoqing(htmlspecialchars($abstract));
}else{
$abstract = htmlspecialchars($abstract);
}
//判断是否启用过滤模式
if ($b === true){
//过滤评论ubb代码,反之过滤文章ubb代码
if ($c === true){
//关于下面如果要做多重判断,由于有点时候所截取的内容中短代码标签不完整,所以遇到短代码不完整的情况宁愿错误过滤,也不要放过。
if (strpos($abstract, '{secret') !== false) {
if (strpos($abstract, '{/secret') !== false) {
$abstract = preg_replace("/{secret}(.+?){\/secret}/sm",'嘿嘿,这是一条私密评论。',$abstract);
}else{
$abstract = preg_replace("/{secret}(.)/sm",'嘿嘿,这是一条私密评论。',$abstract);
}
}
}
}
return $abstract;
}
侧边栏评论使用方法
<?php \Widget\Comments\Recent::alloc()->to($comments); ?>
<?php while ($comments->next()): ?>
<?php echo getArticleSummary($comments,35,true,true); ?>
<?php endwhile; ?>
#免责声明#
本文为转载 或 原创内容,未经授权禁止转载、摘编、复制及镜像使用、转载请注明作者、出处及原文链接、违者将依法追究责任。

8个月前 > 以前没有用过rss这个功能,没有发现这个问题,既然发现了就要解决,以...
7个月前 第一步自行百度搜索fancybox进行下载 **搞忘提示了:要使用fancybox需要引入jQ...

4个月前 1、获取音乐在线播放接口(付费音乐也可以获取完整版) ``` 接口:http...
8个月前  **以下代码就是html和...

7个月前 ##### 一、卸载前:做好充分准备与依赖检查 **备份关键数据** 备份插件关...

7个月前 > 首先声明,下面的代码基本都是用AI写作,博主只是辅助提供意见修改。 ...